[vim] Vim에서 버퍼간에 전환하는 것을 선호합니까?

MiniBufExplorer를 사용해 보았지만 일반적으로 여러 개의 창이 표시되거나 완전히 닫힙니다. 내가 원하는 것은 Emacs에서 버퍼 사이를 전환하는 방식 인 증분 검색 기능 이있는 LustyJuggler 와 같은 입니다. 확실히 이런 대본이 있나요?



답변

저는 Wincent Colaiuta의 Command-T vim 플러그인 을 몇 달 동안 사용하고 있습니다. Wincent는 C에서 빠를 필요가있는 부분을 작성했고, 그렇다고 말해야합니다! 그리고 파일 패턴 매칭 로직이 Textmate의 Command-T보다 훨씬 낫다고 생각합니다. 스크린 캐스트를 확인하십시오 .

VIM 용 Command-T 플러그인은 최소한의 키 입력으로 파일을 열 수있는 매우 빠르고 직관적 인 메커니즘을 제공합니다. TextMate의 Command-T에 바인딩 된 “파일로 이동”창에서 영감을 얻었 기 때문에 “Command-T”로 명명되었습니다.

파일은 경로에 나타나는 문자를 입력하여 선택되며 특정 위치 (예 : 경로 구분 기호 바로 뒤)에 나타나는 문자에 더 많은 가중치를 부여해야 함을 알고있는 알고리즘에 의해 정렬됩니다.

보다 쉬운 버퍼 전환 에는 많은 유용한 팁이 포함되어 있습니다. 버퍼 이름 자동 완성을 수행하는 .vimrc에 다음을 적용하고 가장 유용한 버퍼 전환 명령을 내 <Leader> 및 왼쪽 홈 행 키에 매핑하고 현재 버퍼 번호를 상태 줄에 표시합니다. :

"" Tab triggers buffer-name auto-completion
set wildchar=<Tab> wildmenu wildmode=full

let mapleader = ","

map <Leader>t :CommandT<Return>
map <Leader>a :bprev<Return>
map <Leader>s :bnext<Return>
map <Leader>d :bd<Return>
map <Leader>f :b

"" Show the buffer number in the status line.
set laststatus=2 statusline=%02n:%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

또한 MiniBufExplorer 를 사용 합니다.이 기능은 나열된 각 버퍼를 자체 수평 분할 상단에 간결하게 나열합니다.


답변

저는 탭과 여러 gvim 인스턴스의 조합을 사용하여 관련 파일 그룹을 각 인스턴스에서 탭으로 유지했습니다. 한 인스턴스에 너무 많은 탭이 포함되지 않는 한 탭 표시 줄에는 편집중인 각 파일의 이름이 한 눈에 표시됩니다.

그런 다음 Jamis Buck 이 TextMate에서 vim으로 전환 방법에 대한 게시물을 읽고 몇 가지 훌륭한 트릭을 배웠습니다.

  • 현재 창을 분할하려면 Ctrl-w s 및 Ctrl-w v
  • Ctrl-6을 사용하여 동일한 창에서 두 버퍼 사이를 앞뒤로 전환합니다.
  • 현재 디렉토리 또는 현재 열려있는 버퍼의 파일 검색을 자동 완성 하는 멋진 fuzzyfinder.vim
  • Jamis의 고유 한 fuzzy_file_finderfuzzyfinder_textmate는 fuzzyfinder 가 TextMate의 유사한 기능처럼 작동하도록 작동하는 방식을 약간 수정합니다 (내가 말할 수있는 한 차이점은 처음부터가 아니라 파일 이름의 모든 위치와 일치한다는 것입니다). 이 비디오 를 시청 하여 실제로 확인하십시오.

이제 하나의 gvim 인스턴스를 최대화하고 여러 창으로 분할하여 한 번에 여러 파일을 볼 수 있습니다. Ctrl-F를 fuzzyfinder_textmate에 바인딩 했으므로 이제 Ctrl-F를 입력하면 mod/usobapp / models / user_observer.rb가 열립니다. 나는 더 이상 탭을 거의 사용하지 않습니다.

업데이트 2010/08/07

Fuzzyfinder_textmate는 여전히 훌륭하지만 Casey가 주석에서 지적했듯이 더 이상 유지되지 않습니다. 또한 대규모 프로젝트 (많은 디렉토리 또는 파일)로 작업 할 때이 파일 (및 / 또는 fuzzyfinder.vim)이 약간 느리고 불안정 해 지므로 대안을 찾고있었습니다.

다행히도 Wincent ColaiutaCommand-T 플러그인 형태의 아주 좋은 대안이있는 것 같습니다 . 이것은 fuzzyfinder_textmate와 매우 유사하지만 (약간 더 좋지는 않지만) 동작이 눈에 띄게 더 빠릅니다. 또한 발견 된 파일을 분할 또는 수직 분할로 열 수있는 것과 같은 멋진 기능이 있습니다. 지적 해 주신 David Rivers에게 감사드립니다.


답변

나는 기본- ‘ :ls‘+ ‘ :bn‘/ ‘ :bp‘+ ‘ :b <part-of-name>‘를 사용합니다.


답변

나는 창을 분할하기 위해 “ctrl-w s”와 “ctlr-w v”를 좋아한다. 그런 다음 Ctrl 키를 누른 상태에서 이동 키 (h, j, k, l)를 매핑하여 분할 된 창 사이를 이동합니다.

" Map ctrl-movement keys to window switching
map <C-k> <C-w><Up>
map <C-j> <C-w><Down>
map <C-l> <C-w><Right>
map <C-h> <C-w><Left>

내 손을 화살표 키로 옮겨야하는 것은 성가신 일입니다.

다음으로 ctlr-tab을 설정하여 현재 창에서 버퍼 사이를 전환합니다 (많은 다른 환경과 마찬가지로).

" Switch to alternate file
map <C-Tab> :bnext<cr>
map <C-S-Tab> :bprevious<cr>

vim은 항상 당신이 알 수있는 것보다 더 많은 비밀을 가지고 있지만 이것들은 지난 몇 년 동안 저에게 꽤 잘 작동했습니다.


답변

nmap <Leader>bb :ls<CR>:buffer<Space>

아무도 멋진 플러그인 ctrlp.vim을 언급하지 않았습니다 . 이 플러그인을 사용하면 이름으로 버퍼를 검색 할 수 있습니다.


답변

나는 사용한다

CTRLJ다음 버퍼 용

CTRLK이전 버퍼 용

CTRLL다음 탭

CTRLH이전 탭용

.vimrc구성 은 다음과 같습니다 .

map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
map <C-L> :tabn<CR>
map <C-H> :tabp<CR>

참조 http://syskall.com/my-biggest-vim-productivity-boost/를


답변

imap <A-1> <Esc>:tabn 1<CR>i
imap <A-2> <Esc>:tabn 2<CR>i
imap <A-3> <Esc>:tabn 3<CR>i
imap <A-4> <Esc>:tabn 4<CR>i
imap <A-5> <Esc>:tabn 5<CR>i
imap <A-6> <Esc>:tabn 6<CR>i
imap <A-7> <Esc>:tabn 7<CR>i
imap <A-8> <Esc>:tabn 8<CR>i
imap <A-9> <Esc>:tabn 9<CR>i

map <A-1> :tabn 1<CR>
map <A-2> :tabn 2<CR>
map <A-3> :tabn 3<CR>
map <A-4> :tabn 4<CR>
map <A-5> :tabn 5<CR>
map <A-6> :tabn 6<CR>
map <A-7> :tabn 7<CR>
map <A-8> :tabn 8<CR>
map <A-9> :tabn 9<CR>