2007年3月26日 星期一

vi 無所不在

根據小道消息(有人告訴我)
bash 中也有 vi
就是使用 set -o vi
這時候就可以開始使用 vi 模式
一開始會是 Insert Mode
當按下 Esc 後會進入 Command Mode
hjkl 左下上右
hl 會在目前的指令前後移動
jk 會在 history 前後項移動
另外像是 /? 可以搜尋啟動 vi 模式後所打過的指令
還有 x,X 可以刪除字元
dd 可以整行刪除
0 可以移到指令"前頭"
^ 可以移到指令"開頭"
$ 可以移到指令結尾
W,w,B,b,E,e 可以在單字間移動
v 會進入真正的 vi 介面
A,I,a,i 進入 Insert Mode
... 繁多不即備載
有興趣的朋友可以自己研究研究... ^_^
最後...
set -o 或是 set +o 可以看到其它可以玩弄的選項
所以想要離開 vi 模式就可以執行 set +o vi
不過這時候會覺得使用上會有點奇怪
像是上下鍵的 history 不見了
原來 bash 的預設值是設定成 emacs 模式
所以只要再執行 set -o emacs 就回復到原本的 bash 了
以上的操作是在 Fedora Core 6 上所觀察到的
其它的系統可能功能上稍有出入

3 則留言:

archer 提到...

不只是 bash 喔

我用習慣 bash ,對我家 aix 的 ksh 完全不能適應 ..
後來在 ksh 啟動 set -o vi 後,總算有好一點了 ;)

匿名 提到...

補充:
若為 c shell
tcsh:
bindkey -v

另外, 分享從網路學來的
除了用 set -o vi 以外, 還有個滿厲害的方式
就是在 /etc/inputrc or ~/.inputrc 中設
set editing-mode vi
一樣可以達到 bash 能使用 vi 按鍵的模式
但是, 當然不只如此了, 厲害的地方在於, 用此方法設定後, 用 libreadline 的程式都可以用 vi 的操作方式, 譬如 lftp, mysql client, ncftp, smbclient, sdcv, parted, ftp, bc, 甚至 python.....等等

apt-cache rdepends libreadline5

ovwhpuv 提到...

對呀!在一些 network switch,如果它的 OS 是 linux based,在修改設定檔時,也會用到 vi

我的同事因此而重拾 vi 的說明看看…

有些同事乾脆下載修改,再上載回去