Programing

Vim 내부에서 터미널을 어떻게 실행합니까?

lottogame 2020. 3. 23. 08:03
반응형

Vim 내부에서 터미널을 어떻게 실행합니까?


나는 Emacs에 익숙하지만 Vim에서 내가 더 좋아하는 것을 찾으려고 노력하고 있습니다.

내가 Emacs에 대해 좋아하는 것 중 하나는 Emacs 내부에서 터미널을 실행할 수 있다는 것입니다. Vim 내부에서 가능합니까? Vim에서 명령을 실행할 수 있다는 것을 알고 있지만 탭 내부에서 터미널을 실행할 수 있기를 바랍니다.


나는 screen이와 같은 것을 확실히 추천 할 것입니다. Vim은 텍스트 편집기이며 쉘이 아닙니다.

내가 사용하는 것이 Ctrl+AS수평 현재 창을 분할하거나 우분투의 화면과 다른 패치 버전에서, 당신이 사용할 수있는 Ctrl+A|수직 분할 (파이프). 그런 다음 창 사이를 전환하기 위해 Ctrl+ATab(또는 Ctrl+ACtrl+I입력하기가 쉬운 일부 시스템에서 동일하게) 사용 하십시오. 창의 크기와 배열을 변경하는 다른 명령이 있습니다.

또는 덜 고급 사용은 screen여러 개의 전체 화면 창을 열고 그 사이를 전환하는 것입니다. 이것은 내가 일반적으로하는 일이며, 때때로 분할 화면 기능 만 사용합니다.

GNU 화면 서바이벌 가이드 당신은 그것의 사용에 익숙하지 않은 경우 문제는 좋은 팁을 가지고 있습니다.


구식 2011 년 8 월

Conque Shell ( GitHub 에도 있음)을 확인하십시오 . 쉘뿐만 아니라 vim 내에서 대화 형 프로그램을 실행할 수 있습니다.


정확히 무엇을 달성하려고하는지 잘 모르겠지만 (Emacs를 사용한 적이 없습니다) Vim에서 다음을 입력하여 명령을 실행할 수 있습니다.

:! somecommand [ENTER]

그리고 여러 명령을 입력하거나 쉘에서 잠시 동안 놀고 싶다면 항상 다음을 사용할 수 있습니다.

:! bash (or your favourite shell) [ENTER]

명령 또는 셸이 종료되면을 눌러 Enter편집기 창으로 돌아갈 수 있는 옵션이 제공됩니다

Vim은 Vim 창 / 탭 내에서 본격적인 쉘을 실행하는 것처럼 의도적으로 가벼우 며 편집자가 아닌 유형의 작업을 수행하는 능력이 부족하지만 위에서 언급 한 것처럼 vim-shell과 같은 타사 애드온이 있습니다. 그런 종류의 일을합니다.

일반적으로 Vim과 내 셸 (Bash) 사이를 전환하려면 CTRL+ Z를 눌러 Vim 프로세스를 일시 중지하고 셸에서 재생 한 다음 Vim으로 돌아가고 싶을 때 'fg'를 입력하십시오. 쉘은 훌륭하고 분리되어 있습니다.


이 문제를 해결하는 방법은 다음과 같습니다.

  • Ctrl+로 Vim을 일시 중지합니다 Z.
  • 터미널에서 놀고
  • 그런 다음 명령을 입력하여 Vim으로 떠난 곳으로 정확하게 돌아갑니다 fg.

:sh그런 다음 ctrl+d다시 들어가십시오 (bash)

업데이트 :

ctrl+dvim에서 run으로 매핑 하여 :shbash와 vim 사이를 빠르게 전환 할 수 있습니다.

noremap <C-d> :sh<cr>


사용중인 Vim 버전에서 활성화 된 경우 :term명령 으로 터미널을 시작할 수 있습니다 .

터미널 창 지원은 Vim 8에 추가되었습니다.이 기능은 Vim을 + 터미널 기능으로 컴파일 할 때 활성화 할 수있는 선택적 기능입니다. Vim 버전이 터미널을 지원하는 경우 :echo has('terminal')"1"을 출력합니다.

입력 :term하면 터미널 작업 모드로 전환되어 예상대로 터미널을 사용할 수 있습니다.

터미널 - 작업 모드를 누르면 Ctrl-W N또는 Ctrl-\ Ctrl-N으로 모드 전환 터미널 - 일반 커서가 이동하고 명령 빔의 유사으로 실행 할 수 있으며, 일반 모드. 터미널 작업 모드 로 다시 전환하려면을 누르십시오 i.

다른 답변은 Neovim의 유사한 기능을 언급합니다.


결국 :terminal2017 년에 기본 명령이 vim에 추가되었습니다.

다음은 : terminal readme 에서 발췌 한 것입니다 .

이 기능은 Vim 창에서 터미널 에뮬레이터를 실행하기위한 것입니다. 터미널 에뮬레이터에 연결하여 작업을 시작할 수 있습니다. 예를 들어, 쉘을 실행하려면 다음을 수행하십시오.

 :term bash

또는 빌드 명령을 실행하려면

 :term make myprogram

작업은 Vim에서 비동기식으로 실행되며 다른 창에서 편집하는 동안 작업의 출력을 표시하도록 창이 업데이트됩니다.


이 질문은 다소 오래되었지만 그것을 찾는 사람들에게는 새로운 해결책이 있습니다. Neovim에는 ConqueTerm이 시도한 것과 똑같은 본격적인 일류 터미널 에뮬레이터가 포함되어 있습니다. 간단하게 실행하십시오 :term <your command here>.

<C-\><C-n>용어 모드를 다시 일반 모드로 종료합니다. 나와 같고 이스케이프가 여전히 종료 모드를 종료하는 것을 선호하는 경우이를 nvimrc에 추가 할 수 있습니다.

tnoremap <ESC><ESC> <C-\><C-N>

그런 다음 ESC를 두 번 누르면 터미널 모드가 다시 일반 모드로 종료되므로 여전히 실행중인 명령이 작성하는 버퍼를 조작 할 수 있습니다.

이 답변을 게시 할 때 nvim이 개발 중이므로 터미널 모드를 종료하는 다른 방법이 추가 될 수 있습니다. Ctrl+\Ctrl+n거의 모든 모드에서 일반 모드 전환 함에 따라이 답변이 잘못 될 것으로 기대하지는 않지만 작동하지 않으면이 답변이 오래되었을 수 있습니다.

https://github.com/neovim/neovim


:term

이 기능은 Vim 8.1에서 새로 추가되었지만이 게시물은 최근에 릴리스 된 상태이므로 사용하려면 업데이트해야합니다.


나는 질문에 직접 대답하지는 않지만 좋은 접근 방법이라고 생각합니다. 아무도 tmux에 대해 언급하지 않았습니다 (또는 적어도 독립형 답변으로는 아닙니다). Tmux는 화면과 같은 터미널 멀티플렉서입니다. 대부분의 것은 멀티플렉서 둘 다로 만들 수 있지만, 구성하기가 더 쉽습니다. 또한 tmux는 현재 화면보다 적극적으로 개발되고 있으며 주변 환경을 구성하는 도구와 같은 매우 큰 생태계가 있습니다.

vim에는 ViMUX라는 플러그인도 있습니다.이 플러그인 은 두 도구 간의 상호 작용에 많은 도움이됩니다. 다음을 사용하여 명령을 호출 할 수 있습니다.

:call VimuxRunCommand("ls")

이 명령은 현재 창 vim이있는 작은 수평 분할을 만듭니다.

전체 명령을 실행하지 않으려는 경우 프롬프트에서 실행할 수도 있습니다.

<Leader>vp :VimuxPromptCommand<CR>

충분하지 않았으므로 최소한 6 개의 '플랫폼 특정 플러그인'이 있습니다.

좋은 "사용 사례"는 다음 과 같습니다. Spork 및 Guard와 함께 Vimux 및 Turbux를 사용하여 주문형 테스트


누군가 이미 https://github.com/Shougo/vimshell.vim을 제안 했지만 그 이유는 언급하지 않았습니다. 결과적 으로이 질문에서 벗어날 때 다른 (훨씬 높은 순위) 옵션을 시도하는 데 많은 시간을 낭비했습니다.

Shougo / vimshell 이 그 해답입니다. 이유는 다음과 같습니다.

VimShell은 터미널 에뮬레이터 일뿐 아니라 일반 및 시각적 모드에서 터미널 출력을 탐색 할 수 있습니다. 따라서 명령을 실행하면 키보드 만 사용하여 복사하여 붙여 넣기 원하는 결과가 출력됩니다 ... VimShell 이이를 다룹니다.

NeoVim의 : terminal 명령을 포함하여 언급 된 다른 옵션은이 작업을 수행하지 않습니다. Neovim의 : 터미널은 근접하지만 2017 년 2 월 18 일 현재 최소한 다음과 같은 방식 으로 부족합니다 .

  • VimShell과 같은 지점에 커서를 유지하는 대신 커서를 버퍼의 끝으로 이동합니다. 엄청난 시간 낭비.

  • 지원하지 않습니다 modifiable = 1참조 Github에서에서 이에 대한 토론을 , VIM-easymotion 같은 도움이 플러그인을 사용할 수 없습니다.

  • Vimshell처럼 줄 번호 표시를 지원하지 않습니다.

Neovim의 : terminal을 포함하여 다른 옵션에 시간을 낭비하지 마십시오. VimShell과 함께하십시오.


:sh명령을 살펴볼 수도 있습니다 ( :help shVim 참조 ).

다양한 명령


Vim 8.1의 새로운 주요 기능은 Vim 창에서 터미널 실행을 지원하는 것입니다.

:term Vim 내부의 다른 창에서 터미널을 엽니 다.


아니 당신은 할 수 없습니다:

http://vimdoc.sourceforge.net/htmldoc/tips.html#shell-window


내가 아는 유일한 방법은 타사 패치 인 vim-shell 을 사용 하는 것입니다.


나는 이것을 지금 사용하고 있습니다. VimShell


vim 내부의 거의 모든 기능을 갖춘 vterm을 사용해보십시오 . 그것은 역사와 명확한 기능으로 약간 버그가 있으며 여전히 개발 중이지만 여전히 꽤 좋습니다.

참고 URL : https://stackoverflow.com/questions/1236563/how-do-i-run-a-terminal-inside-of-vim

반응형