耳目一新|林林总总 涂鸦·电影·分享·碎碎念

set -o vi设置环境(转)

2011-05-06

set-ovi
再用esc+K键就可以使用上一条指令了
esc+k
esc+j
上下翻
ksh默认是emacs风格的。set-oemacs

原文地址:http://blog.sina.com.cn/s/blog_5623cddb0100cyl8.html 

在AIX下使用自己已经使用过的命令

在AIX下使用,默认的shell是KSH,和linux下的bash不一样的是,他不能采用我们大家已经熟悉的DOS下的键或者其他我们已经熟悉的快捷键来使用我们上次已经使用过的命令,比如在DOS命令状态下(我把我自己经常用的快捷键列出来,可能还其他的,慢慢补充),大家可以通过F7来取得你已经在当前DOS窗口中输入过的不重复的命令(Windows对你自己在当前窗口顺序输入的非重复命令进行排序,以0,1,2…来编号),F1重复上次同一个位置上的字符,F3重复上次所有的命令,F5和F8向上翻我已经输入过的命令,F9是可以输入你要显示的上次输入的非重复的命令ID(比如,进入某DOS窗口之后,我依次输入了两条命令:dir和cdtest,那么本窗口的第0条命令就是dir,类推,当我按下F9的时候,系统提示我“输入命令号码”,这个时候我按照上次输入的顺序号进行输入即可,比如选择0那么这个时候就是dir命令,这个功能和F7的功能是一致的,只是F7可以选择,F9可以直接输入,这两个功能当你输入的命令比较长的时候是比较有用的)。
要想在AIX下使用上次你已经使用过的命令,可以使用以下的方法:
1、在ksh下,运行set-ovi,这个时候整个命令状态就是是VI编辑器了,操作的方法和VI编辑器一摸一样,要重复上次的命令,就在当前状态栏下按ESC,然后输入k,就可以看到下一条命令,按下k就可以查询上一条命令,h可以在当前行向前移动一个字符的位置,l可以在当前行向后移动一个字符的为止,当然这个时候相当于处于vi的状态,所有在vi状态下的对单行操作的命令都可以使用。编辑好之后直接按回车即可。
2、如果不不是在ksh下,那么你可以在命令窗口下运行ksh-ovi,其他的命令和第一种方法一样
3、在ksh的环境变量中设置EDITOR=vi即可,修改的方法即在.profile中直接加入EDITOR=vi;exportEDITOR即可。
4、删除历史命令,可以在当前用户的主目录下,查询到一个.sh_history的文件,里面记载了你所有在当前用户输入过的命令。可以将这个文件编辑一下,然后将其中的命令删除掉就可以了。当然你可以将自己喜欢的命令或者比较长的命令放在里面,以后你就直接调用就可以了。当然从这个文件可以看出上面几点讲的采用vi的命令来取得上次的命令,其实ksh是取得这个文件中的信息。
5、以下小技巧:
a、重复上一条命令可以直接在ksh状态下输入r
b、你可以在ksh状态下执行ra=b,意思是先将上一条命令中的a字符用b字符替换,然后运行。

////////////////////

原因后来上网查了一下,暂且引用一下《FreeBSD使用大全》中的一段内容:

———————————————————————————————–
配置用戶shell
事實上sh與csh,并不是普通用戶的最佳選擇,因為這兩個shell在易用性方面做的不夠好,例如命令行編輯功能不強、不能利用熱鍵重復執行命令等。較新的shell,如bash和tcsh都具有這些方便用戶使用的功能,但必須安裝了這些shell程序之后,才能更改普通用戶的shell設置以使用這些shell程序。更改用戶的shell可以使用pw、vipw或chsh。

這兩個shell分別遵照sh和csh的風格,因此喜好csh風格的可以選擇tcsh,而喜歡sh風格的選擇bash。除了這兩種shell之外,還有ksh、zsh等shell可供選擇。如果對兩種shell沒有偏好,可以選擇bash,它是一個GNU軟件,比標准sh功能強大的多。

使用了這兩些增強型shell之后,用戶就可以使用shell提供的命令行編輯功能。按照習慣的不同,可以選擇vi風格的編輯方式或emacs風格的方式,缺省為emacs方式,這種方式使用方向鍵來回溯執行過的命令,并進行修改,而vi風格使用字母命令作編輯鍵,例如使用h、j、k、l四個鍵來移動光標,vi風格的好處是不使用基本鍵盤之外的控制鍵,因而可以適用于任何終端設備,并且進行編輯時手不需離開基本鍵盤,熟練操作之后最為快捷。emacs風格比起vi風格更適合從個人計算機轉向Unix的使用者的習慣。bash,ksh,zsh下使用下面的命令在emacs風格和vi風格切換:

bash$set-oemacs

bash$set-ovi

tcsh中使用不同的命令:

%bindemacs

%bindvi

還可以為常用的命令設置別名,簡化用戶輸入,例如:

bash$aliasec=”echoThisisaalias”

bash$ec

Thisisaalias

shell用于方便用戶操作的另一項能力是自動補全命令或文件名的功能,因為FreeBSD下的文件名可能很長,將它們全部輸入比較麻煩。事實上可以輸入部分名字,然后按Tab鍵(在vi風格下是連續兩次按Esc鍵),shell將自動補全文件名的剩余部分。如果已經輸入的這部分名字不能確定具體的命令或文件,那么shell只將能確定的部分補上,然后響鈴通知使用者繼續輸入以明確具體的文件。

事實上即使在基本的sh或csh下,也可以使用“*”等特殊字符,用模式匹配的方式來簡化輸入。

bash$cd/usr/loca*

bash$pwd

/usr/local

Unix中的多數程序都具備模式匹配的處理能力,而shell的模式匹配功能最為常用。shell可以使用這些特殊模式來配置多個文件,達到簡化操作的目的。如果要熟練掌握Unix,必須掌握模式匹配。

當試圖在bash下輸入漢字的時候,除了必須設置終端屬性能接受8位字符之外(執行sttypass8命令),還需要設置bash的輸入輸出轉換,可以在登錄腳本.profile文件中包括以下設置:

bind’setconvert-metaoff’

bind’setmeta-flagon’

bind’setoutput-metaon’

如非特殊标明都是原创文章,版权所有congwong
转载请注明: 转载自播种幸福吧
本文链接地址: set -o vi设置环境(转)

上一篇:
下一篇:
作者:congwong | Categories:linux技术 | Tags: