Как оставить только две первые слова (удалить все остальное) в каждой строке в Vim?Формула Vim оставить только две первые слова в каждой строке
E.g.
AA AA subst:pl:acc:m3+subst:pl:acc:n2
aa ad acta brev:npun
в
AA AA
aa ad
Как оставить только две первые слова (удалить все остальное) в каждой строке в Vim?Формула Vim оставить только две первые слова в каждой строке
E.g.
AA AA subst:pl:acc:m3+subst:pl:acc:n2
aa ad acta brev:npun
в
AA AA
aa ad
Применяется ко всем линиям:
:%s/\v^(\s*\S+\s+\S+).+/\1/
Как об использовании макроса:
<ESC>gg
qa2wDj0
q
и повторять это с помощью
@a
Вы можете указать количество, говоря
[email protected]
Вы можете использовать свою любимую :normal
команду:
:%norm EElD
или AWK:
:%!awk '{print $1, $2}'
или замену, если реальный файл не похож на предоставленный образец:
:%s/\S\+\s\+\S\+\zs.*
: D Я тоже влюбился в это, но, пожалуйста, обратите внимание, что ваша первая строка оставляет первую строку в файле UNCHANGED! –
Нет, это не так. – romainl
EElD не работает, если некоторые строки содержат менее двух слов, просто работал над добавлением этого в мой ответ, но я не мог это исправить. –
Благодарим за такой быстрый ответ! Это толстый :) –
Что означает '\ v' в начале? –
@AvinashRaj: ': help \ v' –