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


219

以前はこの種のもののためのプラグインがあったはずだと確信していますが、今はそれを必要とするので、それを(当然)見つけることができないようです。

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

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

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

私は複数行には興味がありません。1行で発生する場合だけです。

回答:


276

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

私はこれを二重引用符と単一引用符で試してみましたが、そこでも動作するようです。あなたのデータのために、私はします:

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

カーソルをに移動してC、と入力しyi'ます。空白行、ヒットにカーソルを移動pし、GET

Computed solution coefficients:

CMSを指摘し、同様のビジュアルモード選択のためにこの作品-ちょうど使用vi)vi}vi'、など


1
私は通常、定義済みの一致する文字(通常は一重引用符と二重引用符、およびすべての種類の角かっこのみ)からすべてを選択する方法を探しています。
ルーク

2
区切られた単語とはどういう意味ですか?「[x、y、z]」で試してみたところ、「x、y、z」が
見つかりました

4
最後のコメントは無視してください-問題が何であるかを見つけました。魅力のように動作します:-)
Rook

引用符で機能yi"するようであり、すべての引用符を選択します
stefanB

ci(またはci)私が探していたもののためにそれを行います。ありがとう。私はまだiその場合を完全に理解していませんが、それが機能する限り、誰が気にしますか?:)
justnorris 2013年

279

単一引用符の中から選択するには、通常、vi' ( "select inner single quotes")を実行します。

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

使用できる中括弧ブロックの内側viB(「大文字B」)

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

テキストオブジェクトの選択の詳細については、マニュアルまたは:help text-objectsvimを参照してください。


そのヒントをありがとう、私は同じようなものを探し求めていましたが、私の結果には満足できませんでした。驚くばかり。
alfredodeza 2010年

このヒントは非常にシンプルで、脳と筋肉の記憶の中にコミットするのが簡単です。ありがとう。
Ghazaly 2010年

これは非常に役立つヒントです。追加のキーストロークをいじる必要はもうありません。リンクありがとうございます。
Rai

27

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

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


1
:ヘルプテキスト・オブジェクトは...あなたは、少なくとも「のような一般的なもののいくつかを、言及する可能性が近い便利なものになると(ビジュアルモードインチ
Stobor

2
(また、+ 1は、長いvimユーザーであるにもかかわらず、これらについて知らなかったためです。)
Stobor 09年

@Stobor。乾杯はその参照を修正しました
マイケル

21

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

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


3
注:ci'またはci(視覚的に選択する代わりに変更します。しかし、それはまさに私が望んでいたことを行います。ありがとう:)
justnorris 2013年

もう一つはそれだけで()ブロック内なので、通常は私が行うときに働く%vi(%vib
816から8055

7

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


5
(残念ながら引用はしませんが...)
Stobor 09年


2

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

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

"+<command>

大括弧(または括弧または中括弧)の間にすべてのコンテンツをコピーするには

たとえば、次の"+yi}ようにして、カーソルがある中括弧内のすべてのコンテンツをクリップボードにコピーします。


2
これは問題と完全に直交しており、答えにはなりません。について尋ねるすべての質問にこれを書くことができますy
パイプ

これは回答への追加であり、回答自体ではありません。
yuriploc 2018年

次に、それはその回答の編集である必要があります。この投稿は現状のままでは質問に回答しません。
パイプ

これはgvimを使用しない広告です:)人生で余分な2つのシフト+キーを押す必要があるのは誰ですか?
ポールパーカー、

1

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

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

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

  1. 以前:foo '1, |2, 3' bar; を押した後diqfoo '|' bar
  2. 以前:foo| '1, 2, 3' bar; を押した後diqfoo '|' bar
  3. 以前:foo '1, 2, 3' |bar; を押した後diqfoo '|' bar
  4. 以前:foo '1, |2, 3' bar; を押した後daqfoo | bar
  5. 以前:foo| '1, 2, 3' bar; を押した後daqfoo | bar
  6. 以前:foo '1, 2, 3' |bar; を押した後daqfoo | bar

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

あなたはまた、他の演算子を使用することができます:ciqdiqyiqviq、など

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


-6

vimの単純なキーマップはこの問題を解決します。map viq F” lvf” hhこの上記のコマンドは、viqをキーにマップして、引用符間を検索します。"を任意の文字に置き換えて、キーマップを作成します。これを起動時にvimrcに貼り付けると、いつでも使用できるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.