태그 보관물: vim

vim

SSH를 사용할 때 .vimrc를 가져 오는 방법은 무엇입니까? 있습니다. 문제는 .vimrc 파일을 지속적으로

내 작업은 SSH를 사용하여 다양한 시스템에 연결 한 다음 vim을 사용하여 해당 시스템의 파일을 편집하는 경향이 있습니다. 문제는 .vimrc 파일을 지속적으로 복사해야한다는 것입니다. vim을 열고 설정을하지 않는 것은 매우 성가신 일입니다. 어디서나 수동으로 복사하지 않고 vim 설정을 기계에서 기계로 옮기는 것이 가능합니까?



답변

네 아픔이 느껴져. 버전 제어 (Subversion)에서 ~ /.* rc 파일을 모두 가지고 있으며 CVS를 사용하여 1998 년 시작한 이래로 훌륭하게 작동했습니다. 이를 수행하는 한 가지 방법은 홈 디렉토리에 서있을 때 이와 같은 모든 rc 파일을 체크 아웃하는 것입니다.

svn co svn+ssh://user@host/path/to/repo/trunk/home/user .
A    .signature
A    .vimrc
A    .bashrc
A    .screenrc
A    .psqlrc
[...]
Checked out revision 7645.

이렇게하면 svn update를 실행할 때 구성 파일이 다양한 컴퓨터에서 동기화 및 업데이트됩니다.


답변

작업해야하는 각 서버에 .vimrc를 가져 오는 대신 로컬 vim에서 원격 파일을 편집 해보십시오.

vim / gvim에서 다음을 실행하십시오.

:e scp://remoteuser@server.tld//path/to/document

또는 다음과 같이 vim을 시작하십시오.

vim scp://remoteuser@server.tld//path/to/document

그러면 파일이 이음새없이 제자리에 열리고 (실제로는 로컬로 파일이 복사 됨) 저장하면 편집 된 파일이 서버로 다시 전송됩니다.

ssh 비밀번호를 요청하지만 ssh 키를 통해 간소화 할 수 있습니다.

다른 사람들이 언급 했듯이이 방법의 유일한 단점은 컴퓨터에서 직접 작업 할 때와 같이 경로 / 파일 구성을 얻지 못한다는 것입니다.

자세한 내용 은 다음 자습서를 확인하십시오 .


답변

다음과 같이 로그인 할 때마다 bash 스크립트를 자동으로 복사하도록 만들 수 있습니다.

#!/usr/bin/env bash

scp ~/.vimrc $1:
ssh $1

예를 들어 ssh_vim이라고 부를 수 있습니다. 이상적인 솔루션은 아니지만 문제를 해결할 것입니다.

이미 있는지 먼저 확인하도록 개선 할 수 있습니다. 동일한 시스템에서 ssh를 항상 실행하지 않는 경우 다른 시스템의 scp에서 파일을 가져 오도록 스크립트를 변경할 수 있습니다.

편집 1

관련 참고 사항에서 sshfs를 사용하여 원격 시스템의 파일 시스템을 마운트 할 수도 있습니다. 그렇게하면 환경과 도구 (.vimrc뿐만 아니라)의 이점을 얻고 쉘 완료 (scp : //를 사용하지 않는)가 있습니다.

편집 2

방금 scp : //를 사용하여 .vimrc 파일을 소스로 사용할 수 있음을 알았습니다.

:source scp://you@your_computer//yourpath/.vimrc

이것은 vim 명령 줄에서 작동하지만 현재 자동화 방법을 모르겠습니다. ‘-u’스위치 나 .vimrc 또는 $ VIMINIT에서는 작동하지 않는 것 같습니다.

편집 3

찾았어요! 이 작업을 수행하여 참조 호스트에서 가져온 .vimrc로 vim을 시작할 수 있습니다.

vim -c ':source scp://you@your_computer//yourpath/.vimrc'

옵션 ‘-c’는 vim을 시작한 직후 명령을 실행합니다.

입력을 피하기 위해 선택한 쉘에 별명을 작성할 수 있습니다. bash에서는 다음과 같습니다.

alias vim="vim -c ':source scp://you@your_computer//yourpath/.vimrc'"


답변

공개 키 인증을 사용하는 경우 다음에서 사용할 수 있습니다 ~/.ssh/config.

Host *
   PermitLocalCommand yes
   LocalCommand bash -c 'scp -P %p %d/.vimrc %u@%n: &>/dev/null &'

ssh명령 의 호출을 엉망으로 만들지 않기 때문에 위에서 제안한 스크립트 트릭보다 낫습니다 (추가 매개 변수 등을 지정할 때 등).


답변

몇 가지 솔루션 :

1) 홈 폴더의 NFS 공유를 생성하고 여러 위치에 매핑합니다.

2) 작은 스크립트를 작성하여 .vimrc를 ID / 키 파일로 연결중인 서버로 푸시하십시오. 다음과 같이 보일 수 있습니다 (의사 코드).

connectString = arg0  #username@ipaddress

scp -i ~/.ssh/indentity connectString:~/ ~/.vimrc
ssh -i ~/.ssh/indentity connectString


답변

sunny256과 정확히 동일하지만 SubVersion 대신 git을 사용하십시오.

모든 컴퓨터에 공통 인 파일로 하나의 기본 분기를 유지하고 새 컴퓨터마다 하나의 분기를 갖습니다.

그렇게하면 대부분의 컴퓨터에서 거의 같은 파일을 가질 수 있지만 여전히 혼란스럽지 않습니다.


답변

나는 이것이 오래된 스레드라는 것을 알고 있지만 한 가지 방법은 파일 시스템을 퓨즈에 마운트하는 sshfs를 사용하는 것입니다. 로컬 vim은 모든 편집 작업을 수행하므로 .vimrc를 복사 할 이유가 없습니다.

이것은 원격 서버에서 실행 해야하는 모든 명령에 대해 다른 터미널을 열어야한다는 단점이 있지만 편집을 위해서는이 방법이 가장 좋습니다.

또한 시스템 클립 보드를 사용할 수 있다는 이점이 있습니다.