2011-01-06 6 views
24

다른 사용자의 .vimrc 파일을 참조 (또는 "소스") 할 수있는 방법이 있습니까?사용자 지정 .vimrc 파일을 참조/가져 오는 방법

관리자 사용자 ID에 (kerberos 보안 토큰을 사용하는 su 변형)을 사용하는 경우 개인 .vimrc 파일을 사용하고 싶습니다.

관리자 ID가 여러 사용자가 공유하기 때문에 관리자의 기존 .vimrc 파일을 덮어 쓰지 않으려합니다. 정력에

답변

20

당신은 MYVIMRC 환경 변수를 사용할 수 있습니다 참조하십시오. 이 방법을 사용하면 vim을 실행할 때마다 -u을 전달할 필요가 없습니다.

당신이 (예를 들어, 누군가에게 당신이 보안 문제를 생성 할 수있다 /home/user/.vimrc 사용하는 경우 .vimrc는, 임의의 명령을 실행할 수 있다는 것을 명심하십시오 (당신은 물론 대신 별명을 할 수 있지만 그 예와 vipw 도움이되지 않습니다) 사용자 계정을 손상시키고 .vimrc를 변경 한 다음 다음 번에 루트로 파일을 편집 할 때 루트가됩니다. 물론 어딘가에 ~root/에 알려진 안전 복사본을 보관할 수 있습니다.

~root/.bashrc에 무언가를 설정하여 MYVIMRC을 관리자마다 다른 것으로 자동 설정할 수도 있습니다.

+0

고마워요, 제가 물었던 것입니다. 또한 보안 경고에 감사드립니다. –

+0

은 "vim"에서는 작동하지만 "vi"에서는 작동하지 않습니다. – Tagar

+0

@Ruslan 음, * .vim * rc 파일에 관한 질문이므로 EMACS에서도 작동하지 않습니다. 또는 joe 또는 nano 또는 Microsoft Word. (그리고 vim을'vi'라고 부르면, 호환 모드로 실행하도록 요구할 것입니다.) [나는 아마도 당신이 말하는 것을 오해하고있을 것입니다; 명확히하십시오.] – derobert

5

:

:source /path/to/your/.vimrc

+0

이 충분하지 않습니다 다음 및 RTP가 이런 식으로 업데이트되지 않습니다 - 음, 물론의 .vimrc가 및 RTP를 재설정 할 수있다. –

3

나는 오직이 몇 번 시도했는데이 나를 위해 잘 작동하는 것 같다. 다음과 같은 것입니다 정력에 대한 별칭을 정의

alias vim="HOME=~yournormaluser vim -c 'let \$HOME = \"$HOME\"'" 

이것이하는 일은 당신의 $HOME/.vim/ 환경을 사용하여에 정력을 속여입니다, 아직 그렇게 :e ~/something.txt 같은 일을 일을 계속 사용할 정력 내에서 $HOME를 재설정 admin 사용자의 $HOME.

이렇게하면 관리자의 ~/.vimrc을 전혀 변경할 필요가 없다는 장점이 있습니다.

+0

다시 말해서, admin 사용자를 사용하는 모든 사람에게 vim의 별명을 지정합니다. 과거에이 작업을 수행했을 때 나는 내 환경이 내가'$ USER' 사용자로부터 su'ing하고'~ $ USER/.aliases '를 제공하고 있음을 알고 있었기 때문에이 문제를 해결할 수있었습니다. 어쩌면이 정보를 어떻게 든 사용할 수 있습니다. –

+0

& rtp => +1 –

+0

randy_gvim 별칭을 올바르게 설정 한 것 같습니다. 다른 별칭은 사용하지 않을 수 있습니다. –

18

-u 매개 변수를 시도하고 대체 구성 파일의 경로를 지정하십시오. 예를 들어

: vim -u /home/jesse/myvimrc

http://linuxcommand.org/lc3_man_pages/vim1.html

+1

불행히도. 'man -u' :'-u {vimrc} {vimrc} 파일의 명령을 사용하여 초기화합니다 .' 지금까지는 좋았지 만 vim을 특수 모드로 설정하여'다른 모든 초기화는 건너 뜁니다. '이것은'vim -u ~/vimrc'로 추적되지 않은 문제를 디버그하기가 어려워서' vim'. 나를 위해 일한 것은 bash shell 특유의'<(...)'캡처를 사용하여'vim -u <(echo source/usr/share/vim/vimrc; cat ~/.vimrc)'입니다. – gmatht

1

개인적으로, 필자는 루트의 .vimrc를 내 링크로 심볼릭 링크합니다.

ln -s /home/<me>/.vimrc /root/.vimrc

하지만 당신은 그 안에 무엇을 조심해야합니까 : BASH에서 (루트로).

2

귀하의 초기 소유자가 귀하의 tty를 소유하고 있다고 가정합니다. 당신이 합리적으로 보안 정의의 vimrc 파일을 유지할 수 /root/.vimrc.$USRNAME에서 사용자 정의 루트의 .vimrc를 배치하여

stat -c'%U' `tty` 

: 그렇다면, 당신은 당신의 초기 사용자를 얻을 수 있습니다. 당신은 다른 것들도 할 수 있지만, 나는 그것을 당신의 상상력에 맡깁니다.

방법 1 - 당신의 /root/.bashrc & 연기에 넣고 그것을 :

# Source a custome vimrc if it exists 
mytty=`tty` 
initial_user=`stat -c'%U' $mytty` 
custom_vimrc="/root/.vimrc.$initial_user" 
if [ -f $custom_vimrc ]; then 
    export VIMINIT="source $custom_vimrc" 
fi 

방법 2 - 당신의 /root/.vimrc에 비슷한 넣어 (더 나은 솔루션이 KSH을 사용할 수 있기 때문에) .

누군가가 방법 2를 파악할 수 있으면 게시를 환영합니다. 나는 동기 부여가 부족하다.

5

앞서 언급 한 바와 같이 다른 .vimrc 파일을 플러그인없이 사용하고 .bash_profile 또는 별칭에 별칭을 추가하십시오.

alias vvim='vim -u ~/.vimrc_vundle' 

플러그인 로딩이 프로그램 인스턴스를 느리게하는 것 같은 경량의 명령으로 vim을 유지하기 위해 :

alias svim='vim -u ~/.vimrc_simple' 

정말 나는 다음과 같은 선호합니다.

1

방법 2 - 부가로는


tty 작동하지 않는 다른 것을 시도의 .vimrc하고, system("who am i")는 둘 다 (VIM-함수 내에서 사용될 때 비어 올 없음) 때문에,이 방법은 더 이상이다 . 내가 플러그인 년 전 내 .vimrc에 루트로 이동합니다 sudo를 사용하는 모든 사용자를 시작하지 않고 우리의 서버에서 내 자신의 .vimrc를 원하기 때문에 만든

"Local .vimrc for the user 
" 1. get the user, which used su 
" 2. we can load his .vimrc.<user> 
" from $HOME (from where we have sudo'ed in) 
let b:term = substitute(system ("ps T | grep ' ps T$' | sed -e 's/^ *//' | cut -d ' ' -f 2 "), "\n", "", "") 
let b:user = substitute(system ("who | grep ".b:term." | cut -d ' ' -f 1 "), "\n", "", "") 
let b:file = $HOME."/.vimrc.".b:user 
if filereadable(b:file) 
    execute 'source '.b:file 
endif 
0

모든 바로 가기 환영합니다.

내 플러그인은 @ULick에서 제공 한 것과 정확히 동일하게 작동합니다.

GIST

관련 문제