파일 관리자나 명령줄에서 동일한 Vim 인스턴스의 새 파일을 어떻게 열 수 있나요?

파일 관리자나 명령줄에서 동일한 Vim 인스턴스의 새 파일을 어떻게 열 수 있나요?

나는 일반적으로 Vim에서 파일 시스템을 탐색하지 않고 대신 파일 관리자를 사용하거나 때로는 오래된 대화형 셸(명령줄)을 사용합니다.

명령줄이나 터미널 기반 파일 관리자(MC, Vifm, Ranger...)에서 내보내면 vim fileVim이 터미널을 장악하여 셸이나 파일 관리자를 차단하므로 탐색 목적이 완전히 무효화됩니다. 물론 GUI 파일 관리자는 터미널에서 실행되지 않기 때문에 이조차 불가능합니다.

일반적인 해결책은 xterm -e vim file & 원하는 각 파일을 자체 터미널에서 여는 것입니다. 그러나 잠시 후 각각 파일이 포함된 다양한 열린 터미널이 생기고 AltTab이를 순환하는 것이 번거로워집니다.

내 탐색 유틸리티(무엇이든)의 새 버퍼/탭에서 각각의 새 파일을 열 수 있는 방법이 있습니까?동일한기존 Vim 인스턴스가 있습니까?

답변1

반드시 먼저 vim --version | grep clientserver반납해 주십시오 +clientserver. -대신 반환되는 경우 +기능을 활성화하는 쉬운 방법은 Gvim을 사용하지 않더라도 설치하는 것입니다. 데비안과 우분투에 sudo apt install vim-athena 설치하세요 . Gvim을 건너뛰고 싶은 숙련된 사용자를 위한 또 다른 옵션은 다음과 같습니다.플래그를 사용하여 소스에서 Vim 빌드--with-x=yes --disable-gui.

이제 준비되었으므로 +clientserver다음 내용으로 파일을 만듭니다 vimserver.

#!/bin/sh
serv=${S:-xtvim}
if vim --serverlist | grep -qxiF "$serv"; then
    vim --servername "$serv" --remote-tab "$@"
else
    xterm -e vim -p --servername "$serv" "$@" &
fi

vimserver디렉토리에 넣는 것을 잊지 마세요$PATH 실행 가능하게 만드세요 chmod +x vimserver. 다른 터미널을 사용하는 경우 맨페이지에서 새 터미널 창 에서 명령을 실행하는 데 적합한 플래그를 찾아보세요 1 .

일부 파일에 대해 테스트합니다(여러 파일을 매개변수로 전달할 수 있음).

vimserver file1 file2
vimserver file3 file4 file5
S=xyz vimserver file6

각 파일은 "XTVIM"이라는 동일한 Vim 인스턴스의 새 탭에서 열립니다. 단, file6다른 인스턴스 "XYZ"로 이동합니다. 새 파일을 새 버퍼에 넣으려면 해당 플래그를 변경하고 제거하면 --remote-tab됩니다 .--remote-p

설명하다vimserver

이 변수에 할당된 서버 이름은 serv기본적으로 "xtvim"이지만, 위에 표시된 것처럼 환경 변수를 사용하여 다른 이름을 지정할 수 있습니다 S.

servGrep이 서버 목록에서 찾는 정확한 값입니다(그러나 Vim은 서버 이름을 대문자로 강제하기 때문에 대소문자를 구분하지 않습니다). 발견되면 서버는 파일을 로드하고, 그렇지 않으면 새 터미널이 시작되어 서버가 이를 사용합니다.

포커스 요청

터미널은 기존 서버에서 파일을 열 때 포커스를 얻지 못합니다.인스턴스 이름Windows의 경우 Xdotool 라인을 추가하면 문제가 해결됩니다.

#!/bin/sh
serv=${S:-xtvim}
if vim --serverlist | grep -qxiF "$serv"; then
    xdotool search --classname "^$serv$" windowactivate
    vim --servername "$serv" --remote-tab "$@"
else
    xterm -name "$serv" -e vim -p --servername "$serv" "$@" &
fi

이 옵션 덕분에 -nameXdotool은 Vim 창의 위치를 ​​지정하고 Vim 창에서 포커스를 요청할 수 있습니다. 일부 터미널에는 이 옵션이 없지만 버전 3.20210804.2부터 Xdotool --role에서도 사용할 수 있습니다 .search

파일 관리자

비빔

편집하다~/.config/vifm/vifmrc:

filextype <text/*> vimserver %f

시각적 모드 또는 태그 지정을 통해 여러 파일을 동시에 열 수 있습니다.

자정 사령관

확장 파일 편집 ~/.config/mc/mc.ext:

type/text
 Open=vimserver %s

MC에서는 여러 파일을 표시할 수도 있습니다.

GUI 파일 관리자

대부분의 경우 프로세스는 텍스트 파일을 마우스 오른쪽 버튼으로 클릭하는 것입니다 Open with... > Custom command line / Use a custom command. 명령 텍스트 필드에 vimserver확인란(있는 경우)을 입력하고 표시하거나 버튼을 눌러 기본값으로 설정합니다.

Gvim 2 에 문제가 없다면 걱정 하지 마세요 vimserver. 그냥 사용하세요 gvim --remote-tab-silent.

1: Gnome-terminal, Xfce4-terminal 및 Terminator는 이 -x플래그를 대신 사용합니다 -e.
2: Gvim 사용에 대한 Goldilocks의 의견 클라이언트-서버 패턴의 실제 용도는 무엇입니까?.

관련 정보