【実践技術書】「Vim テクニックバイブル」
私は文字を打つときにはVimを使ってます。 文字書くときだけでなく、プログラミングするときもVimを使います。
今時便利なIDEはいくつもありますが、テキストエディタであるVimが一番のお気に入りです。 なれるまではかなり不便ですが、なれるとやめられなくなります。拡張性も高くいろんな環境で使えるのでとても頼れるやつです。
久しぶりにVimのテクニック本を読みました。便利なプラグインの情報が山盛りです。 Uniteとかの使い方や概念が書かれているので、その辺のプラグインをガンガン使いたい人におすすめです。 ただし、結構前の本なので古い情報もあります。
サーバの管理をやるときにも設定ファイル触るのにテキストエディタとして Vim を使うことがあります。Dockerとかの環境構築も増えてくるのでぜひVim使ってほしいです。 別に他の方法もあるのですが、お客様管理のインフラだと勝手にソフトをインストールすると問題になるので気をつけたほうが良いです。 気づかれることのほうが少ないですが、何か合った時に不要に責任を取らないためにも重要です。 VimとかシェルとかCUIに慣れておくことは結構大切だと思っています。
今回は本の中でVimの基本的なコマンドで使えるかもと思ったものを紹介します。 プラグインに関しての内容のほうが充実しているので、Uniteを始めとする便利なプラグインについては機会があれば紹介します。
タイトル | Vimテクニックバイブル |
著者 | Vimサポーターズ |
出版 | 技術評論社 |
画像リンク |
なぜこの本を読んだのか
自宅にあったものを久しぶりに見つけて読みました。もう一冊、「実践Vim」という本もあるはずですが、引っ越しの片付け中なので見つかっていません。 見つけたらまた読みたいです。
この手のよく使うソフトのテクニック本は、なかなか読む機会が無いでしょうか。 しかし、定期的に読み返すと新しい発見があり、作業の効率化につながります。
すぐにでも使えそうなテクニックもあったので、また思い出せるように記事にしました。
本の概要
基本的にはVimをある程度使ったことのある人向けに、より便利になるプラグインやテクニックを150のTipsとして紹介しています。 Vimの基本的な入門書ではない印象です。チュートリアルくらいは終わらせてちょっと使い込んだくらいで読むことをおすすめします。
プラグインのインストール方法や使い方・おすすめの設定なども載っています。プラグインの作者による解説等も載っています。
本の特徴
ジャンルごとに分けて書いてあり、やりたいことや気になるところから読み始められます。 巻末には索引もあるので、気になるプラグインの情報などを調べることができます。
コマンドなどは詳細に書かれており、実際にやってみるのには苦労しないです。ただ画面のスクリーンショットなどは全く無いのでイメージはしにくいです。プラグインの見た目の情報とかは一切ないです、カラースキームも載ってないです。
おすすめのVimテクニック
ここではVimの基本機能でできるテクニックのみ記載してます。プラグイン使うやつは別の機会に紹介します。
autocmdによるテンプレートファイルの読み込み
以下のような記述をvimrcに書いておけば、vimで新しいファイルを作成した際に拡張子で判断され、テンプレートファイルが読み込まれます。私はマークダウンファイルのfrontmatter部分をテンプレートにしました。
テンプレートファイルは予め作って設置しておく必要があります。
augroup templateload
autocmd!
autocmd BufNewFile *.md 0r ~/.vim/template/template.md
autocmd BufNewFile *.html 0r ~/.vim/template/template.html
augroup END
最後に開いていたファイルを開く
Vimを起動したあと、CTRL-o
を実行することで最後に開いたファイルへジャンプできます。
もともとCTRL-o
は古いカーソル位置へ戻れるコマンドですが、それを使えば前回最後に開いたファイルへジャンプできます。
他の方法もありそうですが、とりあえずお手軽です。
複数のVimでヤンクやレジスタ・コマンド履歴を共有する
Vimを複数立ち上げているときに使えるテクニックです。私はtmuxを使っていくつもVimを立ち上げたりするのでちょっと便利そうと思いました。
Vimエディタ終了時、.viminfoファイルにコマンドや検索の履歴・レジスタなどの情報を格納するそうです。 これをコマンドで起動中に出力して、別のVimからコマンドを使って読み込むことで、これらの情報を共有できます。
.viminfoの書き出し。
:wv
.viminfoの読み込み。
:rv!
読み込んだ側のvimで、書き出しを行ったvimの履歴などが利用できます。
文字数を数える
Linuxのコマンドwc -m
を使ったほうがスッキリですが、Vimで編集しながらやる場合のテクニックです。
標準コマンドg Ctrl-g
で文字数や単語数を確認できます。
ただし、改行文字を含んだ文字数なので、ファイルを作成したOSをによって結果が異なるようです。
:%s/.//gn
とすると、純粋な文字数がカウントできます。覚えておくと良さそうです。
マクロを利用した編集処理
qa
で操作の記録を開始してレジスタaに記録、 q
で操作の記録を終了、@a
でレジスタaの中身を実行となります。
マクロの実行は5@a
の形式で回数を指定できるので、それも組み合わせると便利です。
実際に操作を行わなくても、コマンドの内容をテキストで入力してレジスタに保存することでも操作を登録できます。
^"byy"bp
この文字列をヤンクすればマクロとして実行できます。
(bレジスタにヤンクしてbレジスタの中身をペーストするコマンド)
マクロがうまく行かなかったときにコマンドを編集して再実行したり、よく使うものをメモしておいたりできそうです。 コマンドをテキスト化できると、複数人での指差し確認にも使えますね。
ちなみに、ヤンクの際に"Ayy
と大文字にすると、aレジスタの末尾へ追記の操作となります。上書きではなく追記なので、コマンドを継ぎ足していけます。
ユーザー定義コマンド
vimrcに以下のような形式でユーザー定義のコマンドを設定できます。 コマンド名はアルファベット大文字で始まる必要があります。
さっきの文字数カウントのコマンドを登録してみます。:CountChar
で文字数カウントが簡単にできるようになりました。
:command! [属性] {コマンド名} {実行したい処理}
:command! CountChar :%s/.//gn
他にもファンクションを定義してそれを実行させたり、範囲指定を可能にしたり、引数を取ったりもできます。
まとめ
Vimは奥が深いです。 この本にもまだまだいろんなことが書かれています。気になる人は一度手にとって見てほしいです。
初めてVimを使ったときは、サーバにリモートアクセスして設定変更したときだった記憶がありますが、かなり混乱した気がします。 今となってはいろいろ自由に触れるので重宝しています。何よりもノーマルモードとインサートモードという状態を使い分けるという発想が好きです。ホームポジションを意識することでキーボードのみで不自由なく様々なことができ快適です。
個人的には、キー数が少なくてコンパクトなキーボードと組み合わせて使うのがおすすめです。
他にもプラグインを開発したりとか結構プログラム要素もあるのでとても拡張性もあります。カンファレンスが開かれるくらいコミュニティも存在していますので、興味があればぜひ使ってみてほしいです。