En mi ~/.vimrc
, tengo un comando definido aproximadamente así:
nnoremap <expr> <Leader>n ':new ~/Notes/' . strftime('%F') . '-'
Está diseñado para crear archivos de notas que contienen la fecha actual en el nombre del archivo. La combinación de teclas está diseñada para dejar mi cursor en la línea de comando para que pueda escribir el tema de la nota y presionar Return.
Esto funciona desde dentro de vim bien. Sin embargo, también estoy tratando de especificar un comando de terminal que puedo usar para abrir vim y luego activar este comando. He intentado:
vim -c '\n'
(mi Líder está configurado en el valor predeterminado de \
, que preferiría no cambiar)
Sin embargo, esto no funciona; en su lugar, solo se detecta un error al procesar la línea de comando: E10: \ debería ir seguido de /,? o & . No estoy seguro de si esto es un error en vim o si estoy haciendo algo mal. También probé:
vim -c '<Leader>n'
Pero esto da: Error detectado al procesar la línea de comando: E488: Caracteres finales: n Presione ENTER o escriba comando para continuar .
¿Hay alguna manera de lograr lo que quiero?
fuente
-c
no ejecuta combinaciones de teclas en modo normal; ejecuta comandos (lo que normalmente haces con :). Por lo tanto, debe usar elexecute
comando, que parece funcionar:Necesitamos el doble
\\
porque estamos emitiendo un comando de shell (y no queremos que el shell interprete esto como una secuencia de escape).Probado con la combinación de teclas:
No puedo ir
:execute "normal <Leader>t"
a trabajar; obtener el valor demapleader
también es un poco más complicado, ya que obtiene un error si no configurómapleader
nada y utiliza el valor predeterminado de\
.fuente
nnoremap <Leader>x ':new ~/Desktop/x.txt'
para eliminar el <expr>. Perovim -c 'execute "normal \\x"'
da "Error detectado al procesar la línea de comando: E78: Marca desconocida". ¿Alguna idea de por qué?VimEnter
autocmd o algo así? ... No tengo tiempo para investigar en este momento, si a nadie más se le ocurre una respuesta esta tarde, lo investigaré (dejaré esta respuesta por el momento), porque esto parece una especie de cosa que me gustaría tener / usar también :-)Si su objetivo es usar mapleader y lo ha redefinido en su .vimrc
let mapleader = ','
Eso no funcionaría. Puedes usar
en lugar.
pero si planea usar esa funcionalidad desde la línea de comandos, es mejor encapsular la funcionalidad en una función y llamarla directamente.
fuente