.vimrc를 외부 파일에서 어떻게 읽을 수 있습니까?


24

.vimrc외부 파일에서 변수 값을 읽 도록 수정하고 싶습니다 . 어떻게해야합니까?

특히, 친구와 나는 .vim파일 과 git repo를 공유 하지만 구성에서 원하는 것에 약간의 차이가 있습니다. 따라서 대부분의 파일이 일반적이지만 if 문을 사용하여 다음과 같이 사용자 별 섹션을로드할지 여부를 결정합니다.

let whoami = "user2"
if whoami == "user1"
...

우리의 공통된 .vimrc소스 제어를 확인한 후에 , 우리는 각자 let whoami의 섹션이로드되도록 할당 을 변경해야 합니다. 대신 별도의 파일을 유지하고 싶습니다. 각 파일마다 다를 수 있으며 vim이 해당 변수 값을로드합니다.

어쩌면 이것에 대한 또 다른 각도는 다음과 같습니다. vim은 내 .vim디렉토리의 모든 파일을 자동으로 읽 습니까? 그렇다면 username.vim이라는 심볼릭 링크를 각각 다른 외부 파일에 연결할 수 있습니다.

답변:


35

기본 .vimrc 파일에서 :

source otherVimScriptFilePath.vim

그런 다음 변수 문을 해당 파일에 넣으십시오.

" otherVimScriptFilePath.vim
let whoami = "user1"

2
참고-내 상황에서, 줄 let whoami = ""바로 앞에하는 것이 도움이되어 source외부 파일을로드하지 못하면 변수가 존재하고 변수가 설정되지 않았기 때문에 이전에 설정 한 오류 메시지가 나타납니다.
Nathan Long

2
@ GorillaSandwich : Windows에는 기호 링크가 없기 때문에 이것을 사용하여 Windows 컴퓨터에서 vimrc를 소스로 사용합니다. 이 파일과 다른 모든 도트 파일이 들어있는 SVN 폴더가 있습니다. 그래서 svn 폴더에 실제 소스를 제공하는 _vimrc가 있습니다.
Robert S Ciaccio

@GorillaSandwich : 해당 silent! source부분에 대한 내 답변보기
akira

6

try / catch 사용

이 질문을 한 후 외부 파일을로드하는 또 다른 유스 케이스 인 머신 특정 조정을 생각해 냈습니다.

주어진 컴퓨터에서 조정해야 할 수도 있고 필요하지 않을 수도 있기 때문에 try/catch외부 파일을로드 하는 데 a 를 사용하고 있습니다. 그러한 파일이 없으면 자동으로 실패하게합니다.

" If there are any machine-specific tweaks for Vim, load them from the following file.
try 
  source ~/.vimrc_machine_specific
catch
  " No such file? No problem; just ignore it.
endtry 

5

마지막 질문에 답하기 위해 파일 ~/.vim은 자동으로로드되지 않지만 모든 파일은로드 ~/.vim/plugin됩니다.


2
~ / .vim ( after, autoload) 아래의 다른 장소들
akira

4

~ / .vimrc가 :source명령을 사용하여 다른 파일을로드하도록 할 수 있습니다 . 예를 들어, 각각 고유 한 명령을 ~ / .myvimrc에 넣고 해당 명령을

source ~/.myvimrc

또는 생각할 때 각각 다음과 같이 파일에 이름을 넣을 수 있습니다.

let user = "user1"

그리고 이것을 ~ / .vimrc에 넣으십시오.

source ~/.myvimrc
if user == "user1"
    " do this
elseif user == "user2"
    " do that
else
    echo "Invalid user"
endif

그러나 파일에 이름을 넣는 대신 akira가 제안한대로 $ USER를 user사용 하거나 다음과 같이을 사용하여 설정할 수 있습니다 whoami.

let user = substitute(system('whoami'), '\n', '', '')

replace () 함수는 system ()의 출력에 보통 '\ n'이 붙어 있기 때문에 필요합니다.


whoamiWindows에서 작동하지 않습니다
akira

@akira : 사실이지만 GorillaSandwich는 Windows가 아닌 Unix를 사용하고 있습니다. $ USER는 Windows에서는 작동하지 않으며 Windows XP 이상에서는 작동하지 않습니다.
garyjohn

그냥 Windows에서 $ USERNAME이라고 말하면됩니다. 요점은 : whoami새로운 프로세스를 생성합니다. 에디터를 열면 빠르고 여러 번 작업하지 않아야합니다.
akira

2

로그인 한 사용자의 이름은 $ USER 환경 변수에서 사용 가능합니다. 해당 변수에 쉽게 액세스 할 수 있습니다.

:echo $USER

그래서, 그냥 사용하십시오

execute "silent! source vimrc." . $USER

vimrc에서 사용자 특정 설정을

vimrc.joe

또는 귀하의 로그인 이름이 무엇이든


0

나는 당신의 vimrc가 어떻게 보이는지 잘 모르겠으므로 이것이 가능하지 않을 수도 있지만, 당신과 당신의 친구가 공유하는 큰 부분이 있다면, 그것들을 별도의 플러그인으로 나누고 싶을 수도 있습니다. ~/.vim/plugin시작시로드되도록 파일을 디렉토리에 추가 할 수 있습니다 . (알파벳 순서로로드되어 :scriptnames있습니다. 확인에 사용 하십시오.)

그렇게하면 각각 고유 한 vimrc를 가질 수 있지만 모든 공통 구성은 플러그인에 있습니다. 논리적으로 분리하면 다른 사람과도 쉽게 공유 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.