之前写过一篇在emacs中使用TRAMP进行文件管理的文章,这里继续说几个后续问题。

Shell

之前提到,shell的提示符很恶心,当然,这个问题是可以解决的。shell里头有个叫PS1的环境变量,主要负责提示符的显示格式。在目标服务器上的~/.bashrc里头加入PS1的定义就好了,比如我的PS1是这样的

1
PS1="[\u@\h \W]\$ "

至于\u\h\W这些东西是怎么定义的,请自行谷歌,说这个的文章一大片。

TRAMP的相关设置

使用tramp中会有一些不方便的时候,比如你每次都要输入协议“ssh”,每次都有用户名和ip,当然,还要输入密码。这样的过程其实很烦,tramp中可以进行一些默认的设置来帮我们完成这些工作。比如:

1
2
3
(setq tramp-default-method "ssh")
(setq tramp-default-host "0.0.0.0")
(setq tramp-default-user "xiafei")

你甚至可以设定在哪台服务器上使用哪个id和哪种协议,这些都在TRAMP USER Manual里头,我就不多说了。

还有一个问题一直困扰着我,也是非emacser bs我的重要一点,每次我在emacs里头make一坨代码的时候都要输入一次密码。比如,M-x shell-command,输入make后,需要输入密码。每次make都这样,除非两次make时间间隔很短。这说明tramp还是有密码的缓存机制的,Manul里头也给出了答案——只需要设置变量password-cache-expiry即可,单位是秒,设置为nil表示不缓存。比如我的:

1
(setq password-cache-expiry 36000)

你懂的….哈哈…

p.s. 原文地址,http://chunyemen.org/archives/487,欢迎访问纯爷们的小生活

p.s.s 这个连姓氏都可以成为敏感瓷的时代真是别有乐趣

Tagged with:
 

上一篇文章提到使用TRAMP进行远程的文件管理以及coding,现在我基本上能够使用本地emacs进行远程工作了。这样做的好处是,如果你有多台服务器,你不必为每台服务器配置一遍emacs,不必考虑不同服务器上emacs的版本问题。

但是,我发现cscope在远程条件下不能建立索引,更不能查找变量、函数什么的了。google了好久,在这里看到了答案。大概解释一下。

先说做法,编辑你load-path下的xcscope.el,修改以下三个地方:
1991行

1
(apply 'start-process "cscope" outbuf

改为

1
(apply 'start-file-process "cscope" outbuf

2001行

1
(apply 'call-process cscope-program nil outbuf t options)

改为

1
(apply 'process-file cscope-program nil outbuf t  options)

2124行

1
(apply 'start-process "cscope-indexer"

改为

1
(apply 'start-file-sprocess "cscope-indexer"

完成修改之后,就能够在远端建立索引,查找变量什么的了。不过这样做有个毛病,每次进行cscope操作的时候都要输入密码。额,很无奈的一件事情,cscope每次都会新开一个shell,然后输入密码,唉,为什么不缓存一下密码呢….

p.s原文地址:http://chunyemen.org/archives/448, 欢迎访问纯爷们的小生活

Tagged with:
 

Emacs是Linux下常用的文本编辑器之一,但是远程文件管理往往是emacser比较头疼的问题。离开了自己的.emacs的程序员就仿佛看到了另外一个编辑器,更重要的是,你的终端——putty、secureCTR甚至gnome-terminal会吃掉大量的快捷键,这些也就让远程文件管理成为很多emacser的噩梦。另一方面,vim身材娇小,与系统紧密结合,少有特殊的键盘绑定,这让无数emacser未知愤恨和无奈。

不过,emacs毕竟是一个牛叉的“操作系统”,我理解为emacs=shell+vim(vimer请淡定,just a joke…)。所以,凡是shell里头能搞定的,emacs就能搞定。好了,祭出今天的主角——TRAMP。

文件管理

其实TRAMP已经在你的emacs里头潜伏很久了,从22开始,它就集成在emacs中了。方法很简单,C-c C-F, 然后按照下面的图输入:

格式是:/protocol:user@host:path。protocol可以是ssh和ftp。过程中需要输入密码~

然后你会看到这个:

这个时候,基本的文件管理是没有问题了,添加删除改名移动都没问题,emacser,你懂的!如果不懂,press h for help.

Shell

如果你非要一个shell,那就M-x shell吧。额,功能没有问题,不过提示符是丑陋了点….不过multi-term不好使,eshell我没试过…当打开远程目录的时候,emacs的环境已经是远程的主机了,所以shell也是在那里的。

Coding

本地的emacs,远程的文件,所以yasnippet能用,cedet也好使。靠,还有什么能比这两个家伙正常工作更爽的了?感觉很顺畅,至少不用把自己的一大堆.emacs和.emcs.d/往服务器上捣了,至少不用找人少的时候在服务器上偷偷编译新版本的emacs了。上图:

本地sudo

这也是一直纠结我的问题,相信不少emacser也纠结过。如果你需要root权限来修改一个文件,你可以sudo vim fileName. 不过,把这种方式套用到emacs上来就有点令人恶心了,emacs启动速度确实不能跟vim比。那怎么办呢?请参看文章最开始,user是root,host是localhost。还有什么好说的?emacser,你懂的!

最近一直和emacs做伴,直接导致培训后的考试里头关于vim的题基本不会….悲剧啊…

p.s. 原文地址:http://chunyemen.org/archives/439,欢迎访问纯爷们的小生活

Tagged with:
 

终于搞完了。。

On 2009/04/01, in 我和小老婆之间的事, by qiuxiafei
4

花了两天把变身实习站务的最后几个题弄完了…今天算是宅了整整一天啊…

其实想来出了那个shell编程的都是很简单的题,不外乎就是增加,替代一些字符串啊,语句阿。主要的困难在于在一堆没有文档,而且跟你的终端编码不兼容的代码中找到你想要的东西。还好我有emacs,还好我用了穆穆推荐的cscope。

sscope是个好东西啊..能够方便的查找变量的定义和函数的调用,再配合grep,哈哈,无敌了。

Tagged with:
 

突然想用下netbeans。貌似很多人用的说,老大用,ych用,刀郎用,等等用。不过在emacs里头习惯了,手指都有惯性了,相当不习惯。难道要一个一个设置快捷键?no,方法很简单,tools–option–keymap,profile选emacs就可以了。

ctrl-a行首,ctrl-e行尾,ctrl-s向后查找….不过还是有些地方不对,比如ctrl+@原来是设定标记,现在却把files侧边栏弄出来了。虽然这仅仅是emacs文字编辑的部分快捷键,不过对于用惯了emacs的程序员来说,需要临时改变到netbeans工作,这不失为一个平滑的过渡。 netbeans很强大,尤其是强大的代码补全功能,很赞的说。当然,emacs的强大是无所比拟的。之所以现在不想花太多的时间配置emacs,是因为不想把自己弄得太依赖emacs,因为你永远不知道下一场比赛的编辑环境是什么。

Tagged with: