1. ホーム
  2. vim

[解決済み] Vim - vimを起動したらすぐにコマンドを実行するには?

2022-08-26 13:37:09

質問

プラグイン(FindFile.vim)があります。 :FindFileCache . を実行する必要があります。しかし、私は vim を起動するたびにこれを実行しなければなりません。

vimを起動するたびに一度だけ実行するコマンドはどのように書けばよいでしょうか。

どのように解決するのですか?

設定に関するものを保管するのに最適な場所は、あなたの .vimrc ファイルです。しかし、それはあまりにも早い段階でソースされています。 :h startup :

At startup, Vim checks environment variables and files and sets values
accordingly.  Vim proceeds in this order:

1. Set the 'shell' and 'term' option                *SHELL* *COMSPEC* *TERM*
2. Process the arguments
3. Execute Ex commands, from environment variables and/or files *vimrc* *exrc*
4. Load the plugin scripts.                                 *load-plugins*
5. Set 'shellpipe' and 'shellredir'
6. Set 'updatecount' to zero, if "-n" command argument used
7. Set binary options
8. Perform GUI initializations
9. Read the viminfo file
10. Read the quickfix file
11. Open all windows
12. Execute startup commands

ご覧の通り、あなたの .vimrc はプラグインより先に読み込まれます。もし、あなたが :FindFileCache . を記述すると、エラーが発生します。(手順4でプラグインがロードされれば、存在するようになります)。

これを解決するには、コマンドを直接実行する代わりに 自動コマンドを作成します。オートコマンドは、あるイベントが発生したときに何らかのコマンドを実行します。この場合 VimEnter イベントが適切に見えます ( :h VimEnter ):

                                                    *VimEnter*
VimEnter                    After doing all the startup stuff, including
                            loading .vimrc files, executing the "-c cmd"
                            arguments, creating all windows and loading
                            the buffers in them.

そして、この行を .vimrc :

autocmd VimEnter * FindFileCache .