Manipuler les caractères avec leur code ascii

8

Disons que j'ai

let l:letter = 'A'

existe-t-il une fonction qui prend le l:lettercode ascii et le transforme 'B'? Je veux dire quelque chose comme

let l:next_letter = l:letter + 1

Je sais qu'il y a <Ctrl-A>avec set nf=alpha, mais cela nécessite d'avoir le curseur sur le caractère dans le document et je me demandais s'il était possible de le faire avec une variable sans modifier le document.

Voici ce que j'essaie jusqu'à présent, mais comme je l'ai dit, cela modifie le document et la position du curseur:

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
Jcao02
la source
1
:help string-functions.
romainl
2
@romainl merci pour l'astuce, mais la prochaine fois, tenez compte du fait que j'ai peut-être programmé en vimscript pendant quelques jours et pour ce que je sais, ce string-functionsn'est pas une page de manuel standard mondiale pour chaque langue, sérieusement.
Jcao02
2
Je suis d'accord avec @ Jcao02, la connaissance préalable de l'intégralité des pages d'aide de Vim n'est pas une exigence de ce site. Et je dirais :help string-functionsque c'est un peu obscur. De plus, certains langages de script comme python et perl utilisent chr()et ord()fonctionnent pour convertir en ascii / caractère. Donc, la recherche avec ces termes n'afficherait pas non plus les fonctions nr2charet char2nr. Je pense que le commentaire de @ romainl devrait plutôt être publié comme réponse.
akshay
2
Je suis d'accord avec romainl: il est très important de savoir comment naviguer dans les pages d'aide de vim. Mes premiers cours de coquille m'ont appris man man. :help :helpest tout aussi important. Mais la documentation vim est assez massive et difficile à comprendre les premières années. Ainsi des astuces comme :h function^Dnous donnent des points d'entrées. Ici, ce serait :h functions(/ :h string-functions). Ensuite, il est facile de comprendre ce qui fait quoi. Même si nous sommes habitués à d'autres langues. Nous pouvons toujours donner les informations (c'est ce que nous faisons la plupart du temps), mais apprendre à pêcher c'est plus important - vous connaissez le proverbe ...
Luc Hermitte
2
@LucHermitte Je dirais que le simple fait de poster :help string-functionsne montre pas comment pêcher. C'est plus comme donner à quelqu'un l'appât et ne pas lui apprendre à pêcher du tout. Afficher comment ils peuvent rechercher des fonctions, c'est leur apprendre à pêcher.
akshay

Réponses:

2

La question est (soulignement le mien):

existe-t-il une fonction qui prend le l:lettercode ascii et le transforme en «B»?

Puisque vous voulez une fonction , la première chose à essayer est de :help function<C-d>répertorier chaque balise de documentation contenant function:

:function                    list-functions               folding-functions
function()                   time-functions               history-functions
functions                    mark-functions               mapping-functions
function-key                 text-functions               various-functions
function_key                 compl-function               numbered-function
function-list                local-function               autoload-functions
:function-verbose            spell-functions              quickfix-functions
function-argument            float-functions              complete-functions
nb-functions                 style-functions              anonymous-function
function-search-undo         ft-ada-functions             Dictionary-function
gui-functions                string-functions             completion-functions
arg-functions                server-functions             window-size-functions
var-functions                cursor-functions             interactive-functions
function-range-example       window-functions             command-line-functions
expr-function                buffer-functions             highlighting-functions
new-functions-5.2            system-functions             curly-braces-function-names
date-functions               syntax-functions             python-Function
dict-functions               xterm-function-keys          :endfunction
file-functions               vt100-function-keys          :delfunction
user-functions               bitwise-function

Le candidat le plus évident est function-list, essayons-le:

There are many functions.  We will mention them here, grouped by what they are
used for.  You can find an alphabetical list here: |functions|.  Use CTRL-] on
the function name to jump to detailed help on it.

String manipulation:                    *string-functions*
    nr2char()       get a character by its ASCII value
    char2nr()       get ASCII value of a character
    [...]

Vous avez peut-être remarqué un schéma, ici: les fonctions sont regroupées par thème. Cela signifie que, si vous avez besoin d'une fonction pour filtrer une liste, vous pouvez y accéder directement :help list-functions.

Les pages d'aide de Vim sont très utiles; souvent, les temps vous :help <keyword><C-d>mèneront loin ;-)

romainl
la source