ssh를 통해 파일을 원격으로 편집하려면 어떻게합니까?


82

ssh를 통해 도달 할 수있는 서버에있는 파일을 편집해야합니다.

vim워크 스테이션 에서 사용자 지정 하여 이러한 파일을 편집 하고 싶습니다 ( vim원격 서버의 설정 을 변경할 권한이 없습니다 ). 때로는 sublime text또는 다른 GUI 편집기 로 파일을 편집하고 싶습니다 .

물론 이러한 파일을 다운로드하여 로컬로 편집 한 후 서버에 다시 업로드 할 수 있습니다. 더 우아한 솔루션이 있습니까?

답변:


65

sshfs를 사용하여 원격 폴더를 파일 시스템으로 마운트하면됩니다. 이렇게하려면 먼저 몇 가지 필수 구성 요소를 수행하십시오.

# issue all these cmds on local machine
sudo apt-get install sshfs 
sudo adduser <username> fuse

이제 장착 프로세스를 수행하십시오.

mkdir ~/remoteserv    
sshfs -o idmap=user <username>@<ipaddress>:/remotepath ~/remoteserv

그 후, 마운트 된 폴더로 가서 자신 만의 로컬 맞춤형 vim을 사용하십시오.


4
당연히 설치 단계는 deb기반 이 아니기 때문에 배포가 실패합니다 apt-get. (이 경우 yum또는 zypper있을 수 있습니다.) 또한 로컬 시스템에서 루트가 필요합니다. (이것은 나쁜 해결책은 아니지만 큰 전제 조건이 제공됩니다.)
Ulrich Schwarz

4
괜찮아. 알아 냈습니다. 이 모든 것은 로컬 컴퓨터에서 수행됩니다. OS X의 경우 osxfuse및 을 설치해야 sshfs합니다. 이들은 (자작 설치할 수 있습니다 brew install sshfsbrew cask install osxfuse, 또는에서 얻은 패키지에서 osxfuse.github.io
inspirednz

95

다음 scp과 같이하면됩니다.

vim scp://user@myserver[:port]//path/to/file.txt

//절대 경로를 올바르게 해결하는 데 필요한 서버와 경로 사이에 두 개의 슬래시 가 있습니다. 첫 번째 슬래시는 구문이며, 두 번째 슬래시는 평소와 같이 원격 사용자의 루트 디렉토리를 지정합니다. 홈 디렉토리에서 시작하려면 [:port]/~/path/to/file.txt.) [:port]는 선택 사항입니다.

이것은 vim의 netrw.vim 표준 플러그인에 의해 처리됩니다 . 몇 가지 다른 프로토콜이 지원됩니다.


6
예, 파일은 임시 파일로 검색되며 저장시 서버에 업로드됩니다.
FloHimself

1
감사합니다. 그러나 파일을 저장하려고 할 때 오류가 발생했습니다.E382: Cannot write, 'buftype' option is set
Loom

2
당신은 :set buftype=""​vim에서 시도 할 수 있습니다 .
FloHimself

2
또한 vim은로 ~/.ssh/config원격 호스트를 읽고 해결합니다 vim scp://[host]/path.
Jangari

2
@stillanoob ::e scp://...
FloHimself

6

Vim 설정을 편집 할 권한이 없다고 할 때의 의미에 따라 서버에서 Vim을 원하는 방식으로 사용하는 방법이있을 수 있습니다. .vimrc예를 들어 공유 사용자로 로그인 하여 사용자를 변경할 수 없지만 여전히 파일을 작성하고 파일이라고하는 파일을 작성한 Loom.vimrc다음 -u스위치를 사용하여 Vim을 호출 할 수 있습니다.

vim -u ~/Loom.vimrc file_to_edit

그런 다음 별칭을 사용할 수도 있습니다 alias vim='vim -u ~/Loom.vimrc'. 일반적인 방법으로 Vim을 사용할 수 있으며 여전히 사용자 지정 .vimrc파일을 로드합니다 . 이 별칭은 로그 아웃 한 후에도 유지되지 않으므로 실수로 사용자 정의 된 Vim을 사용하는 다른 사람에 대해 걱정할 필요가 없습니다.


2

얼마나 많은 파일과 어떤 종류의 파일을 편집하길 원하는지에 따라, 이것은 당신이 여기서하고 싶은 것이 아닐 수도 있지만 언급 할 가치가 있다고 생각합니다. 원격 서버에서 파일을 편집해야하지만 자신의 작업 스테이션에있는 모든 것을 사용하려는 경우 머신에서 일종의 개정 제어 시스템 을 사용하려고 할 수 있습니다. 이렇게하면 선택한 소프트웨어를 사용하여 자신의 컴퓨터에서 로컬 복사본을 수정하고 변경 사항을 커밋 한 다음 대상 컴퓨터에서 로컬 복사본을 업데이트 할 수 있습니다. 편안하다고 생각되는 소프트웨어로 파일을 편집하는 것 외에도 각 파일과 관련된 변경 기록 이 있다는 부가 가치가 있습니다.

여기 에 대비 하여 개정 제어 소프트웨어 목록이 있습니다.


변경 사항을 커밋하고 같은 것을 git푸시 github하고 변경 사항을 github로컬 컴퓨터 에서 가져 와서 변경 사항을 적용하는 것과 같은 사용법을 제안하고 있습니까?
alpha_989

복잡한 코드 변경에는 가능하지만 간단한 코드 변경에는 가능합니다. @FloHimself 또는 shivams가 언급 한 것은 구현하기가 더 쉽습니다.
alpha_989

1

Mr. Potts의 답변을 확장하려면 위의 작업을 수행 한 다음 .bash_profile (또는 셸이 사용하는 것)에 다음과 같이 입력하십시오.

if [[ "$(who mom loves | awk ' { print $1 }' )" == "Loom" ]]; then 
         alias vim="vim -u ~/.Loom_vimrc"  
         fi  

여기서 Loom은 로그인 한 원래 사용자 ID입니다.

개인 계정이 아닌 공유 계정으로 로그인 한 경우 sudo suing을 사용하는 경우 Von Neuman이 귀하의 영혼에 자비를 느끼면 길을 잃을 수 있습니다.

나는 이것을 주석에 넣었을 것이지만, 코드를 전혀 형식화 할 수는 없었다.


0

vim 세션이 이미 실행중인 경우

:silent e scp://user@myserver[:port]//path/to/file.txt

:silent전면은 억제 할 Press Enter to Continue메시지

e scp://user@myserver[:port]//path/to/file.txtExremnote 파일을 편집 하는 mode 명령입니다.

BitVise SSHDWindows 10에서 실행하고 Ubuntu 16.04에서 VIM 실행을 사용하여 테스트


이것은을 억제하는 것이 그냥 참고 Press Enter to Continue하지만 이후에, 초기 로딩:w
Sparhawk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.