Jak zmodyfikować wizualnie wybrany blok za pomocą zewnętrznego polecenia?

9

Mam plik złożony z dwóch pionowych części. Po lewej stronie dane są już sformatowane i nie chcę ich zmieniać. Chcę tylko sformatować dane po prawej stronie. Powiedzmy, że mam plik z takimi liniami

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

z wieloma innymi liniami tego typu. Chcę tylko zmodyfikować tekst po prawej stronie znaku „#”. Wybrałem żądany tekst za pomocą następujących wyrażeń:

gg
/#
ctrl-v
G
$

ale jeśli spróbuję go zmodyfikować (powiedzmy, za pomocą :'<,'>!column -t), tak naprawdę modyfikuje całość każdej linii. Jakiego wyrażenia należy użyć, aby zmodyfikować tylko wybrane wizualnie części?

kojiro
źródło
2
Możesz wypróbować wtyczkę vis z Dr. Chip lub moją wtyczkę NrrwRgn . Oba powinny sobie z tym poradzić.
Christian Brabandt,

Odpowiedzi:

6

Możesz także spróbować:

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

Od :h :visual_example:

Obecnie polecenie „:” działa tylko na całych liniach. Po wybraniu części linii zrobienie czegoś takiego jak „:! Data” zastąpi całą linię. Jeśli chcesz zastąpić tylko część linii, musisz wykonać dla niej mapowanie. W przyszłej wersji „:” może działać na liniach częściowych.

Zobacz także :h visual-operatorsszczegóły.

Jair López
źródło