Vim에서 탭 사용을 중지했습니다.

4643 단어 neovimVim
Vimmer입니다.

Vim에서 탭 페이지를 사용하는 것을 중지했습니다. 어떻게 했을까, 대신에 버퍼를 사용하기 시작했습니다.

매우 편안하기 때문에 소개합니다.



거의 NeoVim을 터미널로 사용하기 위해 한 일 - Qiita의 연속입니다.

했던 일



Denite 도입



Shougo/denite.nvim: Dark powered asynchronous unite all interfaces for Neovim/Vim8

진지하고 빠릅니다. Unite는 사용할 수 없다.

이런 식으로 mapping하고 있습니다.
" Denite
nnoremap <Leader>p :Denite buffer file_rec<CR>
nnoremap <Leader>b :Denite buffer<CR>
call denite#custom#map('insert', "<Up>", '<denite:move_to_previous_line>', 'noremap')
call denite#custom#map('insert', "<Down>", '<denite:move_to_next_line>', 'noremap')

과연 file_rec 가 들어가면 조금 시간이 걸리므로, 이용은 최소한으로 유지하고 있습니다.

:set hidden



저장되지 않은 상태에서 버퍼를 전환해도 경고가 발생하지 않습니다.

:wq 대신 정의



NeoVim을 터미널로 사용하기 위해 한 일 - Qiita 에도 썼습니다만, 이런 느낌으로 하고 있습니다.
nnoremap <Leader>q :up<CR>:call CloseBuf()<CR>
<Leader>q 로 변경이 있으면 저장+버퍼를 닫는 동작이 됩니다.

터미널 버퍼의 이름을 실행중인 프로세스 이름을 포함하는 것으로 변경



단말의 버퍼명은 디폴트로 모두 term://〜:/usr/bin/fish 같은 느낌으로, 단말로 실행중의 프로그램명이라든지는 들어가지 않네요. 이것으로 무엇이 곤란한가 하면, 단말을 복수 열면 Denite상에서 구별이 되지 않습니다.

예를 들어 "rails server"를 실행중인 버퍼는 rails라든지 fuzzy-search하고 싶기 때문에 프로세스 이름을 넣기로 합니다.
autocmd BufLeave * if exists('b:term_title') && exists('b:terminal_job_pid') | execute ":file term" . b:terminal_job_pid . "/" . b:term_title
file 는 파일명을 변경하는 명령이지만, 단말이라면 무엇이든 괜찮은 것 같습니다. 단말의 타이틀을 포함하고 있을 뿐이므로, 단말 쪽으로 타이틀에 프로세스명등 넣어 주세요.

PID를 넣고 있는 것은, Vim에서는 버퍼명이 입으면 에러가 나와 버리는 것 같기 때문에, 독특화의 의미입니다.

이런 느낌입니다.



Buffer를 사용하는 이점


  • fuzzy-search 가능
  • 탭 바가 아니다 → 근사하다
  • Vimmer 같은
  • file_rec와 결합하면 열려있는 파일과 열려 있지 않은 파일을 인식 할 필요가 없습니다 (NERD_Tree 필요 없음).

    Buffer 사용 (탭 없음) 단점


  • 화면 분할 상태를 저장할 수 없음
  • 기본적으로 분할하지 않고 할 수밖에 없다

  • 타입수가 기본적으로 증가했다
  • 자신은 현재 탭보다 스트레스가 적기 때문에, 좋아하는 문제의 생각도 한다


  • 화면 분할의 문제에 대해서는, 친숙한 조작 방법으로 Buffer 대신에 탭 페이지를 fuzzy-search 하는 것도 노력하면 할 수 있을 것 같기 때문에, 마음이 향하면 할지도 모릅니다.

    좋은 Vim Life!

    좋은 웹페이지 즐겨찾기