외부에서(터미널에서) vim을 실행하여 파일 열기

외부에서(터미널에서) vim을 실행하여 파일 열기

나는 시작했다 vim. 일시중지했습니다( Ctrl+ Z). 그래서 저는 터미널 세션에 있고 vim동일한 세션(새 탭)을 사용하여 일부 파일을 열고 싶습니다 . vim새 세션에서 파일을 열 수 있습니다 . 실제로 파일 경로를 구성할 수 있습니다.예를 들어,

vim `find $PWD -name build.xml`

실행 중인 vim 세션 내에서 호스팅된 터미널 세션에서 이 파일을 열 수 있습니까?

답변1

문제는 Ctrl--Z

Ctrl- 를 사용하여 프로세스를 일시 중지 하면 Z프로세스는 신호를 수신 하고 신호가 발생할 SIGTSTP때까지 모든 실행이 중지됩니다(즉, 더 이상 CPU 주기가 없음) . 일시 정지 중에는 명령이나 입력을 보낼 수 없습니다.SIGCONTvim

즉, Ctrl- 를 사용하지 마십시오 Z.

그러나 vim이 기능을 활성화한 상태로 컴파일한 경우 및 옵션을 clientserver사용할 수 있습니다 .--servername--remote-*

사용vim --remote

vim세션을 처음 시작할 때 사용합니다. vim --servername VIM [filename ...](빈 세션으로 시작하려는 경우 파일 이름은 선택 사항입니다.)

터미널에서 실행해 보세요. 이제 다른 터미널 창, 탭, 컴퓨터 vim --remote등 의 명령을 통해 제어할 수 있습니다. 파일을 엽니다(예:파일.txt기존 세션의 새 탭에서 vim:

vim --remote-tab file.txt

사용할 vim내부 기능 :tabfind( :help find자세한 내용은 참고자료 참조):

vim --remote-send ":tabfind filename.txt<CR>"

find(1)질문에 요청한 대로 시스템 프로그램을 사용하려면 다음 단계를 따르세요 .

vim --remote-tab `find $PWD -name build.xml`

여러 회의

--servername원하는 경우 다른 이름을 지정할 수도 있습니다 . 이는 유용합니다.많은 종류의vim 세션. 이 경우 --servername매번 매개변수를 제공해야 합니다.

vim --servername HAMBURGER # Start new session named "HAMBURGER"
vim --servername HAMBURGER --remote-tab `find $PWD -name BACON`

물론 이 모든 것을 하나의 쉘 스크립트 또는 두 개로 결합하여 입력 시간을 절약할 수 있습니다.

답변2

내부에서 vim다음을 사용할 수 있습니다.

:tabe `find $PWD -name build.xml`

답변3

다른 답변이 더 명확하게 들리지만 해커로서 다음과 같은 기능을 사용할 수 있습니다.

for-vim () {
  printf %s "$@" > ~/.for-vim &&
    perl -le 'require "sys/ioctl.ph"; ioctl(STDIN, &TIOCSTI, $_)
     for split "", "\e:tabe `cat ~/.for-vim`\r"' &&
    fg %vim
}

다음과 같이 사용됩니다:

for-vim "$(find "$PWD" ...)"

파일 경로를 ~/.for-vim파일에 저장하고 <ESC>:tabe ~/.for-vm<CR>TIOCSTI ioctl()을 사용하여 를 복원하기 전에 터미널의 입력 버퍼에 삽입합니다 vim.

관련 정보