問題
以下の init.vim
のように、変数を定義した場合でも、そのまま記述してしまうと、vimでデフォルトで定義されているコマンドに展開されず、意図した動作にならない
(せめて echo
も同じ動きにしてくれれば…)
init.vim
init.vim
let s:hoge_txt_file_name = "hogehoge.txt"
command! ShowHoge echo s:hoge_txt_file_name
command! ReadHoge e s:hoge_txt_file_name
結果
そのまま引っ張ってきたわけではないので、 (特にエラーメッセージについては) 一言一句正しい物ではないが、おおむねこのような結果になる
:ShowHoge
> hogehoge.txt
:ReadHoge
> s:hoge_txt_file_name は開けません
解決方法
vimのコマンドの引数に変数を使用したい場合は execute
コマンドの引数として、文字列で実行したいコマンドを渡してやれば良い
init.vim
let s:hoge_txt_file_name = "hogehoge.txt"
" echoは…まぁこのままでもいいです…動くし…
command! ShowHoge echo s:hoge_txt_file_name
" こっちは execute コマンドの引数として、文字列展開&結合した結果を渡すことで、解決可能です
command! ReadHoge execute "e " . s:hoge_txt_file_name