Недавно я знал о !
технике фильтрации , и мне это нравится. К сожалению, я не могу использовать его в режиме визуального блока. Надеюсь, что некоторые эксперты помогут мне.
По сути, я хочу отсортировать столбец, например третий, ниже (просто MWE). И я не хочу мешать другим колонкам, когда сортирую.
Я попытался отфильтровать ( !
) визуально (в блочном режиме) третий выбранный столбец через sort
утилиту. Но сортировка скорее простирается за пределы выделения, т. Е. Меняются все строки, а не только выборка, которая тоже сортируется по первому столбцу!
1. LARGEST 40
2. SECOND-LARGEST 168
3. MID 2.8
4. MID 540
5. MID 14.84
6. MID 40
7. SECOND-LEAST 64
8. LEAST 8
Я выбрал последний столбец, используя визуальный блок, и сказал, !sort --reverse
что отображается как
'<,'>!sort --reverse
И результат странный в противоположность тому, что я ожидал. В результате все строки сортируются / меняются местами, а не только один столбец, и это тоже, основываясь на первом столбце, независимо от моего выбора в третьем столбце!
8. LEAST 8
7. SECOND-LEAST 64
6. MID 40
5. MID 14.84
4. MID 540
3. MID 2.8
2. SECOND-LARGEST 168
1. LARGEST 40
Если иное невозможно, я бы хотел использовать чистое решение vim +, а не относительно продвинутые инструменты, такие как sed
/ awk
. Более важно знать себя, насколько ограничен режим визуального блока по сравнению, скажем, с визуальным режимом.
источник
sort
доступна внутренняя команда vim , поэтому вам не нужно вызывать external!sort
для выполнения обычной сортировки.:help filter
), но и стандартизировано (извините, я не знаю, как глубоко связать эту POS). Вы не можете жаловаться, если вы не RFTM.Ответы:
Я думаю, что ваша лучшая надежда - плагин vis.vim . Этот плагин предоставляет команду,
B
которая позволяет применить команду к блоку.Здесь после установки плагина вы выбираете свой блок и затем используете:
Обратите внимание, что команда может быть чем угодно, поэтому вместо
!sort
вас можно выполнить много другой обработки блока, например сохранить ее в другом файле (:'<,'>B w foo.txt
) или применить подстановку (:'<,'>B s/foo/bar/g
).источник
$
используется блочный визуальный режим.