Vim을 사용하여 네트워크에서 파일을 편집하려면 어떻게해야합니까?


13

현재 서버에 SSH로 연결하여 서버에서 Vim을 실행하고 있습니다. 이것은 SCP를 통해 원격 서버에서 파일을 여는 성가신 구문을 처리 할 필요가 없으며, 더욱 중요한 것은 서버의 파일 시스템을 실제로 빠르게 탐색 할 수 있다는 이점이 있습니다. 반면에 지연이 발생하여 편집이 어려워집니다.

많은 원격 파일을 편집하는 일반적인 방법은 무엇입니까?


6
정확히 어떻게 지내세요.
Ignacio Vazquez-Abrams

경우 vim지연이 전시되고, 이것은 아마 당신의 네트워크가 아닌 워크 플로우에 문제를 가리 킵니다.
Joseph R.

ssh root@myvps.com; vim / etc / somefile-로그인 한 다음 Vim을 시작합니다
jcora

실제로 네트워크와 함께 있습니다. 키를 누르면 유럽에서 미국으로 패킷을 보내야합니다. 사용중인 Vim 인스턴스가 실제로 실행 중입니다.
jcora

당신은 또한 할 수 있습니다 ssh root@myvps.com vim /etc/somefile(의 부재에주의하십시오 ;).
terdon

답변:


26

SSHFS 를 사용 하여 로컬 폴더에 원격 홈을 마운트 할 수 있습니다 . 현재 인프라를 사용하고 로컬 vim의 대기 시간이 짧다는 이점이 있습니다.


1
가장 좋은 방법은 imo. 낮은 대기 시간뿐만 아니라 단 하나의 vimrc 유지하는 데
exussum

20

로컬 vim 또는 gvim을 사용하여 원격으로 편집 할 수 있습니다.

:e scp://me@someplace.else/~/myfiles/whatever.file

scpA는 보안 복사 프로토콜 . sshssh 키 와 같은 방식으로 인증 되므로 ssh 키 등을 사용할 수 있어야합니다. 다양한 다른 프로토콜이 지원 :help netrw-externapp되지만 (참조 ) scp가 이미 같은 위치에 ssh를 사용하는 경우 scp가 가장 쉽습니다.

이 방법으로 디렉토리를 찾아 볼 수 있습니다 /. 경로가로 끝나는 지 확인하십시오 . 그렇지 않으면 vim은 새 파일로 바꿉니다.

:wscp를 통해 파일을 자동으로 씁니다. 어떤 이유로 쓰기에 실패하면 상태 표시 줄에 "쉘 반환 1"종류의 것이기 때문에 주목해야합니다. 그러나 알아 차리지 않으면 vim은 알지 못하며 결과가 발생할 수 있습니다. 예를 들어, 지금 종료하면 경고하지 않습니다. :wa많이 사용 하면 이것을 놓치기 쉽습니다 . | 그것이 내가 가진 유일한 경고입니다.

공식 문서는을 참조하십시오 :help netrw.


+1 나는 단지 이것을 쓰려고했다. netrw 플러그인 (보통 기본적으로 설치) 원격 파일을 읽을 수있는 다양한 방법이있다.
Greg Hewgill

: 내가 말할 때이 옵션을 언급했다 "정말 신속하게 서버의 파일 시스템을 탐색 할 수있는, 더 중요한 것은,이 SCP을 통해 원격 서버에서 여는 파일의 성가신 구문을 처리 할 필요가 없다는 장점을 가지고 있으며," 이 방법을 나에게 매우 제한된 것 같습니다.
jcora

1
공정하게 말하자면, 귀하의 질문에는 원래 "SCP를 통한 원격 서버"는 언급되지 않았으며 나중에 편집되었습니다.
Greg Hewgill

@GregHewgill : 조금 당황 스럽기 때문에 그 메모에 감사드립니다. 이것은 일반적인 목적을 위해 가장 간단하고 간단한 방법입니다 (SSHFS에 대한 위반 없음!). 파일 경로에 URL을 추가하는 것이 상대적으로 번거 롭다면 실제로 수행되는 작업이 실제로 편집기를 사용하여 작업을 수행 해야하는 방법에 대해 궁금합니다. 명령을 위쪽 화살표로 할 수 있기 때문입니다. 그러나 그들 각자에게.
goldilocks

@GregHewgill 네, 알고 있습니다. 이동 중에 전화로 질문을 작성하여 실수로 물건을 버렸습니다. goldilocks, 나는 항상 파일을 열고 닫습니다. 파일 시스템도 탐색하고 거기에서 엽니 다. URL + 경로를 추가하는 것은 "있는 것"보다 더 번거 롭습니다.
jcora

2

rsync를 사용합니다. 변경된 내용 만 전송합니다. 이렇게 :

rsync -e ssh -va remoteuser@remotehost:remotedir .

그런 다음 여가 시간에 파일을 로컬에서 편집하십시오. 지연이 없습니다. 커밋하기 전에 모든 파일을 검사해야합니다.

rsync -e ssh -va . remoteuser@remotehost:remotedir

나는 당신이 먼저 로컬 디렉토리를 만들고 있다고 가정합니다 cd. 파일 제거를 처리 할 수도 있지만 잘못된 디렉토리에서 실행하면 전체 디렉토리 트리가 손상 될 수 있으므로주의해야합니다.

rsync -e ssh -va --delete . remoteuser@remotehost:remotedir

내가하는 일은 먼저 'n'플래그를 사용하여 "건식 모드"에서 실행하는 것입니다.

rsync -e ssh -van --delete . remoteuser@remotehost:remotedir

실제 상황이라면 어떻게했는지보고 할 것입니다. 보고 된 목록에 만족하면 다시 실행하고 'n'플래그를 제거하십시오.

rsync는 매우 효율적입니다. 다양한 다른 플래그도 있습니다. 꽤 정교합니다.


0

SSH 방법 중 가장 적절한 방법으로 이름을 지정할 수 있지만 여전히 편집 된 파일의 특성에 따라 작은 파티션을 할당하여 공유 정책을 작성하고 파일을 파일에 넣을 수 있습니다 (물론 보안 정책에서이 작업을 허용하는 경우). 이 제안을 위해 NFS 또는 Samba를 가장 쉽게 사용할 수 있지만 여전히 테스트 파일 편집은 UNIX의 일반적인 개념이므로 현재와 같이 유지해야 할 수도 있습니다.

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