Eu não entendo a definição vim
s de uma palavra. Da ajuda para o movimento w
( :h w
):
w [count] words forward. |exclusive| motion.
These commands move over words or WORDS.
*word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, ). This can be changed with the 'iskeyword' option.
Isso significa que quando invoco o w
motion, o vim precisa verificar quais caracteres
pode inventar uma palavra com a ajuda da opção iskeyword
. Então vamos verificar
de quais personagens uma palavra pode ser composta:
:set iskeyword?
iskeyword=@,48-57,_,192-255
Vamos testar isso com caracteres não incluídos nos personagens
listado na opção iskeyword
, por ex. %código%. Pressionando U+015B LATIN SMALL LETTER S
WITH ACUTE
on ga
nos informa que tem o decimal
valor 347, que é maior que 255 e, portanto, fora da faixa de
%código%. O cursor é colocado no ś
of treść e eu pressiono iskeyword
:
treść bar
^ (cursor)
O resultado:
treść bar
^ (cursor)
Se uma palavra puder ser composta de letras, dígitos, sublinhados e
outros caracteres, a única possibilidade é que o vim trate o t
como
uma carta , já que obviamente não é um dígito ou um sublinhado.
Vamos verificar como descobrir se um personagem é uma carta. De w
:
The following character classes are supported:
[:alpha:] [:alpha:] letters
Um teste com
/[[:alpha]]
mostra que ś
não é considerado uma carta.
Por que o cursor pulou para :h
:alpha:
if ś
não é uma letra,
nem um dígito, nem um sublinhado e não listado em b
?
Testado no VIM - Vi IMproved 7.3 (2010 Ago 15, compilado em Dez 27 2012 21:21:18)
Patches incluídos: 1-762 no Debian GNU / Linux com locale definido como
ś
.