Vim: 파일 디렉터리를 기반으로 명령 실행

Vim: 파일 디렉터리를 기반으로 명령 실행

내 경우에는 init.vim현재 파일이 특정 계층 구조 아래에 있는 경우에만 특정 명령을 실행하고 싶습니다. 의사코드:

if current_file_directory == ~/some/path/here
  autocmd <whatever>
  set <whatever>
endif

그러나 if내가 찾은 모든 예는 추론하기에는 너무 기본적이었습니다.

명확히 하자면, neovim이 호출된 디렉토리를 반환하기 때문에 적용되지 :pwd도 않습니다 . getcwd()파일이 있는 디렉토리가 중요합니다. 위의 코드에 따라 /tmp파일을 편집 하는 경우 ~/some/path/here/more/deep/still.txt명령이 실행되어야 합니다.아니요~/some/path/here파일을 편집하는 경우 /tmp/example.txt.

답변1

기반으로@muru의 답변추가 테스트를 거친 후 최종 코드는 다음과 같습니다.

if expand('%:h') =~ 'some/path/here'
  autocmd <whatever>
  set <whatever>
endif
  • expand('%:h')홈 디렉터리 없이 파일에 대한 디렉터리 경로를 제공합니다.
  • =~부분 일치에 필요합니다.

답변2

당신은 그것을 사용할 수 있습니다expand()파일 이름( %)다양한 수식어( :p, :h, 등.):

:e ~/some/path/here/more/deep/still.txt
:echo expand("%:ph")
/home/muru/some/path/here/more/deep/still.txt

원하는 경로와 비교할 수 있습니다.

관련 정보