2

たとえば、vim で 3 つのタブを開いているとします。

1: nice_program.c
2: something_fun.h
3: super_script.sh

したがって、魔法の修飾キーを押してから「n」と入力して Enter キーを押すと、タブがタブ 1 に変更されます。同様に、代わりに「su」と入力すると、代わりにタブ 3 に移動します。

そのような行動は可能ですか?非常に多くのvim拡張機能があり、vim拡張機能の専門用語全体を実際に理解することはできません.

ところで、私は XP で gVim を使用し、OS X で MacVim を使用しています。できれば、ソリューションは両方で動作します...

編集:

インクリメンタル検索で、開いているタブの名前を検索するだけであることに注意してください。つまり、実際にタブ自体を検索することは想定されていません。

また、バッファを使用することはありません。これを機能させたいのはタブです。

4

3 に答える 3

7

質問の文言から、この機能の設計によって取られるべき方法ではなく、Vim のタブのアイデアを取っているようです。Vim のタブ ページは、バッファーやウィンドウの形式ではなく、ウィンドウ レイアウト コンテナーです。アクティブなバッファの名前でタブに切り替える組み込みの方法がないのも不思議ではありません (または、タブ ページ内の唯一のバッファ、または他の方法で特別なバッファ)。意味的には、これはタブではなくバッファに切り替えることです (ただし、必要に応じて、バッファを表示するためにタブを切り替えることができます)。

名前でバッファに切り替えるには、:sbufferコマンド (:sb略して ) を使用します。コマンドにはオートコンプリート機能があるため、毎回バッファー名全体を入力する必要はありません。通常、バッファを一意に識別するために、名前の数文字だけを入力する必要があります(質問でインクリメンタル検索について説明したのと同じ方法です)。

デフォルトでは、Vim は要求されたバッファーを開き、現在のウィンドウのバッファーを置き換えます。この動作は、switchbufオプションによって制御されます。そのオプションによって提供される選択肢の 1 つ ( と呼ばれるusetab) を使用すると、ウィンドウに編集するバッファが含まれている場合に、別のタブ ページのウィンドウに切り替えることができます。これはまさに、タブ ページでの作業方法に適しています。

要約すると、スイッチング動作を次のように変更します。

:set switchbuf=usetab

コマンドを使用して:sb、名前の数文字を入力し、Tab-completion を使用してバッファーを開きます。

于 2011-08-07T13:03:48.070 に答える
1

vim wiki で拾ったこのスニペットを使用して、開いているバッファーを切り替えます (にマップされますF5):

" switch between numbered buffers
:nnoremap <F5> :buffers<CR>:buffer<Space>

(.vimrc ファイルまたは使用するドットファイルに入れます)。

開いているバッファ全体のインクリメンタル検索に関しては、現在の単語で/[something]または*/を使用して何かを検索すると、他のバッファ/タブでも自動的に強調表示されます。#次に、バッファを切り替えてヒットしnたりN、現在表示されているバッファ内の一致間を移動したりできます。それはすでに Vim に組み込まれています。

それが役立つことを願っています。

于 2011-08-07T11:10:15.353 に答える
1

ib によって提供された:set switchbuf=usetabソリューションは、何らかの理由で (プラグインや .vimrc を読み込まなくても) うまくいきませんでしたが、思いどおりに動作します ( Vim wiki で:tab drop name-of-file見つけました)。

でいくつかのキーストロークを保存するカスタム マッピングを作成しますnnoremap <leader>t :tab drop

また、Vim でタブを使用する正しい方法と間違った方法についての ib のコメントを次に示します。

于 2011-08-07T16:58:43.327 に答える