vim-vimの起動時にすぐにコマンドを実行する方法


103

:FindFileCache .ファイルキャッシュを収集してすばやく開くためにvimを起動するたびに実行する必要があるプラグイン(FindFile.vim)があります。vim を起動するたびにこれを実行する必要があります。

vimが起動するたびに1回実行されるコマンドをどのように記述できますか?

回答:


145

構成を保存するのに最適な場所は、.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 .

2
+1、これは受け入れられる答えであるはずです。1つのコマンドに対して個別のファイルを作成するよりもはるかにクリーンです。

追加したいのは、後にスペースがあったので、E172でこの休憩がありました。
Caroline

:AnsiEscを呼び出すためにこのアプローチを使用してみましたが、実際には望ましい効果がありませんでした。:AnsiEscなどのコマンドが以前に実行されたことを検出する方法を知っている可能性はありますか?
serup

89

vimの-cフラグもあります。私はtmuxp構成でこれを行い、垂直分割でvimを開始します。

vim -c "vnew"

少なくともneovimでは、同時にファイルを開くこともできます。

nvim -c "colorscheme mustang" some_file

6
ありがとう、これが私が探していたものです。時々 、私はちょうどあなたが示してきたように、分割のような一時的な起動コマンドを実行する必要があり、私のvimrcファイルでこれを保管する必要はありません
verboze

これはファイルを開くことができません:vim -c ':colo default' test.txt
van abel

1
私にもぴったり-私は使ってxolox/vim-notesおり、新しいメモを用意してVimを開く魚機能が欲しい。
wsams

13

という名前のファイルを作成し、~/.vim/after/plugin/whatever_name_you_like.vimそれで埋めます

FindFileCache .

スクリプトがvimディレクトリで読み取られて実行される順序は、 :help 'runtimepath'


2

他の回答より遅くても起動直後に取得するには、.vimrcのタイマーを使用します。たとえば、.vimrcのこのコードは、変数を設定する前に、起動後0.5秒待機します。

function DelayedSetVariables(timer)
    let g:ycm_filetype_blacklist['ignored'] = 1
endfunction
let timer=timer_start(500,'DelayedSetVariables')

(例の変数はYouCompleteMeプラグインのブラックリストです。プラグインは他のプロセスを非同期で起動して変数を作成しますが、vimが開始するまでにまだ準備ができていません。 .vimrc、アフターファイル、またはVimEnterイベントで設定します。これは私のWindowsシステムに固有のものです。YCMのドキュメントでは、オプションの設定に.vimrcが機能するはずであるとしています。


1

あなたのFindFileCache中に入れてください.vimrc

autloadコマンドは異なり、シナリオでは機能しません。


それを指摘してくれてありがとう、実際にはpluginそうではなかったautoload
ブノワ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.