Comment vider un registre si l'utilisateur entre le nom du registre?Vider le registre dans vimscript
p.e.
let r = inputdialog(toregister)
let @r = ""
(r = caractère reçu de inputdialog)
Cela ne fonctionne pas non plus:
let @{r} = ""
Comment vider un registre si l'utilisateur entre le nom du registre?Vider le registre dans vimscript
p.e.
let r = inputdialog(toregister)
let @r = ""
(r = caractère reçu de inputdialog)
Cela ne fonctionne pas non plus:
let @{r} = ""
let r = inputdialog("which register do you want to empty?")
exe 'let @'.r.' = ""'
Ne pas oublier de tester r
est un omble chevalier à long , et dans az plage (afin d'éviter l'injection de code)
ou'/',' -', '" ', ... – Benoit
@Luc, merci, cela fonctionne. Je ne comprends toujours pas pourquoi je ne peut pas utiliser {} pour créer une variable à la volée, comme pour les autres variables – Reman
@Remonn: les registres sont limités Vous ne pouvez pas créer vos propres registres, les 26 caractères avec lettres, plus les registres à 10 chiffres, plus quelques registres spéciaux ('/', '" ',' _', '-',': ','. ','% ',' # ',' * ',' + ',' ~ ',' = 'qui est le plus spécial de tous) sont tous les registres disponibles. Voir ': registres d'aide'. Donc, il n'y a pas de registre que vous pouvez créer, supprimer, unlet ou manipuler en dehors de cette liste. – Benoit
Au lieu d'utiliser :execute
et d'avoir à être au courant des injections de code, je vous suggère d'utiliser setreg
fonction:
call setreg(tolower(r), "")
tolower()
est ici parce que si utilisateur fournit A
comme un nom de registre alors une chaîne vide sera ajoutée à a
registre au lieu de le vider.
setreg()
prendra seulement le premier octet de r
et si elle est le nom de registre valide, aucune erreur sera jeté (setreg("abc", "")
videra registre a
).
belle solution! Je vous remercie. – Reman
La solution de ZyX est bien meilleure que la mienne, quand 'setreg()' est disponible. –
Ok, veuillez reformuler la question. 'si le registre est créé à partir de inputdialog' n'est pas clair par aucun effort d'imagination – sehe