web-dev-qa-db-ja.com

vimで列を編集する方法は?

Vimは行単位で編集する場合に非常に強力です。検索/置換ツールは行単位で動作するようにモデル化されています。

しかし、特定の列をすべての行にわたって変更したい場合はどうなりますか?たとえば、ファイルの80番目の列を#に簡単に変更するにはどうすればよいですか?

51
Lazer

substitution を使用できます。 パターンは特定の列に一致します\%c):

:%s/\%80c/#/<CR>

または、 block-wise visual モードを使用できます:

gg8|CTRL+vGr#

virtualedit 」オプションを使用すると、実際の文字がない位置にカーソルを配置できます。

:set virtualedit
38
Johnsyweb

列を編集するには、次の手順を実行します。

  1. 列の先頭に立つ
  2. 押す Ctrl+Shift+v、編集する列全体にマークを付けます。
  3. 押す Shift+i 列の先頭にテキストを挿入するには、 Shift+a テキストを追加するには、r強調表示されたテキストを置き換えるd削除するには、c変更するには...など.
  4. ヒット ESC それが終わったら。

人々(私)は時々列編集キーをマップすると思います Ctrl+Q そのため、視覚的な選択線(V)やテキストとして貼り付けても、テキストとは衝突しません。

113
sa125

... sa125(facepalm)の手順に従うことができなかったので、どこか他の場所を探して、いくつかの方が簡単であることがわかりました: https://blog.pivotal.io/labs/labs/column-edit-mode -in-vi

  1. Ctrl+v [そして、あなたが望むものを選択してください]
  2. Shift+i [そして何でも書きます...(チェックアウト*下)]
  3. Esc

* !!注意「何でも書いてください...」の場合、最初の行だけが変更されるという事実に落胆しないでください!!

それが役に立てば幸い!

ここではまったく話題にならないかもしれませんが、長い行を避けたいという考えなら、vim 7.3の colorcolumn オプションを見ることができます。

1
Plouff

列単位の編集には、 vis.vim が非常に便利です。目的の列をブロック選択し、通常のコマンド、さらには任意のExコマンドで操作することができます。そのページの例から、私はしばしばパターンを使用しました:

:'<,'>B s/abc/ABC/g

Vundle/Pathogenは、vis.vimを github からインストールできます。

プラグイン「taku-o/vim-vis」

1
Micah Elliott