243

以前はこのようなもののプラグインがあったと思いますが、今は必要になっているので、(当然のことながら)見つからないようですので、簡単に聞いてみます。

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

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

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

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

4

10 に答える 10

326

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

括弧ブロック内では、vib (「内部ブロックを選択」)を使用します

中かっこブロックの内側で使用できますviB(「大文字B」)

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

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

于 2009-06-30T06:17:03.503 に答える
299

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

これを二重引用符と一重引用符で試しましたが、そこでも機能するようです。あなたのデータについては、私は次のことを行います。

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

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

Computed solution coefficients:

CMSが指摘したように、これはビジュアルモードの選択にも機能します。 vi)、、、などvi}を使用するだけです。vi'

于 2009-06-30T05:59:31.410 に答える
30

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

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

于 2009-06-30T06:04:00.667 に答える
25

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

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

于 2009-06-30T06:24:52.880 に答える
9

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

于 2009-06-30T06:04:36.283 に答える
3

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

于 2009-06-30T06:15:00.183 に答える
2

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

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

"+<command>

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

例:"+yi}カーソルが中かっこで囲まれているすべてのコンテンツをクリップボードにコピーします。

于 2017-02-09T19:48:35.260 に答える
1

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

これは、任意のタイプの引用符の最も近いペアのテキストオブジェクトを提供します。iqorのみを使用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

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

他の演算子を使用することもできます:ciq、、、、diqなど。yiqviq

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

于 2014-04-09T09:55:48.020 に答える
0

私はすでに良い答えに追加したかった。HTMLブラケット内のテキストを変更する方法を探してここに来たので、それを探している他の人に答えを提供したいと思います。

うまくいくと思うかもしれませんci<が、実際には、タグ自体の1つにいる場合にのみ機能します。

<would work inside here> But not here </would work inside here>

私が欲しかったのは、htmlタグ自体の間のテキストを変更することでした。

<div>change me</div>

私が欲しかったのは「内部タグの変更」でした。cit

:help text-objects私が探していたものを見つけた方法であるドキュメント()に言及した他の回答に感謝します。

于 2021-12-23T00:19:59.343 に答える
-8

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

于 2009-07-30T12:53:33.020 に答える