ssh를 통해 도달 할 수있는 서버에있는 파일을 편집해야합니다.
vim
워크 스테이션 에서 사용자 지정 하여 이러한 파일을 편집 하고 싶습니다 ( vim
원격 서버의 설정 을 변경할 권한이 없습니다 ). 때로는 sublime text
또는 다른 GUI 편집기 로 파일을 편집하고 싶습니다 .
물론 이러한 파일을 다운로드하여 로컬로 편집 한 후 서버에 다시 업로드 할 수 있습니다. 더 우아한 솔루션이 있습니까?
ssh를 통해 도달 할 수있는 서버에있는 파일을 편집해야합니다.
vim
워크 스테이션 에서 사용자 지정 하여 이러한 파일을 편집 하고 싶습니다 ( vim
원격 서버의 설정 을 변경할 권한이 없습니다 ). 때로는 sublime text
또는 다른 GUI 편집기 로 파일을 편집하고 싶습니다 .
물론 이러한 파일을 다운로드하여 로컬로 편집 한 후 서버에 다시 업로드 할 수 있습니다. 더 우아한 솔루션이 있습니까?
답변:
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을 사용하십시오.
osxfuse
및 을 설치해야 sshfs
합니다. 이들은 (자작 설치할 수 있습니다 brew install sshfs
및 brew cask install osxfuse
, 또는에서 얻은 패키지에서 osxfuse.github.io
다음 scp
과 같이하면됩니다.
vim scp://user@myserver[:port]//path/to/file.txt
//
절대 경로를 올바르게 해결하는 데 필요한 서버와 경로 사이에 두 개의 슬래시 가 있습니다. 첫 번째 슬래시는 구문이며, 두 번째 슬래시는 평소와 같이 원격 사용자의 루트 디렉토리를 지정합니다. 홈 디렉토리에서 시작하려면 [:port]/~/path/to/file.txt
.) [:port]
는 선택 사항입니다.
이것은 vim의 netrw.vim 표준 플러그인에 의해 처리됩니다 . 몇 가지 다른 프로토콜이 지원됩니다.
E382: Cannot write, 'buftype' option is set
:set buftype=""
vim에서 시도 할 수 있습니다 .
~/.ssh/config
원격 호스트를 읽고 해결합니다 vim scp://[host]/path
.
:e scp://...
Vim 설정을 편집 할 권한이 없다고 할 때의 의미에 따라 서버에서 Vim을 원하는 방식으로 사용하는 방법이있을 수 있습니다. .vimrc
예를 들어 공유 사용자로 로그인 하여 사용자를 변경할 수 없지만 여전히 파일을 작성하고 파일이라고하는 파일을 작성한 Loom.vimrc
다음 -u
스위치를 사용하여 Vim을 호출 할 수 있습니다.
vim -u ~/Loom.vimrc file_to_edit
그런 다음 별칭을 사용할 수도 있습니다 alias vim='vim -u ~/Loom.vimrc'
. 일반적인 방법으로 Vim을 사용할 수 있으며 여전히 사용자 지정 .vimrc
파일을 로드합니다 . 이 별칭은 로그 아웃 한 후에도 유지되지 않으므로 실수로 사용자 정의 된 Vim을 사용하는 다른 사람에 대해 걱정할 필요가 없습니다.
얼마나 많은 파일과 어떤 종류의 파일을 편집하길 원하는지에 따라, 이것은 당신이 여기서하고 싶은 것이 아닐 수도 있지만 언급 할 가치가 있다고 생각합니다. 원격 서버에서 파일을 편집해야하지만 자신의 작업 스테이션에있는 모든 것을 사용하려는 경우 머신에서 일종의 개정 제어 시스템 을 사용하려고 할 수 있습니다. 이렇게하면 선택한 소프트웨어를 사용하여 자신의 컴퓨터에서 로컬 복사본을 수정하고 변경 사항을 커밋 한 다음 대상 컴퓨터에서 로컬 복사본을 업데이트 할 수 있습니다. 편안하다고 생각되는 소프트웨어로 파일을 편집하는 것 외에도 각 파일과 관련된 변경 기록 이 있다는 부가 가치가 있습니다.
여기 에 대비 하여 개정 제어 소프트웨어 목록이 있습니다.
git
푸시 github
하고 변경 사항을 github
로컬 컴퓨터 에서 가져 와서 변경 사항을 적용하는 것과 같은 사용법을 제안하고 있습니까?
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이 귀하의 영혼에 자비를 느끼면 길을 잃을 수 있습니다.
나는 이것을 주석에 넣었을 것이지만, 코드를 전혀 형식화 할 수는 없었다.
vim 세션이 이미 실행중인 경우
:silent e scp://user@myserver[:port]//path/to/file.txt
:silent
전면은 억제 할 Press Enter to Continue
메시지
과
e scp://user@myserver[:port]//path/to/file.txt
Ex
remnote 파일을 편집 하는 mode 명령입니다.
BitVise SSHD
Windows 10에서 실행하고 Ubuntu 16.04에서 VIM 실행을 사용하여 테스트
Press Enter to Continue
하지만 이후에, 초기 로딩:w
deb
기반 이 아니기 때문에 배포가 실패합니다apt-get
. (이 경우yum
또는zypper
있을 수 있습니다.) 또한 로컬 시스템에서 루트가 필요합니다. (이것은 나쁜 해결책은 아니지만 큰 전제 조건이 제공됩니다.)