Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimのヘルプ機能を活用して快適Vim生活を送ろう

$
0
0

はじめに

時々QiitaでもVimのチートシートを見かけることがある。
それを見るたびに、Vimのヘルプ機能さえ押えておけばいいんじゃないかと思っていたのだが、よくよく考えてみればそもそもヘルプ機能の存在を知らない方もいるのでは、と思いヘルプ機能の紹介を書くことにした。

この記事はVimのヘルプを見ながら読んでいただくことを想定しているため、説明の多くを該当ヘルプの引き方を添えて「ヘルプを読んで欲しい」で終わらせている。
手抜きのように思われるかもしれないが、ヘルプを引く練習の一環だと思ってお付き合いいただきたい。

0: 日本語ヘルプをインストールする

Vimのヘルプは有志によって日本語に翻訳されている(vimdoc-ja)。
vim-jpからダウンロードできる香り屋版を利用されている方は最初から日本語版のヘルプがインストールされているが、そうでなければ基本的には自前でインストールする必要がある。
vimdoc-jaのwikiにも説明があるが、こちらでも改めて説明したい。

インストール方法は下記3方法がある。

  • zipをダウンロードして展開
  • GitHubからclone
  • プラグイン管理用のプラグインでインストール

zipをダウンロードしたりGitHubからcloneする場合、$HOME/.vim等のruntimepathに適時配置するだけでよい。

zipをダウンロードする場合
$ wget https://github.com/vim-jp/vimdoc-ja/archive/master.zip -O vimdoc-ja-master.zip$ unzip vimdoc-ja-master.zip$ mkdir ~/.vim/doc # すでにあるなら不要$ mkdir ~/.vim/syntax # すでにあるなら不要$ cp vimdoc-ja-master/doc/* ~/.vim/doc$ cp vimdoc-ja-master/syntax/help_ja.vim ~/.vim/syntax/help_ja.vim

この状態ではヘルプタグ情報が作られていないため、Vim起動後に:helptags ~/.vim/docを実行してヘルプタグファイルの更新を行ったほうがよいだろう。

NeoBundleやdein.vim、vim-plug等を利用されている方は他のプラグイン同様にインストールが可能だ。

call dein#add('vim-jp/vimdoc-ja')" dein.vimの場合
NeoBundle 'vim-jp/vimdoc-ja'" NeoBundleの場合
Plug 'vim-jp/vimdoc-ja'" vim-plugの場合

上記のように利用しているプラグインに合わせて.vimrc等に記述し、インストール用のコマンドを実行すればよい。

ヘルプのデフォルト言語設定

インストールしただけでは英語版等他言語のヘルプが参照される場合がある。

  • helplangに日本語が含まれていない場合
  • ロケール環境変数(恐らくLC_MESSAGES)が日本語以外になっている場合

このような場合は.vimrc等にset helplang=ja,enと書くと日本語版のヘルプが優先されるようになる。

1: メインヘルプファイルを参照する

:hとだけ入力するとメインヘルプファイルが表示される。
:h:helpコマンドの短縮形だが、よく使うコマンドなので短い:hを覚えておくとよいだろう。
メインヘルプファイルを読むだけでも最低限のVimの使い方(カーソル移動と終了コマンド)と、ヘルプの読み方(項目移動や項目指定)が分かる。

メインヘルプファイルの下部には各ヘルプへの目次が並んでいる。
ヘルプは大きく分けて2種類ある。

  • ユーザーマニュアル: Vimの操作方法の説明を行う項
  • リファレンスマニュアル: Vimの各機能詳細の説明を行う項

ユーザーマニュアルは本のように読み進めるものなので、暇があれば読み進めてほしい。

2: 項目を指定してヘルプを参照する

メインヘルプファイルの目次から目的の項目を探すのも良いが、探したい項目がすでに分かっているのであれば項目指定でヘルプを参照する方が早い。
例えばヘルプを開く:helpコマンドについて知りたければ:h :hと入力する。
(ここで:h hとしてしまうとカーソル移動のhについてのページが表示されるので注意すること)

この操作についてのヘルプを表示するには:h {subject}と入力する。
私が説明するよりも的確にこの機能について説明されているので、その項を読んで欲しい。

タグのルール

項目を指定してヘルプを引く方法のコツとして、ヘルプに記載されるタグの命名規則を押さえておくと良い。
メインヘルプファイルに書いてある内容を引用する。

種類修飾子
ノーマルモードコマンド(無し):help x
ビジュアルモードコマンドv_:help v_u
挿入モードコマンドi_:help i_<Esc>
コマンドラインコマンド::help :quit
コマンドライン編集c_:help c_<Del>
Vim の起動引数-:help -r
オプション':help 'textwidth'
正規表現/:help /[

またShiftCtrlキーのような修飾キーについては下記のようなルールとなっている。

キー種別ルール
Shiftキー大文字を使用する:help G
Ctrlキー頭にCTRL-を付与:help CTRL-]
その他特殊キー<キー名>:help <Leader>

これらの項目さえ覚えておけば、書籍やWeb上のエントリ、他人の.vimrcで知らないオプション等が出てきたときにすぐにヘルプを参照することが出来る。

ヘルプの言語を指定する

ヘルプのデフォルト言語を日本語にしているがあえて英語版を参照したい場合や、他言語のヘルプを参照したい場合は末尾に@言語コードを入力する。

  • 例: :h :help@en

言語コードについては:h help-translatedの項にて説明されているので、そちらを参照してほしい。

3: ヘルプを検索する

ヘルプファイルを検索する場合には:helpgrepコマンドを利用する。
このコマンドについてもヘルプに詳しく書かれているため、:h helpgrepと入力して:helpgrepのヘルプを参照していただきたい。

この:helpgrepだが、日本語を検索語句としても指定できるため、日本語版ヘルプをインストールしている方はぜひ利用してみてほしい。
ただし、7.3.397よりも前のバージョンを利用している場合は日本語では検索できない場合もあるため注意(参考: windowsでhelpgrepが日本語マッチしない #95 )。

注意事項として、:helpgrepは行単位で検索をかけるため、複数行に跨る単語にはマッチしない。
恐らく端末の横幅80カラム(set columns=80)に最適化させるためなのか、日本語版では翻訳ルールとして「1行78カラム以内」としているため、時々単語の途中で改行されているものが存在する。
英語版は軽く眺めた限りでは単語の途中で改行されているものは見つからなかったが、ないとは言い切れない。

おわりに

普段はヘルプを使わずにサーチエンジン等で検索してWeb上のリソースを参考にする方も多くいらっしゃると思う。
しかし、Vimには良質なヘルプ資源があるため、ぜひ活用してほしい。
Vimのヘルプ機能は日々の操作の手助けになるだけではなく、優れたVimの教科書でもある。
ヘルプを未読の方はGW期間中に読んでみてはいかがだろうか。

なお、Vimのヘルプは有志の方の尽力により更新されているが、古い記述のままだったり、説明が誤っているものがあるかもしれない。
そのような場合は翻訳作業用リポジトリにIssueを立てたり、原本から誤っている場合はvim-jpのIssuesで相談してみるとよいだろう。

追記: コマンド一覧が掲載されているヘルプページ

Twitterにて「:help indexについて触れられているともっと良かった」というコメントがあったので追記する。

VimのヘルプにはVimの各機能を列挙した項目が存在する。

ヘルプページ説明
:help indexVimのコマンド、ヘルプ内のタグ、短い説明を列挙した項目
:help option-listVimのオプションと短い説明を列挙した項目
:help functionsVimの関数名、引数、返り値、短い説明をアルファベット順に列挙した項目
:help function-listVimの関数名と短い説明を機能別に列挙した項目
:help vim-variableVimの定義済み変数の名称と説明を列挙した項目
:help help-tagsVimの全ヘルプ項目

それぞれ書籍で言えば巻末にある索引のように利用することが出来る。
例えば:help option-listを表示し、/で求めるオプションがないかを探し、CTRL-]で該当のヘルプページを開いて詳細を確認するという使い方が考えられる。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>