さて、前回記事の続きです。予告通り、bashのviモードについて。
bashは標準だと、emacs互換の操作モードとなっていますが、これをvi互換に変更できます。
viモードへの変更
以下のコマンドでviモードに移行します。
set -o vi
viモードを常用したい場合は、.bashrcや .bash_profileに上記コマンドを一行突っ込んでおくと良いです。
なお、emacsモードに戻すときは、以下。そのまま。
set -o emacs
viモードでの操作
シェルを立ち上げると、挿入モードになっているので、特に普段と変わりなく利用できます。
vi風の操作で編集したくなったら、vi同様に ESC または Ctrl-[ でノーマルモードに変更してカーソル移動や削除操作を行います。
また、挿入モードに戻すには、「i」や「a」を用います。
(vi互換ですので、もちろん「I」、「A」、「s」、「S」も利用できます。)
ノーマルモードで使用できるコマンド
ノーマルモードでは以下のコマンドが利用できます。
h | 後方(左方)に1文字移動 |
l | 前方(右方)に1文字移動 |
k | 前の履歴を表示する |
j | 次の履歴を表示する |
b | 後方(左方)に1ワード移動 |
w | 前方(右方)に1ワード移動 |
f文字 | 指定した文字までジャンプ |
t文字 | t文字 指定した文字の一つ前にジャンプ |
0 | 行頭に移動 |
$ | 行末に移動 |
u | アンドゥ |
x | 後方(左方)に1文字削除 |
X | 前方(右方)に1文字削除 |
dd | 1行削除。削除した文字列はコピーされ、「p」でペーストできる。 |
yy | 1行コピー |
p | 最後にコピーした文字列をペーストする |
他にもありますが、代表的なのはこんなところでしょうか。
そういえば、オペレータとモーションの組み合わせも可能です。
dw | 1ワード削除 |
dt | 文字 カーソル位置から、指定した文字の前まで削除 |
cw | カーソル位置から1ワード分を変更(挿入モードとなる) |
yw | カーソル位置から1ワード分をコピー |
※オペレータとは、d(削除)やy(コピー)といった、範囲に対して作用するコマンド、モーションはカーソル移動を行うコマンドです。これらを組み合わせて使えるのがVimの便利なところです。
詳しく知りたい方は以下のサイトなど参照ください。