:의 출력을 가질 수 있습니까?! 전체 창이 아닌 분할 명령?


11

두 개의 스플릿이있는 vim 세션이 있으면 :!명령을 실행할 때 결과가 전체 창에 표시됩니다. 활성 스플릿에서만 출력을 표시 할 수 있습니까?


2
아니요, 불가능합니다. if :!명령은 명령 행에 표시되며 그 중 하나만 있으며 화면 맨 아래에만있을 수 있습니다. ... 현재의 아래 분할 : 내가 생각할 수있는 최선은 새로운 버퍼를 / 만드는
마틴 Tournoij

@Carpetsmoker, 나를 위해, 출력은 :!명령 줄로 이동하지 않습니다. 대신 vim 세션이 사라지고 vim호출 된 이전 에 인쇄 된 내용을 포함하여 전체 터미널 창에 터미널 출력 이 표시됩니다.
drs

1
사용중인 터미널 및 / 또는 TERM설정 때문일 수 있습니다 .
Martin Tournoij

이 차이는 altscreen (in screen) 또는 alternate-screen (in tmux)과 관련이 있습니다.
tommcdo

답변:


8

이 명령을 사용할 수 있습니다 :

:new | 0read ! command

이렇게하면 새로운 분할이 열리고 명령의 출력이이 분할에 표시됩니다 ( 앞서 언급 한대로 현재 활성 분할은 아님).

새로운 -새로운 분할을 만듭니다

읽기 -명령 출력을 얻으려면

명령 -실제 명령


6

다음과 같이 명령을 내릴 수 있습니다.

  1. 새로운 분할 (또는 탭)을 엽니 다
  2. 명령을 실행하고 해당 분할 (또는 탭)에 결과를 표시하십시오.

명령은 다음과 같습니다.

:Rsplit command

또는

:Rtab command

당신에 .vimrc당신이 쓸 수 있습니다 :

" execute a command and show its output in a split window
command! -nargs=* -complete=shellcmd Rsplit execute "new | r! <args>"

" execute a command and show its output in a new tab
command! -nargs=* -complete=shellcmd Rtab execute "tabnew | r! <args>"

으로 자신 만의 명령을 만드는 방법을 찾을 수 있습니다 :help :command.


1

불가능합니다. tmux (IIRC), 화면 등과 같은 다른 도구로 화면을 분할해야합니다.

그러나 실행 된 프로그램과 상호 작용할 필요가 없으면 원하는 창 (vim 의미에서 :h windows) 으로 결과를 직접 가져올 수 있습니다 :r!command line.:h :r!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.