Program Club

Vim 일반 모드에서 빠르게 버퍼 전환

proclub 2021. 1. 9. 10:24
반응형

Vim 일반 모드에서 빠르게 버퍼 전환


최근 에 Vim에서 "탭을 잘못 사용" 하고 있다는 사실을 알게되었습니다 . MiniBufExplorer를 통해 도움을 받아 Vim에서 버퍼를 사용하려고 시도 했지만 일반 모드에서 버퍼를 변경하는 데 얼마나 많은 키 입력이 필요하기 때문에 고통 스럽습니다. 탭, 난 그냥 할 수 gt또는 gT일반 모드에서 앞뒤로 탭 사이의 홉하고, 나 또한 할 수있는 NUMBERgt특정 탭으로 이동.

버퍼와, 나도와 명령 모드를 입력 할 필요가 :bn, :bp또는 MiniBufExplorer, 사용과 Ctrl + k또는 Ctrl + Up버퍼 창으로 최대 홉으로 오른쪽 또는 왼쪽으로 스크롤 h하고 l다음 공격 Enter의 I 원하는 버퍼를 선택할 수 있습니다. 또는 리더 시퀀스와 관련된 작업을 수행 할 수 있지만 항상 홈 행에서 여러 손가락을 제거해야합니다. 그것은 진짜 고통입니다.

일반 모드에서 버퍼를 전환하기 위해 일반 모드에서 동등한 전환 탭을 얻으려면 어떻게해야 합니까? gn/ gpfor :bn/ :bpand NUMBERgnfor :buf NUMBER?


이것을 .vimrc에 추가하십시오

map gn :bn<cr>
map gp :bp<cr>
map gd :bd<cr>  

gp을 다시 매핑 하고 gd있지만 ( :help gp, :help gd) 신경 쓰지 않을 수도 있습니다 .

키 스트로크 매핑 방법에 대한 자세한 내용은 :help map-overview및을 참조하십시오 :help map.txt.

Btw, 개인적으로 매핑 <leader>대신 사용 합니다 g. 내는 <leader>로 설정되어 ;있습니다. 이것은 내 <leader>키를 홈 행에 놓아 <leader>. :help mapleader를 변경하려면<leader>


일반적으로 버퍼 사이를 전환하는 방법 :buffer은 내장 된 자동 완성과 함께 명령 을 사용하는 :b prof<Tab>folder/path/LoginProfileFactory.php입니다. 들어 .

필요한 버퍼의 파일 이름 일부를 입력하기 만하면됩니다.

드물지만 실제로 원하는 버퍼 수를 기억하고 :b 3또는 같은 것을 사용합니다 :3b. 당신이 좋아하지 않는다고 언급 한 것을 보았습니다.:buf 3 그래서 Rumple Stiltskin:3b당신이 선호 하는 스타일에 대한 대안을 가지고 있습니다.


`Ctrl- ^ ' 는 숫자 버퍼로 전환합니다.


.vimrc에 다음 줄이 있습니다.

nnoremap  <silent>   <tab>  :if &modifiable && !&readonly && &modified <CR> :write<CR> :endif<CR>:bnext<CR>
nnoremap  <silent> <s-tab>  :if &modifiable && !&readonly && &modified <CR> :write<CR> :endif<CR>:bprevious<CR>

이제 Tab을 사용하면 다음 버퍼로 이동하고 Shift-Tab을 사용하여 이전 버퍼로 이동할 수 있습니다.


이것은 Nick Knowlson의 답변을 기반으로 하지만 거기에 내 의견을 확장하고 싶었습니다 ...

입력 :b <Tab>(공백 참고) 한 다음 Tab또는 / 를 사용하여 열린 버퍼를 순환합니다 .

... 이는 내가 사용하는 다른 모든 편집기와 브라우저에서 Ctrl+ Tab더 가깝게 만듭니다.

실제로 어떤면에서는 더 낫습니다 . / 화살표를 사용 하여 앞뒤로 이동할 수 있습니다 . 편집기 및 브라우저의 탭을 뒤로 이동하기 위해 Ctrl+ Shift+ Tab입력하는 데 엄지 손가락 + 손가락 푸를 피 합니다.

NB Shift+ Tab는 다음과 동일합니다.Tab

이것은 실제로 Windows 10에서 Win+ 와 같이 Tab처음 창을 열고 화살표 키를 사용하여 이동할 수 있습니다.

편집 : 버퍼를 사용하기 위해 고른 두 가지 추가 트릭이 있습니다.

  1. 에서 이 대답 나는이있다 .vimrc:

    nnoremap <leader>bb :buffers<cr>:b<space> 
    

    :ls/ :buffers명령을 열고 :b모든 버퍼와 그 번호가있는 목록을 볼 수 있으므로 버퍼 번호를 입력하기 만하면됩니다.

  2. 나는 또한

    nnoremap <leader><tab> :b#<cr>
    

    현재 버퍼와 가장 최근에 사용 된 버퍼 사이를 토글하는 것은 cd -디렉토리 사이를 앞뒤로 전환 할 때 하는 것과 비슷합니다.


플러그인 unimpaired.vim을 사용합니다.

이 매핑 정의 [b]b목록의 이전 및 다음 버퍼에 그 점프.

특정 버퍼로 점프하는 경우 내가 아는 가장 좋은 옵션은 언급 한 것입니다. :b<number>

다른 버퍼로 이동하면 다음을 입력하여 빠르게 돌아올 수 있습니다. <c-^>


Expanding on Rumple Stiltskin's answer, if you know that the file you want to get to is in buffer 4, for example, you can get there quickly with

4Ctrl-^

On my UK keyboard, I can actually do 4Ctrl-6, as explained in

:help CTRL-^

By the way, you can see the buffer numbers with

:buffers

I use LustyExplorer: I hit <leader>b to open a list of buffers then a couple of letters from the name of the buffer I want to open then enter. Easy.

But, you are not "using tabs incorrectly", you are using tabs the way you want. If it worked for you why go through the pain of unlearning your way to learn "the right way"?


I use F9 and F10 to move between the previous/next buffer with this mapping:

map <F9> :bprevious<CR>
map <F10> :bnext<CR>

For me this is the fastest way to switch buffers.


fzf.vim is another fast way to changes buffers using fuzzy matching. This plug-in ships with the default command:

:Buffers

which opens the list of all open buffers similar to :ls but a buffer can be (fuzzy) searched and selected. Opening the buffer in the current window is through enter, but can can also be opened in a new split (h or v) or tab using ^X ^V or ^T respectively.

Noteworthy is also:

:Lines

Which allows to search through the content of all open buffers. This can be handy if you forget the name of a buffer but you know what it should contain.


I think bufexplorer is a nice plugin to use. <leader>be brings up an interactive buffer explorer that lists all open buffers. You could quickly move through the list and Enter puts you in the selected buffer. Unlike LustyExplorer It has no dependency to ruby.

ReferenceURL : https://stackoverflow.com/questions/5559029/quickly-switching-buffers-in-vim-normal-mode

반응형