Honmushi blog
2018/12/18

【実践技術書】「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を使ったときはサーバにリモートアクセスして設定変更したときだったと思いますが、かなり混乱した気がします。 今となってはいろいろ自由に触れるので重宝しています。何よりもノーマルモードとインサートモードという状態を使い分けるという発想が好きです。ホームポジションを意識することでキーボードのみで不自由なく様々なことができ快適です。

個人的には、キー数が少なくてコンパクトなキーボードと組み合わせて使うのがおすすめです。

他にもプラグインを開発したりとか結構プログラム要素もあるのでとても拡張性もあります。カンファレンスが開かれるくらいコミュニティも存在していますので、興味があればぜひ使ってみてほしいです。

Vimテクニックバイブル ~作業効率をカイゼンする150の技

  • このエントリーをはてなブックマークに追加
HOMEPROFILEPRIVACY POLICY