概要
vimで行番号を表示するにはコマンドモードで:set number
、
行番号を非表示にするには:set nonumber
とすればいいわですが、
これを毎回打つのはめんどくさい。
というわけで、ワンタッチでこれらを切り替えられるショートカットをつくります。
方法
.vimrcにこう記述すればOK。<C-m>で行番号の表示/非表示が切り替わるようになります。
.vimrc
" set number
function Setnumber()
if &number
setlocal nonumber
else
setlocal number
endif
endfunction
nnoremap <silent> <C-m> :call Setnumber()<CR>
説明
<C-m>で自作関数Setnumber()を実行するようにnnoremapでキーマップしています。
Setnumber()関数は&numberで現在の行番号が表示状態であるか非表示状態であるかを取得し、setlocal number
、あるいはsetlocal nonumber
します。
setではなくsetlocalを使っているのは、
現在開いている他のバッファやウィンドウに影響を与えないようにするためです。
その他、nnoremapに指定されているオプションはそれぞれ下記のような意味を持ちます。
<silent> : <C-m>を実行したときにvimのコマンドラインに入力文字列を表示しないようにする
:call : Setnumber()関数を実行する
<CR> : キャリッジリターン
参考文献
Vimscriptを書いてみた http://chulip.org/entry/20100328/1269725318
Vim: オプションのグローバルな値とローカルな値 http://whileimautomaton.net/2008/01/14011600
Vim エディターのスクリプトの作成: 第 1 回 変数、値、式 http://www.ibm.com/developerworks/jp/linux/library/l-vim-script-1/