【vim-script】文法と一行野郎と複数行野郎


ソフトウェアデザイン 2018年7月号を読んで、少し vim-script も使おうかと思ったので学んだことを書き溜めておくことにした。

 

文法

コマンド 説明
nnoremap ノーマルモードでのみ有効な key mapping
nmap ほぼ同上だが、再帰的展開をする
inoremap インサートモードでのみ有効な key mapping
imap ほぼ同上だが、再帰的展開をする
cnoremap コマンドモードでのみ有効な key mapping
cmap ほぼ同上だが、再帰的展開をする
noremap ノーマルモード、ビジュアル選択モード、オペレータ待機モードなどさまざまなモードで有効な key mapping
map ほぼ同上だが、再帰的展開をする
onoremap オペレータ待機モードで有効な key mapping
tnoremap ターミナルモードでのみ有効な key mapping
autocmd 「ファイル保存時」「新規バッファ作成時」など Vim のイベントをフックして処理をする

 

一行野郎

ターミナルモード shell の場合に、C-\ C-n 入力を Esc キーに割り当てる。

tnoremap <ESC>  <C-\><C-n>

複数行野郎

各プラグインに対して設定ファイルが存在すれば読み込む

let my_plugin_list = [
\ "$HOME/.config/nvim/userautoload/plugins/plugin_neocomplcache.vim"        ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_easyalign.vim"            ,
\ "$HOME/.config/nvim/userautoload/plugins/plugins-unite.vim"               ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_indentguides.vim"         ,
\ "$HOME/.config/nvim/userautoload/plugins/local_keymap.vim"                ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_yankround.vim"            ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_easymotion.vim"           ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_thumbnail.vim"            ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_textmanip.vim"            ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_lightline.vim"            ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_vim_open_browser.vim"     ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_qfixgrep.vim"             ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_neoterm.vim"              ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_seach_texobj_funcs.vim"   ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_w3m.vim"                  ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_url_encoding.vim"         ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_eskk.vim"                 ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_vinarise.vim"             ,
\ "$HOME/.config/nvim/userautoload/vim/hz_ja.vim"                           ,
\ "$HOME/.config/nvim/userautoload/plugins/plugin_vimfiler.vim"
\ ]

let i = 0
while i < len(my_plugin_list)
    let f = my_plugin_list[i]
    if filereadable(expand(f))
        source `=f`
    endif
    let i = i + 1
endwhile