나는 시작했다 vim
. 일시중지했습니다( Ctrl+ Z). 그래서 저는 터미널 세션에 있고 vim
동일한 세션(새 탭)을 사용하여 일부 파일을 열고 싶습니다 . vim
새 세션에서 파일을 열 수 있습니다 . 실제로 파일 경로를 구성할 수 있습니다.예를 들어,
vim `find $PWD -name build.xml`
실행 중인 vim 세션 내에서 호스팅된 터미널 세션에서 이 파일을 열 수 있습니까?
답변1
문제는 Ctrl--Z
Ctrl- 를 사용하여 프로세스를 일시 중지 하면 Z프로세스는 신호를 수신 하고 신호가 발생할 SIGTSTP
때까지 모든 실행이 중지됩니다(즉, 더 이상 CPU 주기가 없음) . 일시 정지 중에는 명령이나 입력을 보낼 수 없습니다.SIGCONT
vim
즉, 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
.