Hello Vim Script World !!

本投稿は TECOTEC Advent Calendar 2021 の4日目の記事です。

こんにちは!CISOの木村です。 😀

気がつけばテコテックで5年目のアドベントカレンダー🎄ですが
毎年この時期になると「HelloWorldでもアドベントカレンダーを書いてみてね🖊」と言っているので今回はやろうと後回しだった VimScript でやってみようと思います。

まだ書いたことがないよ😟という方も
この機会に「そういえば・・・あれ気になってたな💡」を進めてもらえたら最高です👍!!

さてエディタですが

エディタって色々ありますが 私はVimを使ってます。
最近 Version up された秀丸も愛用してましたがWindows限定なのと、気が付いたら秀丸上で:wqを入れまくってたのでVim中心になってます。

もちろん
それ以外は認めない😡!!

ではなくVSCode とか IDE も、もちろん使いますがだいたいは Vim を使ってます。

まれにメモ帳を使ってる人も見かけますが

  • 矩形選択

  • 正規表現での検索、置換

  • grep

とかできるのが便利で好きなのと

🍭フォントとか・・・
🍫色合いとか・・・
となると沼の始まりです・・・🎃

というわけでVimで使えるVimScriptですが

正直、あまりカスタマイズして使ってないので自作する必要はほぼないっちゃないのですが
やったことあるやったことないじゃ大きく違うので
今回は✨定型文をコマンドで出す!✨を目標にやってみようと思います。

使わない命令文もたくさんありますが「動かせる🏃」って大事な一歩なので
Vimから :Hello で Hello Vim Script World と出るようにしてみたいと思います。
とりあえず、ささっと調べて🦍書いてみたプログラミングがこちら

let mess = "Hello Vim Script World"  
echo mess  

保存(:w hello.vim)して実行します。
vimから

:source hello.vim  

で、すぐできたわ😆!
実行😉!!

・・・と思ったら
Vimのコンソール?に表示されてました。。。

んー・・・。。。    😥

画面に入力させたかったので思ったのと違い再チャレンジ!💨

次はこちら

let mess = "Hello Vim Script World"  
call setline('.', mess);  

勢い良く実行したら見事エラーに・・・
セミコロンがいらない文法でした。。。(リアルタイムをお届けしております)

落ち着いてセミコロンをxで消して無事修正完了
無事にエディタ(バッファ)に出力されました!

めでたし!めでたし!🎉

しかし! これで終わらないのがアドベントカレンダー!!🎀
次は・・・

コマンドで動くようにする

:source hello.vim   

と毎回やるのは面倒なのと、普段使うときはファイルパスも変わるので

:hello  

でいけるようにしたい!

まぁ エイリアスでもできそうだけど・・・
プラグインとして設置してみる! 📦

プラグインの置き場所を探す

vimで

:source &packpath  

のコマンドで出てくるフォルダの扱いやすいところに配置します。
今回はこちら(~/.vim)へ配置しますがだいたいの人はホームディレクトリの.vimやvimfilesとかでよさそうです。

説明はちょっと割愛して動くこと優先でフォルダを作ります。

プラグインの置き場所を作る

mkdir -p ~/.vim/pack/plugins/start/hello.vim/autoload    
mkdir -p ~/.vim/pack/plugins/start/hello.vim/plugin  

autload フォルダの中

先程の実装を関数(hello#execute)にして保存します。

function! hello#execute(start, end) abort  
  let mess = 'Hello Vim Script World'  
  call setline('.', mess)  
endfunction  

plugin フォルダの中

書く内容は知らないコマンドが多いと思いますが今回はおまじないだと思って気にせずこのように記載して保存します。

let s:save_cpo = &cpo  
set cpo&vim  
  
scriptencoding utf-8  
  
if exists('g:loaded_hello')  
finish  
endif  
  
let g:loaded_hello = 1  
  
" ここの3つ目のHelloの最初の1文字のhは大文字にする  
command! -range Hello call hello#execute(<line1>, <line2>)  
  
let &cpo = s:save_cpo  
unlet s:save_cpo  

そして難しいことは考えずにvimを再起動するか新しくvimを起動して

:Hello  

を実行すると無事成功しました。 😊

ここまで動かすことができれば拡張したり、この設定はなんなんだろう? とかその先へ進んでいけると思います!

また、初めてだけど興味あるよという方は
🦍ゴリラさんのvim解説がとても分かりやすいので
是非、検索(ゴリラ vim)してみてご覧ください!!
(今回の:helloでも、通常利用でも参考にさせてもらっています)

それでは!👋😃

↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓

テコテックはリモートしている社員や中途入社の方も多いのでvimの普及率は調べられていませんが是覧HPも御覧ください。

↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓

www.tecotec.co.jp