(PHP)プログラマのためのVIM (7) - 補完・マップ・オプション
Yahoo!のAndreiさんのプレゼンのPDFを勉強がてら訳していきます。
- 元記事: Andrei Zmievski: "VIM for (PHP) Programmers" slides and resources
- この記事シリーズまとめはこちら: (PHP)プログラマのためのVIM (まとめ) - おぎろぐはてな
補完
- vimはとても補完が扱いやすい
- コマンドラインで<Tab>たたくだけ!
- ファイル名の補完には、
wildmenu
とwildmode
(オレは "list:longest,full
"が好きだ)を設定する - :new ~/dev/fo<Tab>(新しいウィンドウで開くファイル名入力の途中でタブ) - ファイル名を補完
- :help 'comp<Tab>(ヘルプの表示先指定の途中でタブ) - オプションの名前を補完
- :re<Tab>(コマンド入力の途中でタブ) - コマンドを補完
- CTRL-Nで次の候補、CTRL-Pで前の候補
- ファイル名の補完には、
- 挿入モード中にCTRL-Xで補完モードに入る
- CTRL-コマンドとの組み合わせで利用 (詳しくは:help ins-completionを参照)
- 自分がよく使うのは、ファイル名、identifier (なんて訳したらいいのかな?)、と、omni completion
- 複数マッチしたときは、ウィンドウをポップアップして補完候補を表示してくれる
- CTRL-X CTRL-Fで、ファイル名を補完
- CTRL-X CTRL-Nで、後方検索してマッチする単語を補完候補として表示
- すごく有用だから<Tab>にリマップしてるよ
" Insert <Tab> or complete identifier " if the cursor is after a keyword character function MyTabOrComplete() let col = col('.')-1 if !col || getline('.')[col-1] !~ '\k' return "\<tab>" else return "\<C-N>" endif endfunction inoremap <Tab> <C-R>=MyTabOrComplete()<CR>
- omni complectionはheuristics-based (経験則をベース)
- 何を補完したいかを推測してくれる
- 編集中のファイルタイプに特化した補完
- あとで詳しく説明するよ
キーマッピング (maps)
- 信じられないくらい強力 ...時々危険
- :help key-mapping
- 全てのモードに加えてさらに他にもマップできる
- クォートの中のテキストを変更するのに疲れちゃった?
- :nmap X ci"
"
で囲まれた文字列をカットして挿入モードに入る、を、Xに割り当て
- もっとブラウザみたいにしたい?
- :nmap <Space> <PageDown>
- スペースキーにページ送りを割り当て
- e-mailアドレスを簡単に挿入したい?
- :imap ;EM me@mydomain.com
- 挿入モード中に;EMとタイプするとメアドが挿入
- ビジュアルモードでバックスペースキーを
<Delete>
と同じ動きにしたい- :vmap <BS> x
オプション
- vimは数百ものオプションを持っている
- あなたが必要なものを制御できるように勉強してください
:options
で、オプションを対話形式で変更できます:options | resize
がもっとべんり (項目大杉なので)- [補足] 画面分割時に:resizeすると、カレントの画面が広くなります