.vimrc
외부 파일에서 변수 값을 읽 도록 수정하고 싶습니다 . 어떻게해야합니까?
특히, 친구와 나는 .vim
파일 과 git repo를 공유 하지만 구성에서 원하는 것에 약간의 차이가 있습니다. 따라서 대부분의 파일이 일반적이지만 if 문을 사용하여 다음과 같이 사용자 별 섹션을로드할지 여부를 결정합니다.
let whoami = "user2"
if whoami == "user1"
...
우리의 공통된 .vimrc
소스 제어를 확인한 후에 , 우리는 각자 let whoami
의 섹션이로드되도록 할당 을 변경해야 합니다. 대신 별도의 파일을 유지하고 싶습니다. 각 파일마다 다를 수 있으며 vim이 해당 변수 값을로드합니다.
어쩌면 이것에 대한 또 다른 각도는 다음과 같습니다. vim은 내 .vim
디렉토리의 모든 파일을 자동으로 읽 습니까? 그렇다면 username.vim이라는 심볼릭 링크를 각각 다른 외부 파일에 연결할 수 있습니다.
답변
기본 .vimrc 파일에서 :
source otherVimScriptFilePath.vim
그런 다음 변수 문을 해당 파일에 넣으십시오.
" otherVimScriptFilePath.vim
let whoami = "user1"
답변
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
답변
마지막 질문에 답하기 위해 파일 ~/.vim
은 자동으로로드되지 않지만 모든 파일은로드 ~/.vim/plugin
됩니다.
답변
~ / .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’이 붙어 있기 때문에 필요합니다.
답변
로그인 한 사용자의 이름은 $ USER 환경 변수에서 사용 가능합니다. 해당 변수에 쉽게 액세스 할 수 있습니다.
:echo $USER
그래서, 그냥 사용하십시오
execute "silent! source vimrc." . $USER
vimrc에서 사용자 특정 설정을
vimrc.joe
또는 귀하의 로그인 이름이 무엇이든
답변
나는 당신의 vimrc가 어떻게 보이는지 잘 모르겠으므로 이것이 가능하지 않을 수도 있지만, 당신과 당신의 친구가 공유하는 큰 부분이 있다면, 그것들을 별도의 플러그인으로 나누고 싶을 수도 있습니다. ~/.vim/plugin
시작시로드되도록 파일을 디렉토리에 추가 할 수 있습니다 . (알파벳 순서로로드되어 :scriptnames
있습니다. 확인에 사용 하십시오.)
그렇게하면 각각 고유 한 vimrc를 가질 수 있지만 모든 공통 구성은 플러그인에 있습니다. 논리적으로 분리하면 다른 사람과도 쉽게 공유 할 수 있습니다.