Dans mon ~/.vimrc
, j'ai une commande définie à peu près comme ceci:
nnoremap <expr> <Leader>n ':new ~/Notes/' . strftime('%F') . '-'
Il est conçu pour créer des fichiers de notes contenant la date actuelle dans le nom de fichier. La liaison de touches est conçue pour laisser mon curseur sur la ligne de commande afin que je puisse taper le sujet de la note et appuyer sur Return.
Cela fonctionne de l'intérieur de vim fine. Cependant, j'essaie également de spécifier une commande de terminal que je peux utiliser pour ouvrir vim, puis déclencher cette commande. J'ai essayé:
vim -c '\n'
(mon Leader est réglé sur la valeur par défaut de \
, que je préférerais ne pas modifier)
Cependant, cela ne fonctionne pas - au lieu de cela, je reçois juste une erreur détectée lors du traitement de la ligne de commande: E10: \ devrait être suivi de /,? ou & . Je ne sais pas si c'est un bug dans vim ou si je fais quelque chose de mal. J'ai aussi essayé:
vim -c '<Leader>n'
Mais cela donne: Erreur détectée lors du traitement de la ligne de commande: E488: Caractères de fin: n Appuyez sur ENTRÉE ou tapez commande pour continuer .
Existe-t-il un moyen de réaliser ce que je veux?
la source
-c
n'exécute pas les raccourcis clavier en mode normal; il exécute des commandes (ce que vous faites normalement avec :). Vous devez donc utiliser laexecute
commande, qui semble fonctionner:Nous avons besoin du double
\\
parce que nous émettons une commande shell (et ne voulons pas que le shell l'interprète comme une séquence d'échappement).Testé avec le raccourci clavier:
Je ne peux pas aller
:execute "normal <Leader>t"
travailler; obtenir la valeur demapleader
est également un peu plus compliqué car vous obtenez une erreur si vous ne définissezmapleader
rien et utilisez la valeur par défaut de\
.la source
nnoremap <Leader>x ':new ~/Desktop/x.txt'
pour supprimer le <expr>. Maisvim -c 'execute "normal \\x"'
donne "Erreur détectée lors du traitement de la ligne de commande: E78: Marque inconnue". Des pensées pourquoi?VimEnter
autocmd ou quelque chose comme ça? ... Je n'ai pas le temps d'enquêter en ce moment, si personne d'autre ne trouve une réponse ce soir, je vais y réfléchir (je laisserai cette réponse pour le moment), car cela semble une sorte si quelque chose que je voudrais avoir / utiliser aussi :-)Si votre objectif est d'utiliser mapleader et que vous l'avez redéfini dans votre .vimrc
laissez mapleader = ','
ça ne marcherait pas. Vous pouvez utiliser
au lieu.
mais si vous prévoyez d'utiliser cette fonctionnalité à partir de la ligne de commande, il est préférable d'encapsuler la fonctionnalité sur une fonction et de l'appeler directement.
la source