Man On a Mission

システム運用屋が、日々のあれこれや情報処理技術者試験の攻略を記録していくITブログ…というのも昔の話。今や歴史メインでたまに軍事。別に詳しくないので過大な期待は禁物。

【Linux】bashの操作をvi風にする

さて、前回記事の続きです。予告通り、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の便利なところです。
詳しく知りたい方は以下のサイトなど参照ください。

promamo.com

motion - Vim日本語ドキュメント