J'essaie de faire quelque chose qui sonne super facile, mais pour une raison quelconque, cela ne fonctionne pas. La commande: déplace la ligne de courant à droite en dessous de la ligne 10, et p> imprime le numéro de ligne de la ligne deux lignes à partir du curseur. Après avoir lu la documentation, j'ai écrit cette commande: p> Il a entraîné cette erreur: p> M14: adresse non valide p>
blockQquote> J'ai donc compris que les fonctions ne sont pas évaluées à moins que j'utilise le symbole
= code>, alors j'ai essayé: p> :echo type(5)
0
:echo type(line("."))
0
3 Réponses :
Pour évaluer une expression et transmettre à une commande ex-mode, vous devez utiliser la commande exécuter code>. Dans votre cas, cela fonctionne: :execute "m" line(".") - 2
Je vous suggère d'utiliser une adresse relative comme suit: pour plus d'aide Voir: P> :h range
+1 une solution bien meilleure à mon problème, merci! L'autre réponse a répondu à la question cependant.
En fait, votre réponse originale était presque correcte:
:m <C-R>=line(".") - 2
+1 Je suis émerveillé à quel point toutes les réponses à ces questions sont géniales: p
Au fait, la raison pour laquelle je pose cette question est de faire une cartographie de clé qui déplace la ligne actuelle vers le haut ou le bas. Cette méthode peut-elle être mappée sur une clé? Quand j'essaie, je viens d'obtenir la même erreur que celle que je cite dans la question.
Vous voudrez peut-être consulter UNIMPAIRED.VIM par Tim Pope. Fournit les mappages [E code> et ] E code> pour échanger des lignes. Github.com/tpope/vim-unimpaired