(2017年10月12日 コメントを踏まえて記事修正)
記事の内容はタイトルそのままですが、私はVimに glidenote/memolist.vim: simple memo plugin for Vim. というプラグインをインストールして活用しています。しかし、メモを取ろうとVimを起動する都度、以下の作業を行う必要があり、それが面倒でした。1
- Vimを立ち上げる
-
:MemoNewコマンドを実行する - メモのタイトルを入力する
- メモをVimで編集するか、Vimを終了してATOMでメモを編集する。
そこで、「ターミナルからVimを起動するときに、コマンドラインモードのコマンドを指定して、Vimが起動したらそのコマンドが自動的に実行される方法」がないか調べたところ、以下の方法で対応できることが分かりましたので、参考までに記事にしました。
具体的には、以下のとおりオプションを指定してVimを起動させると、Vimが起動すると同時にコマンドが実行されます。
vim -c MemoNew
# Vim起動後、:MemoNewコマンドが自動で実行され、メモのタイトルを入力する画面が表示される。
-cオプションの説明ですが、vim --help(ターミナル)と:h -c(Vimのヘルプ)で次のとおり説明されています。
vim --help
-c Execute after loading the first file
:h -c
-c {command} 最初のファイルが読み込まれた後(加えてそのファイルに適用されるautocommandとmodelineが処理された後)に{command}が実行される。
"command" はExコマンドとして解釈される。"command" にスペースを含んでいる場合にはダブルクォートで挟まれている必要がある(これは使われているシェルに依存する)。
最初のファイルが読み込まれた後にコマンドが実行されるというオプションのため、-cオプションではプラグインに関するコマンドが実行できます(.vimrcも読み込まれた後に実行されるため)また、commandに指定するコマンドには、:が不要です。
なお、オプション-cは複数指定できますので、以下のコマンドも実行可能です。
vim -c MemoNew -c wq
# Vim起動後、:MemoNew コマンドが自動で実行され、メモのタイトルを入力する画面が表示される。
# メモのタイトルを入力したら、自動で「保存・終了」のコマンドを実行する。
# これで、メモのファイル(Markdownファイル)が作成されます。
ちなみに、Vimの標準コマンドを実行できれば良いという場合は以下の方法でもOKです。
vim --cmd vsplit
# 最初から左右2画面に分割します
--cmdオプションの説明は次のとおりです。
vim --help
--cmd Execute before loading any vimrc file:h --cmd
--cmd {command} vimrcファイルを処理する前に{command}を実行する。それ以外は -c {command} と同じである。"-c" 引数とは別に、10個まで使うことができる。
.vimrcを読み込むより前にコマンドを実行するため、プラグインに関するコマンドは実行できませんが、Vimの標準コマンドは実行できません。このオプションを指定すると、.vimrcを読み込むより前に指定したコマンドを実行してくれます。そのため、プラグインに関するコマンドは実行できませんが、Vimの標準コマンドは実行できます。ただし、コメントでも指摘を頂いていますが、.vimrcと異なる設定をしようとしても、.vimrcが読み込まれた時点でそちらの設定が適用されます。
-
Vimで日本語文章を編集していると途中から日本語入力が異常に遅くなったことがあったため、今のところ、日本語文章の編集はATOMで行なっています。 ↩