Как изменить визуально выбранный блок с помощью внешней команды?

9

У меня есть файл, который состоит из двух вертикальных частей. С левой стороны данные уже отформатированы, и я не хочу их менять. Я только хочу отформатировать данные на правой стороне. Скажем, у меня есть файл с такими строками, как

foo=bar baz     # Neato       Junk
quux=xyzzy      # Bilbo Baggins Ring

со многими другими подобными строками. Я только хочу изменить текст справа от символа «#». Я выделил нужный текст со следующими выражениями:

gg
/#
ctrl-v
G
$

но если я тогда попытаюсь изменить его (скажем, с помощью :'<,'>!column -t), он фактически изменит всю строку. Какое правильное выражение использовать для изменения только визуально выбранных частей?

Кодзиро
источник
2
Вы можете попробовать плагин vis от Dr. Chip или мой плагин NrrwRgn . Оба должны справиться с этим просто отлично.
Кристиан Брабандт

Ответы:

6

Вы также можете попробовать:

gg
^V
G
t#
d
:%!column -t
gg
P

От :h :visual_example:

В настоящее время команда ":" работает только для целых строк. Когда вы выбираете часть строки, выполнение чего-то вроде «:! Date» заменит всю строку. Если вы хотите, чтобы была заменена только часть линии, вам нужно составить карту для нее. В будущем выпуске «:» может работать с частичными строками.

Смотрите также :h visual-operatorsдля деталей.

Jair López
источник