web-dev-qa-db-ja.com

vimで括弧のペアを角かっこに変更する最も簡単な方法

私はvimに不慣れで、この強力なエディターを使用してできる興味深いものをたくさん発見する過程にあります。

私が非常に頻繁に行う必要がある特定のことの1つは、テキスト内の括弧のペアを角かっこに変更すること(たとえば、( (a+b+c) )[ (a+b+c) ]に変更すること)またはその逆です。これを行うには、2つの文字()[]に手動で変更します。

ただし、括弧の間に多くのテキストがある場合、特に最初の([に変更した後、%コマンドが対応する)を見つけることができなくなるため、開き括弧と閉じ括弧のペアを見つけるのが難しい場合があります。 。

そのような変更を行うためのより良い、より迅速な方法があるかどうか疑問に思いましたか?

19
kMaster

私は単にこのようにします:%r]^or[

説明は次のとおりです。

  • f(-変更する最初の括弧にカーソルを置きます(まだそこにない場合)。
  • %--一致する括弧にジャンプします。
  • r]-括弧を角かっこに置き換えます。
  • CTRL-O--最初の括弧に戻ります。
  • r[-括弧を角かっこに置き換えます。
10
Ben

私は個人的に https://github.com/tpope/vim-surround を使用しています。これは、必要なものがすべて提供されているため、ソースを読むと、解決策が簡単ではないことがわかります。

典型的な例:

Hello("World")

()の間のどこかにカーソルを置くと、次のように入力できます。 cs([ 通常モードで取得するには:

Hello["World"]

surround.vimは、PathogenまたはVundleのいずれかで簡単にインストールできますが、個人的にはvundleが好きです。 https://github.com/VundleVim/Vundle.vim

31
Lee Hambley

lh-brackets の場合、_<m-b>(_を使用して、ブラケットのような文字のペア(ペアの最初/最後の文字のカーソル)を括弧のペアに変更します。 _<m-b>{_->中括弧など。

好奇心旺盛な人にとっては、これは how 動作します-s:ChangeTo()を参照してください。内部的には、_%r]``r[_を実行し、引用符専用の処理を行います。

5
Luc Hermitte

プラグインがなくても、括弧内のコンテンツを削除し、(括弧内のどこからでも)新しい括弧内にヤンクすることで実行できます。

di(a[]<esc>P%2X

明らかにsurroundを使用するよりも重要ですが、それほど多くはありません;-)

注意

キーの順序を覚えておく必要はありませんが、括弧の内側を削除することから始めるだけです。それなら普通のvimfuです。

1
mb14

この問題に関するSOのいくつかに基づいて(@ mb14の回答の私のコメントを参照してください ここ )、私は次のようなものを筋肉で記憶することを考えていました:

di(a<bkspace><bkspace>[]<Esc>P

しかし、私が本当に望んでいたことはこれでした:

di(c%[]<Esc>P

c()角かっこを0レジスタに入れるため、これを行うことができないことがわかります。したがって、実際には次のようにする必要があります。

di("_c%[]<Esc>P

または(私も「ヤンキー」アプローチを試していて、思いついた)これ:

yi(ca([]<Esc>"0P

どちらも悪くはありませんが、<leader>c"_cにマップして、realを作成すると、これがすべてうまくいくと思いました。 deleteそしてこれを行うことができます:

di(\c%[]<Esc>P

またはこれ:

yi(\ca([]<Esc>P

どちらも私がやりたかったことにかなり近いものであり、思考プロセスによって、私の$MYVIMRCで最も価値のある行の1つが得られました。

noremap <leader>c "_c
0
Robert