
vimスクリプトを使いこなして独自コマンドを作成しよう!
はじめに
vimは便利なコマンドが沢山あります
また、vimスクリプトを書くことで独自のコマンドを作成することも可能です
そこで今回は、vimスクリプトによるコマンド作成方法について説明していきます
vimスクリプトをはじめる
ステップ0 スクリプトを書くファイルを作成する
直接vimrcに書き込むのではなく、まずは適当なファイルを作成します
今回のファイル名はwork.vimとします

ステップ1 functionで関数を作成する
まず、先程作成したwork.vimにfunction文を使って関数を作成します
注意が必要なのは、関数名の頭文字は大文字である必要があります
(vimに内臓されている関数と分けるためらしいです)
関数は以下のように書きます

「function」と「endfunction」に囲まれたものが関数になります
functionの後の「!(びっくりマーク)」、関数名の後の「abort」はなくても動きます
「!」を付けると同じ名前の関数があったときに上書きします
「abort」を付けると関数の途中でエラーが起きたときにそこで終了してくれます
vimの関数は途中でエラーが起きても最後まで動き続けます
echo ‘Hello’ でコマンドラインに「Hello」が表示されます
ステップ2 commandでコマンドに置き換える
作成した関数をExコマンドに割り当てます。

command! <Exコマンド名> call <関数名>
で関数をコマンドに割り当てます
こちらの「!」もなくても動きます
「!」を付けることで同じ名前のコマンドがあったときに上書きされます
ここで、実際にコマンドを実行してみましょう
ノーマルモードで「:」を入力してExモードに移ります
そしてsource work.vimを実行することで設定を反映させます

そしてExモードでWorkを実行します

実行!

コマンドラインにHelloが表示されました!
ステップ3 noremapでキーに割り当てる
Exモードはノーマルモードで「:」を入力することで開始します
なので、ノーマルモード→Exモード→コマンド入力
と手間がかかります。そこで、キーボード入力にコマンドを割り当てて一発で実行します

nnoremap <Key> :<Exコマンド><Enter>
nnoremapでノーマルモード時のキー入力を設定します
<key>に任意のキーを指定します
<Exコマンド>に任意のコマンドを指定します
ちなみにinoremapで挿入モード、vnoremapでビジュアルモード時のキー入力を設定します
では実際に実行してみましょう
まず、work.vimをsource work.vimでリロードします

そのあと、ノーマルモードで「+」を入力すると

コマンドラインに「Hello」が表示されます
まとめ
今回はvimスクリプトの始め方について説明しました
以下、今回使用したコードです
function! WORK() abort
echo 'Hello'
endfunction
command! Work call WORK()
nnoremap + :Work<Enter>
vimスクリプトには様々な関数があるので、次回は主要なものを紹介します
コメント