vimをカスタマイズして、使い慣れたキーバインドを設定する
vimでもっともいらいらすることを1つ挙げるとすれば、それはデフォルトのカーソル移動キーだ。私はコマンドモードと挿入モードが別れていることは評価するが、長い間joeを使っていたため、私の指はjoeのコマンドを覚え込んでしまっている。長年の間、vimを使ってきた現在でさえだ。行末での入力を始めるのに、[ESC]、[$]、[i]とキーを押さなくてはならないというのは、まったくの時間の無駄に思える。行ごと、ワード数による移動(4wで4ワード先に移動する)は便利であり、必要に応じてこれらの機能を使うことは問題はない(そしてそれはよくあることだ)。
vimでキーバインドの変更や追加を行うのは簡単であり、いくつかのコマンドを、ユーザーの指が覚えているものに変更するのは理に適っている。例えば、joeでは古いWordStarのキーバインドを使っており、行末への移動にはCTRL-E、行頭への移動にはCTRLーAを使う。以下の行を~/.vimrcに追加すれば、これらのコマンドをvimの中でも使えるようになる。
" map CTRL-E to end-of-line (insert mode) imap$i " map CTRL-A to beginning-of-line (insert mode) imap 0i
これらの2つのコマンドは、特定のキーバインド(CTRL-EとCTRL-A)に対し、imapというキーワードを使って挿入モードを割り当てている。最後のパラメタは、そのキーバインドで実行される実際のキーコマンドとなっている。CTRL-Eを入力すると、[ESC]、[$]、[i]と順番に実行され、カーソルはその行の本当の行末に移動する。それぞれのキー入力は独立した別のものだ。同様に、CTRL-Aに割り当てられたキーコマンドは、[ESC]、[0]、[i]を順番に実行するというものであり、これはコマンドモードに入り([ESC])、行頭に移動し([0])、再び挿入モードに入る([i])というものだ。これらのコマンドは、挿入モードから離脱して、最後にまた挿入モードに入るということを前提にしているため、これらのキーバインドが挿入モードでだけ動作するよう、imapというキーワードを使用している。
割り当てのタイプには、他に、すべてのモードで使えるmap、コマンドラインモードで使えるcmap、ノーマルモードで使えるnmap、ビジュアルモードで使えるvmapがある。これらのモードのタイプを使い分けることで、アクティブなモードに応じて異なる動作をするようにキーバインドを定義することができる。
他の便利なキーバインドには、次のようなものがある。
" CTRL-C to copy (visual mode) vmapy " CTRL-X to cut (visual mode) vmap x " CTRL-V to paste (insert mode) imap P
vimで、:help keymapping コマンドを実行することで、より多くのヘルプ情報を見ることができる。[CTRL]キーはC、[ALT]キーはMで表され(従って、ALT-Mは
使い慣れた一連のキーバインドを作成することは、新しいエディタの学習曲線を楽なものにしてくれる。vimの柔軟性は、vimのパワーを活用しやすくしてくれると同時に、vimを古くからの友人のように感じさせてくれるだろう。
この記事は海外CBS Interactive発の記事をシーネットネットワークスジャパン編集部が日本向けに編集したものです。 原文へ
- コメント(2件)
全部非表示になってますね。 <c-a> 他すべて。 (実際半角)
- 新着記事
- 特集
- ブログ
- 企画特集
-
SoRとSoEをつなぐDX推進の要
-
クラウド時代に理想のセキュリティ
-
いまあるデータで身近な業務をDX
-
特集:IT最適化への道
-
未来のセキュリティイノベーターへ
-
次の一手はこれだ!
-
明日からではもう遅い?!
-
セキュリティの今を知る
-
ゼロトラストに向けた道のりを支援
-
第4回CNBFミートアップレポート
-
エンジニアのためのREHL8まとめ
-
漫画で解説:IoTはじめの一歩
-
性能の大幅向上を実現!
-
クラウド活用 虎の巻
-
部分最適だけではダメ
-
リモート、オフィス、オンサイト
-
連載!プロが語るストレージ戦略
-
ネットワークもサービスとして使う
-
コスト・運用の壁を崩す!
-
企業のリスクマネージメント対策に
-
次期自治体ネットワーク強靭化へ
-
デジタルを当たり前と言えるか?
-
データの散在と非常率運用がネック
-
IDaaSって何?
-
連載!プロが語るストレージ戦略
-
SECCON2020レポート第二弾!
-
連載!プロが語るストレージ戦略
-
ハイブリッドクラウドとAI
-
M365 活用のセキュリティ対策
-
その先へ
-
厳しい目が向けられる内部不正
-
ビッグデータ最前線!
-
DX時代のアプリケーションセキュリティ
-
いまさら聞けない「PPAP」
[ESC], [A] でいけますよ。
それと行末で入力を始めるには [i] ではなく [a] でないと、行末の一文字手前で入力を始めることになります。そもそもそういうことがしたいのであれば、[ESC], [$], [i] じゃないとだめですね。
同様に、
>[ESC]、[0]、[i]を順番に実行するというものであり、これはコマンドモードに入り([ESC])、行頭に移動し([0])、再び挿入モードに入る([i])
これも [ESC], [I] でいけます。