NeoVim을 터미널로 사용하기 위해 한 일

6437 단어 neovimTerminal
Vimmer입니다.

"모든 조작은 Vim 내에서 이루어져야 한다"는 철학 하에서 Vim을 gnome-terminal 대신에 상용하고 있습니다.

오늘은 그 환경을 만들기 위해 한 일을 정리합니다.

내 init.vim은 여기에서 볼 수 있습니다 -> dotfiles-nvim/init.vim at master · acomagu/dotfiles-nvim

: 터미널에서 부모의 Vim을 조작 할 수있게합니다.



모처럼 Vim 내에서 단말기가 열리면 거기에서 파일을 열고 싶네요. (Vim을 중첩하고 싶지 않아요)

neovim-remote 의 차례입니다.

말하자면, Vim의 단말내에서 nvr file 라고 치면 부모의 Vim에서 file 가 열립니다. 최고.

설치 방법은 링크 대상입니다!

그것을 응용하여 저는 다음과 같은 것도 사용하고 있습니다.
function nvcd
    nvr -c "cd "(realpath $argv)
end

(fish입니다)

이제 nvcd . 그렇게하면 Vim의 현재 디렉토리가 터미널의 현재 디렉토리로 이동합니다.

빈 버퍼가 열리면 터미널을 열도록 설정


" Open terminal on new buffer
autocmd VimEnter * if @% == '' && s:GetBufByte() == 0 | call Term()
function! s:GetBufByte()
  let byte = line2byte(line('$') + 1)
  if byte == -1
    return 0
  else
    return byte - 1
  endif
endfunction

새롭고 빈 버퍼가 열렸을 때, 단말을 열도록 하고 있습니다. 이것으로 Vim의 기동시/새로운 탭을 열었을 때 등에는 자동적으로 :terminal 가 실행된 상태가 됩니다.
Term() 함수는 나중에 설명합니다.

마지막 버퍼가 닫히면 Vim을 종료합니다.



왜 버퍼? 라는 점은 이쪽을 봐 주세요→ Vim에서 탭을 사용하지 않기 - Qiita
function! Term()
  call termopen(&shell, {'on_exit': 'OnExit'})
endfunction

function! CloseLastTerm()
  if len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1
    :q
  endif
endfunction

function! OnExit(job_id, code, event)
  if a:code == 0
    call CloseLastTerm()
  endif
endfunction

기본적으로 단말기는 call Term() 로 시작합니다. 그러면 단말이 종료했을 때, 나머지의 버퍼가 하나이면 :q 그리고 Vim이 종료합니다.

그런 다음 터미널 이외의 버퍼에도 적용합니다.
function! CloseBuf()
  if len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1
    :q
  else
    :bd
  endif
endfunction

nnoremap <Leader>q :up<CR>:call CloseBuf()<CR>

이제 (단말이 아닌 버퍼에서) <Leader>q 를 누르면 비슷한 동작을 얻을 수 있습니다.

실제로는 autocmd BufDelete , 결과적으로 열려 있는 버퍼의 수가 2 가 되어 버려 잘 판별할 수 없었습니다.

Ctrl-Alt-T로 Vim 열기



마무리를 위해 Ubuntu에서 Ctrl-Alt-T를 눌렀을 때 Vim을 열어야합니다. (유석에 update-alternatives 하는 것은 무서웠기 때문에...)
gnome-terminal -e nvim

이것을 각자 Unity나 GNOME의 GUI로부터 설정하면 좋다고 생각합니다.

(덤) : terminal에서 빠져 나가는 명령을 Remap합니다.



이것은 하고 있는 사람도 많다고 생각합니다만, 이런 느낌입니다.
tnoremap <C-j> <C-\><C-n>

이상을 설정하면, 이런 느낌이 됩니다.



좋은 Vim Life!

좋은 웹페이지 즐겨찾기