MiniBufExplorer를 사용해 보았지만 일반적으로 여러 개의 창이 표시되거나 완전히 닫힙니다. 내가 원하는 것은 Emacs에서 버퍼 사이를 전환하는 방식 인 증분 검색 기능 이있는 LustyJuggler 와 같은 것 입니다. 확실히 이런 대본이 있나요?
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으로 전환 한 방법에 대한 게시물을 읽고 몇 가지 훌륭한 트릭을 배웠습니다.
이제 하나의 gvim 인스턴스를 최대화하고 여러 창으로 분할하여 한 번에 여러 파일을 볼 수 있습니다. Ctrl-F를 fuzzyfinder_textmate에 바인딩 했으므로 이제 Ctrl-F를 입력하면 mod/usobapp / models / user_observer.rb가 열립니다. 나는 더 이상 탭을 거의 사용하지 않습니다.
업데이트 2010/08/07
Fuzzyfinder_textmate는 여전히 훌륭하지만 Casey가 주석에서 지적했듯이 더 이상 유지되지 않습니다. 또한 대규모 프로젝트 (많은 디렉토리 또는 파일)로 작업 할 때이 파일 (및 / 또는 fuzzyfinder.vim)이 약간 느리고 불안정 해 지므로 대안을 찾고있었습니다.
다행히도 Wincent Colaiuta 의 Command-T 플러그인 형태의 아주 좋은 대안이있는 것 같습니다 . 이것은 fuzzyfinder_textmate와 매우 유사하지만 (약간 더 좋지는 않지만) 동작이 눈에 띄게 더 빠릅니다. 또한 발견 된 파일을 분할 또는 수직 분할로 열 수있는 것과 같은 멋진 기능이 있습니다. 지적 해 주신 David Rivers에게 감사드립니다.
나는 기본- ' :ls'+ ' :bn'/ ' :bp'+ ' :b <part-of-name>'를 사용합니다.
:map <c-n> :bn<cr>와 :map <c-p> :bp<cr>이후 C-n및 C-p입력 빠르며 버퍼 사이의 순환을 허용 당신은 반복을 누르면. (나는 원래 용도로 사용되지 않습니다.) 그것은으로 브라우저 탭 사이를 순환처럼 C-PgUp및 C-PgDn또는 브라우저가 바로 가기 뭐든간에.
[b이전 버퍼와 ]b다음 버퍼를 제공합니다. ]다음과 [이전 에 대한 개념을 사용하는 다른 많은 혜택도 있습니다 .
나는 창을 분할하기 위해 "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은 항상 당신이 알 수있는 것보다 더 많은 비밀을 가지고 있지만 이것들은 지난 몇 년 동안 저에게 꽤 잘 작동했습니다.
:bp<SK>에 매핑 했습니다:bn
nmap <Leader>bb :ls<CR>:buffer<Space>
아무도 멋진 플러그인 ctrlp.vim을 언급하지 않았습니다 . 이 플러그인을 사용하면 이름으로 버퍼를 검색 할 수 있습니다.
나는 사용한다
CTRL- J다음 버퍼 용
CTRL- K이전 버퍼 용
CTRL- L다음 탭
CTRL- H이전 탭용
.vimrc구성 은 다음과 같습니다 .
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
map <C-L> :tabn<CR>
map <C-H> :tabp<CR>
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>
:tab sball:tabn:buffer
나는 최근에 더 최소한으로 갔다.
내가 사용 ]b하고 [b손상되지 않은 버퍼를 순환하려면 : https://github.com/tpope/vim-unimpaired
오픈 버퍼로 바로 이동하려면 Vim의 탭 완성을 :b. 탭 한두 개가있는 열린 버퍼에 도달하려면 몇 글자이면 충분합니다.
오픈 버퍼 :e와 유사하게 상대 경로와 탭 완료와 함께 사용 합니다.
나는 또한 내가 :ls어떤 버퍼를 열 었는지 (그리고 수정 된 상태를 확인하기 위해) 가끔 사용 합니다.
버퍼를 제거하기 위해 버퍼 :bw를 지우는 데 사용 합니다. 일반적으로 :bw활성 창을 닫기 때문에 레이아웃을 유지하기 위해 임시로 분할하고 버퍼를 변경 합니다.
내가 시도한 모든 미니 버프 작업은 결국 나를 짜증나게했고, 나는 나를 위해 임의의 파일을 여는 스마트 매칭을 원하지 않는다. 정말로 무언가를 찾아야한다면 NERDtree ( :e .)를 사용합니다.
IDK, 최근에 나는 Yankring을 떨어 뜨 렸고 (왜냐하면 그것이 망가 져서 xp) 레지스터를 사용하기 시작했고, 최근에 나는 f/ t움직임이 지금까지 가장 위대한 것이라고 결정했습니다 ...
<leader>ll했습니다 :ls. 또한 그것은 당신이 가지고 있는지 확인하기 위해 정말 유용 set wildmenu당신에 .vimrc대한 모든과 대안을 제공으로 당신이 얻을 작은 메뉴:b
뛰어난 Buffer Explorer , be는 다른 응용 프로그램에서 사용할 수 있기를 바라는 강력한 근육 메모리가되었습니다. 두 개 이상의 파일을 적극적으로 편집 할 때 매우 빠릅니다.
이 HTML :: Mason 프로젝트로 작업하기 위해 .vimrc를 만드는 데 꽤 오랜 시간을 보냈기 때문에 탭과 분할 창을 이상하게 혼합했습니다. 시청 즐거움을 위해 :
map ;o :Sex <CR>
map <C-J> <C-W>j
map <C-K> <C-W>k
map <C-l> <C-W>l
map <C-h> <C-W>h
map ;] :tabnext<CR>
map ;[ :tabprev<CR>
map <C-t> :tabe +"browse ."<CR>
map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>
나는 tselectbuffer를 사용 합니다 . 정말 빠르며 bufexplorer와 달리 창에서 공간을 차지하지 않습니다. 또한 증분 검색 기능이 있습니다. minibufexplorer를 사용해 보았는데 버퍼의 탐색이 약간 어렵다는 것을 알았습니다.
,be, ,bs, ,bv, 그래서에 TSelectBuffer 매핑 ,bb.
버퍼를 나열하고 전환하려면 다음을 사용합니다.
nnoremap <Leader>l :ls<CR>:b<space>
버퍼 사이를 전환하려면 :
map <Leader>n :bn<CR>
map <Leader>p :bp<CR>
^ W + w / ^ W + r과 함께 간단한 : vsplit을 사용하고 Ctrl + Alt + PgUp / PgDown 키 조합을 사용하여 : tabnew를 사용합니다.
Vim 세션에 여러 개의 버퍼가 열려 있으면 버퍼와 해당 버퍼 번호를 추적하기가 어려울 수 있습니다. 이 경우 간단한 맵을 사용하여 다른 파일로 쉽게 전환 할 수 있습니다.
: nnoremap (F5) : buffers (CR) : buffer (Space)