Vim-vim을 시작할 때 즉시 명령을 실행하는 방법은 무엇입니까?


103

:FindFileCache .빠른 열기를 위해 파일 캐시를 수집하기 위해 vim을 시작할 때마다 실행해야하는 플러그인 (FindFile.vim)이 있습니다. 그래도 vim을 시작할 때마다 이것을 실행해야합니다 .

vim이 시작될 때마다 한 번 실행되는 명령을 어떻게 작성할 수 있습니까?

답변:


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, 이것은 허용되는 대답이어야합니다. 하나의 명령에 대해 별도의 파일을 만드는 것보다 훨씬 깨끗합니다.

다음에 공백이 있었기 때문에 E172에서이 휴식을 취했습니다.
Caroline

이 방법을 사용하여 : AnsiEsc를 호출했지만 실제로 원하는 효과가 없었습니다. : AnsiEsc와 같은 명령이 이전에 실행되었는지 감지하는 방법을 알고 있습니까?
serup

89

vim의 -c 플래그도 있습니다. vim이 수직 분할로 시작되도록 tmuxp 구성에서 이것을 수행합니다.

vim -c "vnew"

적어도 neovim을 사용하면 동시에 파일을 열 수도 있습니다.

nvim -c "colorscheme mustang" some_file

6
감사합니다. 이것이 제가 찾던 것입니다. 때때로, 나는 당신이 보여준 것처럼 split과 같은 임시 시작 명령을 실행해야하고 이것을 내 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, after 파일 또는 VimEnter 이벤트에서 설정하십시오. 이것은 내 Windows 시스템에 특정한 것입니다. YCM 문서에 따르면 .vimrc가 옵션 설정을 위해 작동해야합니다.)


1

넣어 FindFileCache당신에 .vimrc.

Autload 명령은 다르며 시나리오에서 작동하지 않습니다.


그 밖을 가리키는 주셔서 감사합니다, 실제로이었다 plugin없습니다 autoload.
Benoit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.