Vimで強調表示されたテキストの周りに括弧を追加する


14

ハイライトされたテキストの周りに括弧を追加できる機能がVimにありますか?

たとえば、で強調表示n = getchar()する場合、その if (n = getchar() == '\n')周りに括弧を付けたいと思います。

回答:


18

あなたは素晴らしいとなくてはならないプラグインサラウンドが必要です。次に、テキストを選択してタイプする場合Sb(サラウンドブレース)、またはS)(大文字のSに注意してください!)

実際には、さまざまな引用符、タグなど、さまざまなことを実行できます。二重引用符で囲まれた単語にカーソルを置き、次のように入力して二重引用符を単一引用符にcs"'変更できます:(change-surround "to ')。または、ds"(delete-surround ")と入力して、引用符を完全に削除できます。

リンクでドキュメントを読んで、それは本当に素晴らしいです!


1
ただし、選択を使用してそれを行う方法については説明しませんでした。すぐには明らかにならないので、私はここに導かれました。
JackHasaKeyboard

@JackHasaKeyboard、セレクションでそれを行う方法を説明しなかったとはどういう意味ですか?あなたがあれば、それは喜んであなたがやりたいだろう>:私の答えで二sentense氏は述べてテキストを選択し、タイプsb(サラウンドブレース)、またはs)
ドミトリーフランク

1
あなたがやった。私のために働いていませんが、ヒットsすると選択範囲が削除され、挿入モードに入ります。
JackHasaKeyboard

1
これは、回答で言及した「サラウンド」プラグインが正しくインストールされていないことを意味します。
ドミトリーフランク

本当に素晴らしい。私はしばらくそれを使っていて、賭けることができます。
biocyberman

20

Dmitryのサラウンドプラグインの提案に加えて、強調表示されたテキストの周りに括弧を追加するには、次のコマンドを使用します。

xi()<Esc>P

\s以下を~/.vimrcファイルに追加するなどして、マップを視覚モードで設定できます(たとえば)。

xnoremap <leader>s xi()<Esc>P

1
これは、素晴らしく簡単な解決策のように見えます。将来これに関する問題が見つからない場合は、追加のプラグインよりもこの方法をお勧めします。ありがとう!
ゼルフィアカルツシュタール

3
これは良い解決策ですが、サラウンドプラグインを使用するほど完全ではありません。行全体を選択している場合は機能しません(V代わりにを使用v)。この場合、かっこの下に行を貼り付けます。
ローハンオートン

1

lh-bracketsは、単に(選択範囲をブラケットで囲むようにバインドします。サラウンドとは異なり、vimの通常のキーバインドの哲学は従いません。代わりに、必要なキーが少なくなります。

それ以外の場合、続行する方法は多数あります。あなたは無名レジスタをいじり気にしない場合は、使用s(^R")<esc>^RのようなCTRL-R


0

dotancohensの答えに基づいて、私は以下を以下に入れます.vimrc

xnoremap <leader>( <ESC>`>a)<ESC>`<i(<ESC>

[]、{}などに対して同様のマッピングを簡単に作成できます。ビジュアルモードの終了後に暗黙的に設定された開始マーカーと終了マーカーにジャンプすることで機能します。この方法で行全体を選択すると、最初/最後の行の開始/終了に括弧が追加されます。yankレジスタを上書きしません。そして、開き括弧の直前にカーソルを置きます。

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