shimgo
10/10/2016 - 5:32 AM

キーマッピングまとめ

キーマッピングの一覧表示

プラグインのキーマッピングを解除したい場合

下記のようにマッピングするかを設定できるようにしてくれている場合がある。

let g:gitgutter_map_keys = 0

autocmdでunmapする方法もある

autocmd VimEnter * nunmap <leader>hs

mapとnoremapの違い

mapはユーザ定義のマッピングに割り当てる。
remapはVimのデフォルトマッピングに割り当てる。
下記の例だとtはデフォルトの挙動の通り数字をインクリメントするが、gはユーザが定義した<C-a>の動きにマッピングされているのでデクリメントされる。

map <C-a> <C-x>
noremap t <C-a> " =>デフォルト通りインクリメント
map g <C-a> " =>ユーザ定義で変えられた通りデクリメント

基本的にはnoremapを使っておけば意図しない挙動を防げるはず。

端末上のvimでCtrl + Spaceが反応しない

端末上だとCtrl + SpaceはNulが送信されるみたいなのでそれをCtrl + Spaceにマッピングする

imap <Nul> <C-Space>
imap <C-Space> hoge

特別な引数

map関数の引数に<buffer><nowait>"<silent><special><script><expr><unique> を指定できる。
ヘルプは下記

:h map-arguments
  • <buffer>: カレントバッファだけで使用できるマップを作成する場合に使用

デフォルトキーマッピングを表示

:h index.txt

自分で割り当てたキーマッピングの確認

:map " すべて確認
:imap " インサートモードだけ
:nmap " ノーマルモードだけ
:vmap " ヴィジュアルモードだけ
:verbose nmap " 定義元ファイル情報も表示

絞込みをしたい場合

  • オプション検索で絞り込む 以下の状態でC-dまたはtabキー
:map [検索したい文字列]

ワイルドカードも使える。 また、他のコマンドでも利用可能

  • redirで絞り込む
:redir > file
:map
:redir END

:redir @a でレジスタに格納もできる。
また、:redir => a でレジスタに格納できるので

:redir => a
:silent map
:redir END
"新しいバッファで
put =a

とすると新しいバッファに出力が貼り付けされる。