Як змінити візуально вибраний блок за допомогою зовнішньої команди?


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деталі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.