web-dev-qa-db-ja.com

Vimでバッファを切り替えるにはどうしますか?

MiniBufExplorer を試しましたが、通常はいくつかのウィンドウが表示されるか、完全に閉じます。私が望むのは LustyJuggler のようなもので、インクリメンタル検索、つまりEmacsでバッファーを切り替える方法です。確かにこのようなスクリプトはありますか?

92
Alexey Romanov

Wincent Colaiutaの Command-T vimプラグイン を数か月間使用しています。 Wincentは、Cで高速にする必要がある部分を作成しました。また、ファイルパターンマッチングロジックは、TextmateのCommand-Tよりも優れていると思います。 screencast を確認してください。

VIM=のCommand-Tプラグインは、最小限のキーストロークでファイルを開くための非常に高速で直感的なメカニズムを提供します。 "Go- TextMateで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 も使用します。これにより、リストされた各バッファーが水平方向に分割された上部にコンパクトにリストされます。

23
David Rivers

以前はタブと複数のgvimインスタンスを組み合わせて使用​​し、関連ファイルのグループを各インスタンスのタブとして保持していました。 1つのインスタンスでタブが多すぎない限り、タブバーには編集中の各ファイルの名前が一目でわかります。

次に、Jamis Buckが TextMateからvimに戻る に切り替えた方法についての投稿を読み、いくつかの素晴らしいトリックを学びました。

  • Ctrl-w sおよびCtrl-w vは現在のウィンドウを分割します
  • 同じウィンドウ内の2つのバッファー間を切り替えるには、Ctrl-6を押します。
  • 素晴らしい fuzzyfinder.vim これは、現在のディレクトリ内のファイルまたは現在開いているバッファの自動補完検索を提供します
  • Jamis独自の fuzzy_file_Finderfuzzyfinder_textmate は、fuzzyfinderがTextMateの同様の機能のように動作する方法をわずかに変更します(私が知る限り、違いは一致することです)開始からのみではなく、ファイル名の任意の場所)。 このビデオ を見て、動作を確認してください。

これで、1つのgvimインスタンスが最大化され、複数のウィンドウに分割されるため、一度に複数のファイルを表示できます。 Ctrl-Fをfuzzyfinder_textmateにバインドしたので、(たとえば)Ctrl-F mod/usob app/models/user_observer.rbを開きます。私はもうタブに煩わされることはほとんどありません。

2010/08/07更新

Fuzzyfinder_textmateは素晴らしいままですが、Caseyがコメントで指摘しているように、それはもはや維持されていません。また、大きなプロジェクト(多くのディレクトリまたはファイル)で作業する場合、(および/またはfuzzyfinder.vim)が少し遅くなり不安定になるため、代替手段を探していました。

幸いなことに、 Wincent ColaiutaCommand-Tプラグイン という形式の非常に素晴らしい代替手段があるようです。これは、fuzzyfinder_textmateと非常によく似た(わずかではないにしても)動作をしますが、著しく高速です。また、見つかったファイルを分割または垂直分割で開くことができるなどの便利な機能も備えています。指摘してくれたDavid Riversに感謝します(そして賛成です!)。

73
Sam Stokes

基本を使用します-':ls '+' :bn '/' :bp '+' :b <part-of-name> '

33
orip

「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には常にあなたが知っているよりも多くの秘密がありますが、これらは過去数年にわたって私にとって非常にうまく機能しています。

31
Dave Ray
nmap <Leader>bb :ls<CR>:buffer<Space>

誰も素敵なプラグインについて言及していませんでした ctrlp.vim 。このプラグインを使用すると、名前でバッファを検索できます。

18
KOlegA

私が使う

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>

http://syskall.com/my-biggest-vim-productivity-boost/ を参照してください

14
Olivier Lalonde
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>
5
Terminus

私は最近、よりミニマルになりました。

使用するバッファーを循環させるには ]b そして [b 損なわれていない場合: https://github.com/tpope/vim-unimpaired

開いているバッファーに直接ジャンプするには、Vimのタブ補完を使用します。 :b。数文字で、1つまたは2つのタブで開いているバッファーにアクセスできます。

私が使用するオープンバッファと同様に :e 相対パスとタブの完全な。

私も使用します :ls たまに、開いているバッファを確認したり、変更されたステータスを確認したりします。

私が使用するバッファを取り除くために :bw バッファを消去します。私は通常、一時的な分割を行い、レイアウトを保持するためにバッファを変更します :bw アクティブなウィンドウも閉じます。

私が試したすべてのminibufのことは、私をいらいらさせてしまいました。そして、ランダムなファイルを開くスマートマッチングのことはしたくありません。本当に何かをブラウズする必要がある場合は、NERDtreeを使用します(:e .)。

IDK、最近ヤンクリングも落としました xp)およびレジスタの使用を開始し、最近決定しました f/t 動きはこれまでで最大のものです...

5
kitsu.eb

私が使用するバッファーをリストして切り替えるには:

nnoremap <Leader>l :ls<CR>:b<space>

バッファを切り替えるには:

map <Leader>n :bn<CR>
map <Leader>p :bp<CR>
2
diegoviola

この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>
2
Jack M.

tselectbuffer を使用します。それは非常に高速で、bufexplorerとは異なり、ウィンドウのスペースを取りません。また、インクリメンタル検索もあります。minibufexplorerを試してみましたが、バッファー内のナビゲーションが少し難しいことがわかりました。

2
Taurus Olson

Tselectbufferを使用します。それは非常に高速で、bufexplorerとは異なり、ウィンドウのスペースを取りません。また、インクリメンタル検索もあります。minibufexplorerを試してみましたが、バッファー内のナビゲーションが少し難しいことがわかりました。

2
anita

優れた Buffer Explorer は、他のアプリケーションで使用できることを願うほどの強力な筋肉記憶であることがわかりました。 3つ以上のファイルをアクティブに編集すると、非常に高速であることがわかりました。

2
csexton

<S-J>および<S-K>:bpおよび:bnにマッピングしましたが、ファイル数が10を超えているため、使用していません。 <C-J>および<C-K>をGnomeターミナルの前および次のタブに移動します。通常、作業している4つの異なるプロジェクトごとにvimの4つのインスタンスを実行します。私はまだ、次のバッファと前のバッファが、バッファリストの順序ではなく、作業中のバッファの履歴に移動することを本当に望んでいます。

2
puk

Vimセッションで複数のバッファが開いている場合、バッファとそれぞれのバッファ番号を追跡することが難しくなる可能性があります。この場合、簡単なマップを使用して別のファイルへの切り替えを簡単に行うことができます。

:nnoremap(F5):buffers(CR):buffer(Space)

vim.wikia.com

0
castor

^ W + w/^ W + rでシンプルな:vsplitを使用し、Ctrl + Alt + PgUp/PgDownキーの組み合わせで:tabnewを使用します。

0
Eimantas