Digamos que tengo
let l:letter = 'A'
¿hay una función que tome el l:letter
código ascii y lo transforme 'B'
? Me refiero a algo como
let l:next_letter = l:letter + 1
Sé que hay <Ctrl-A>
con set nf=alpha
, pero eso requiere tener el cursor sobre el carácter en el documento y me preguntaba si es posible hacerlo con una variable sin modificar el documento.
Esto es lo que intento hasta ahora, pero como dije, modifica el documento y la posición del cursor:
fu! s:get_next_char(letter)
set nf=octal,hex,alpha
call setline(line('$') + 1, a:letter)
exe ':normal! G^'."\<C-A>"
set nf=octal,hex
let l:next_letter = getline('$')
normal! Gdd
return l:next_letter
endfu
:help string-functions
.string-functions
no es una página de manual estándar global para todos los idiomas, en serio.:help string-functions
como un poco oscuro. Además, algunos lenguajes de script como python y perl usanchr()
yord()
funciones para convertir a ascii / character. Por lo tanto, la búsqueda con estos términos tampoco mostraría las funcionesnr2char
ychar2nr
. Creo que el comentario de @ romainl debería publicarse como respuesta.man man
.:help :help
Es igualmente importante. Pero la documentación de VIM es bastante masiva y difícil de entender los primeros años. Así trucos como:h function^D
darnos puntos de entrada. Aquí estaría:h functions
(/:h string-functions
). Entonces, es fácil entender qué está haciendo qué. Incluso si estamos acostumbrados a otros idiomas. Siempre podemos darle la información (que es lo que estamos haciendo la mayor parte del tiempo), sino enseñar a pescar que es más importante - se conoce el proverbio ...:help string-functions
no muestra cómo pescar. Es más como darle el anzuelo a alguien y no enseñarle a pescar en absoluto. Publicar cómo pueden buscar funciones es enseñarles a pescar.Respuestas:
Es fácil de hacer con
:help nr2char()
y:help char2nr()
.Ejemplo de uso:
:let b_char = nr2char(char2nr('A') + 1)
Luego,
:echo b_char
devolverá 'B'fuente
La pregunta es (énfasis mío):
Como desea una función , lo primero que debe intentar es
:help function<C-d>
enumerar todas las etiquetas de documentación que contienenfunction
:El candidato más obvio es
function-list
, probémoslo:Es posible que haya notado un patrón, aquí: las funciones están agrupadas por tema. Esto significa que, si necesita una función para filtrar una lista , puede ir directamente a
:help list-functions
.Las páginas de ayuda de Vim son muy útiles; muchas veces
:help <keyword><C-d>
te llevará lejos ;-)fuente