web-dev-qa-db-ja.com

Vimで括弧(または引用符または...)を選択する方法は?

以前はこの種のもののプラグインがあったはずですが、必要になったので(自然に)見つけられないようです。

大括弧、引用符、または一般的に一致する文字のリストを選択する最も簡単な方法は何ですか?

   write ( *, '(a)' ) 'Computed solution coefficients:'

たとえば、ここでは(a)またはComputed solution coefficients:を選択します。

複数行ではなく、1行で発生する場合にのみ興味があります。

208
Rook

かっこ内に取得するナビゲーションキーを使用し、yi(またはyi)のいずれかを使用して、一致するかっこ内のすべてをコピーできます。これは、角かっこ(例:yi])および中括弧でも機能します。 yに加えて、テキストを削除または変更することもできます(例:ci)di])。

ダブルクォートとシングルクォートでこれを試してみましたが、そこでも動作するようです。あなたのデータのために、私は:

write (*, '(a)') 'Computed solution coefficients:'

カーソルをCに移動し、yi'と入力します。カーソルを空白行に移動し、pを押して、取得します

Computed solution coefficients:

CMS注意 のように、これはビジュアルモードの選択でも機能します。vi)vi}vi'などを使用してください。

260
Tim Whitcomb

単一引用符から選択するには、通常vi'(「内部単一引用符を選択」)を実行します。

括弧ブロック内では、vib( "select inner block")を使用します

中括弧ブロック内では、viB( "capital B")を使用できます

選択を「包括的」にする(引用符、括弧、または中括弧も選択する)には、aの代わりにiを使用できます。

マニュアルの テキストオブジェクトの選択 、またはvim内の:help text-objectsについて詳しく読むことができます。

247
CMS

この選択方法は組み込みで、Vimヘルプで詳しく説明されています。 XMLタグなどをカバーしています。

:help text-objectsを参照してください。

27
michael

単一引用符内で選択するには、vi'を使用します。

括弧内で選択するには、vi(を使用します。

20
Canopus

矢印またはhjklを使用してブラケット式の1つに移動し、vを使用して視覚(選択)モードを選択し、%を使用して他のブラケットにジャンプします。

7
Stobor

searchpair組み込み関数を使用して.vimrcにVim関数を記述します。

searchpair({start}, {middle}, {end} [, {flags} [, {skip}
            [, {stopline} [, {timeout}]]]])
    Search for the match of a nested start-end pair.  This can be
    used to find the "endif" that matches an "if", while other
    if/endif pairs in between are ignored.
    [...]

http://vimdoc.sourceforge.net/htmldoc/eval.html

3
Adrian Panasiuk

最も投票された回答に詳細を追加します。

Gvimを使用していて、クリップボードにコピーする場合は、次を使用します。

"+<command>

すべてのコンテンツを角かっこ(または括弧または中かっこ)の間でコピーするには

例:"+yi}は、カーソルがある中括弧の間のすべてのコンテンツをクリップボードにコピーします。

2
yuriploc

プラグインvim-textobj-quotesを作成しました: https://github.com/beloglazov/vim-textobj-quotes

任意のタイプの最も近い引用符のペアにテキストオブジェクトを提供します。 iqまたはaqのみを使用すると、現在カーソルを囲んでいる単一引用符( ')、二重引用符( ")、または逆引用符(`)の内容を操作できます。 、または背後(優先順)言い換えれば、引用符に到達するために必要なときに前方または後方にジャンプします。

例を見ればわかりやすくなります(カーソルは|で表示されます):

  1. 変更前:foo '1, |2, 3' bar; diqを押した後:foo '|' bar
  2. 変更前:foo| '1, 2, 3' bar; diqを押した後:foo '|' bar
  3. 変更前:foo '1, 2, 3' |bar; diqを押した後:foo '|' bar
  4. 変更前:foo '1, |2, 3' bar; daqを押した後:foo | bar
  5. 変更前:foo| '1, 2, 3' bar; daqを押した後:foo | bar
  6. 変更前:foo '1, 2, 3' |bar; daqを押した後:foo | bar

上記の例は一重引用符で示されていますが、プラグインは二重引用符( ")および逆引用符(`)でもまったく同じように機能します。

ciqdiqyiqviqなど、他の演算子も使用できます。

詳細については、上記のgithubページをご覧ください。

1