
Внутренние и внешние текстовые объекты word в vim ведут себя по-разному при сочетании с подсчетом. Учитывая текст (курсор находится внутри слова first
)
first second third fourth
оба y2iw
поместят первое слово в регистр, y3iw
/ y4iw
первые два слова и т. д. Поэтому мне нужно как минимум y7iw
выдернуть все четыре (внутренних) слова. Для внешних слов указанное количество соответствует количеству выдернутых слов.
Почему iw
в этом случае два объекта соответствуют одному слову, и можно ли добиться iw
поведения, аналогичного aw
?
решение1
Введите около 5 пробелов и выполните следующие действия viw
: эти 5 пробелов выбираются, поскольку iw
также рассматриваются \s+
как отдельный «объект».
В вашем примере у вас есть 7 iw
объектов:
yiw
дергаетfirst
в безымянном регистре.y2iw
копируетfirst
(с конечным пробелом) в безымянный регистр.y3iw
yanksfirst second
(с пробелом) в безымянном регистре.y4iw
копируетfirst second
(с пробелами) в безымянный регистр.- И так далее…
С другой стороны, aw
считает, что словои любое количество следующих пробеловкак «объект».
В вашем примере у вас есть 4 aw
объекта:
yaw
копируетfirst
(с конечным пробелом) в безымянный регистр.y2aw
копируетfirst second
(с конечным пробелом) в безымянный регистр.y3aw
копируетfirst second third
(с конечным пробелом) в безымянный регистр.y4aw
дергаетfirst second third fourth
в безымянном регистре.
Если вы хотите iw
вести себя как , aw
просто используйте aw
.