ビジュアルモードで置換コードをブロックする方法


26

最初の2文字を置き換えるアイテムのリストがあります。

a) item 1
b) item 2
c) item 3

これを行う最も速い方法は何ですか:

* item 1
* item 2
* item 3

視覚モードを使用したアプローチがあります(Ctr-v、jjj、2つの置換コマンドを実行する必要があります。Iirc、この置換は1コマンドで実行できます)


1
のような.,.+2s/^../*/(または視覚的に選択した場合)なぜ2つの置換コマンドですか?2c2文字を置き換えます。
ムル

視覚的な選択範囲の最初の行のみが変更される場合があり、で繰り返します。他の行は物事を台無しにします。
poseid

2
@poseidのCtrl-C代わりに押す傾向がありますEscか?これにより、特に、Visual-block選択の各行に変更が適用されるのを防ぎます。
tommcdo

それが混乱の主な理由かもしれません!ありがとう!
poseid

回答:


26

視覚ブロックの選択:

<C-v>
jjl
c*
<Esc>

:normal

:,+2norm! cE*

置換:

:,+2s/^.\{2}/*

ドット式:

cE*<Esc>
j.
j.

1
クレイジーなアプローチ:textobj-word-column.vimを使用するciC*<esc>と、あなたができることを完了します。注:このプラグインは「意図したとおりに実行する」プラグインなので、予期しない場所や方法で失敗しますが、このような簡単な場合でもプラグインは有用です。
ピーターリンカー

興味深いのは、通常のドット式です!
poseid

3
Visual-blockソリューションでは、最初の行に入力されているテキストのみが表示されることに注意してください。あなたがヒットしたら<Esc>、それは残りの行に記入します。
tommcdo

cが置き換えられることを覚えておくための提案はありますか?ctrl + D(own)のように
ジョーダンマッキー

2
@JordanMackie cは「変更」用です。
ロメインル

17

これを行うより効率的な方法を次に示します。

  1. 最初の項目と最初の文字(0)にカーソルを置き、「ブロックワイズ」ビジュアルモードCtrl+ vを入力し、現在の段落の1列目を選択します}(リストが新しい行で終了する場合)。そうでない場合は、矢印キー(移動する)選択範囲の周り)、またはパターン検索(最後の要素は/c)どこc))
  2. kおよびl(または矢印キーを使用)でリストの最後のシンボルに移動します。これにより、変更する2つの列が選択されます。
  3. を押して選択したテキストを変更し、c箇条書き記号(*)を入力して、を押して終了しEscます。

特に長いリストでより効率的に機能します。

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