[原创]自己使用csh/tcsh的经验

2011-09-16 07:51

[原创]自己使用csh/tcsh的经验

by luckiestdreamer

at 2011-09-15 23:51:32

original http://item.feedsky.com/~feedsky/heikezhi/~8608072/569336373/6713895/1/item.html

看了YUANYI刚刚翻译的《几个简单选项让你的Readline(Bash)更好用》,我也有冲动分享一下我使用csh/tcsh的经验。没办法,公司上下基本都是清一色的csh,尽管看过N遍《csh编程太坑爹了》,几次跃跃欲试尝试转换到bash/zsh,但最终都以失败告终,所以哥还是认命了。。。废话不多说,开始正题。以下是几个我放入~/.cshrc中的配置命令:

set histdup='all'

意思就是:当你用history命令看执行过的命令时,你会发现没有重复的命令行。

  • 优点:查看以前执行的命令非常容易,因为很多重复命令记录都被删掉,历史记录很短
  • 缺点:当你想重复一系列操作却忘了顺序时你就傻了,因为重复命令记录被删掉,所以顺序是乱的

它还有其它的选项,例如折中一点的:

set histdup='prev'

跟'all'相比,它只会丢弃掉与前一个命令相同的记录。例如某些童鞋可能会疯狂的一遍遍的build,

g++ main.cxx -o test.exe

那么,只要这中间没执行过其他命令,你会发现这N次build在history中只记录了一次。

set complete='enhance'

这个一猜就知道,是增强补全功能的。设定之后,会

  1. 无视大小写。没错,你再也不用折磨你的小手指去敲大写字母了
  2. 无视逗号、破折号、下划线

set fignore=(.o .out \~)

这个也是关于补全的,意思是当按TAB补全时,csh会忽略以括号中字符为结尾的文件(\~中的'\'是为了防止'~'被替换为$HOME)。例如

> ls

main.c main.o main.c~

> ls m[TAB]

> ls main.c

注意:按CTRL-D还是会显现全部的补全项。另外,它仅作用于当补全项除了要被排除的那些只剩下一个选择的时候。还有就是,当只有一个补全项时,那么不管是否应被排除都会用它补全。

set autolist

设置了这个,按TAB才会有被选项显示出来。否则,即便你按爆了TAB,也不会显示备选(但是仍然会补全)

  • 优点就是能看到备选,引导你输入下一个字符。当然CTRL-D还是可以的
  • 缺点就是如果备选很多,屏幕会被刷的很厉害,不像没设置那么整洁

bindkey "^M" complete-word-fwd

bindkey "^K" complete-word-back

看到《几个简单选项让你的Readline(Bash)更好用》中提到了类似的功能,所以就补上了,实际中我用的不多。同样CTRL-j/CTRL-k就是前后选择备选的。

差不多就这些,如果你还没有用到这些feature,那么当你用了之后,你会瞬间觉得幸福感暴增的。大家有好的tips也多拿出来分享。。。

想和我们一道传播黑客精神?快来加入吧!

无觅猜您也喜欢:

如果不小心删除了产品数据库,你该怎么办?

轻松为任意程序代码添加语法高亮

蛋疼之字母人像

CSS Reset的历史(一)
无觅