No meu ~/.vimrc
, eu tenho um comando definido aproximadamente assim:
nnoremap <expr> <Leader>n ':new ~/Notes/' . strftime('%F') . '-'
Ele foi projetado para criar arquivos de notas que contêm a data atual no nome do arquivo. A combinação de teclas foi projetada para deixar meu cursor na linha de comando para que eu possa digitar o tópico da nota e pressionar Return.
Isso funciona de dentro do vim fine. No entanto, também estou tentando especificar um comando de terminal que possa ser usado para abrir o vim e disparar esse comando. Eu tentei:
vim -c '\n'
(meu Líder está definido como padrão \
, o qual eu preferiria não mudar)
No entanto, isso não funciona - em vez disso, apenas recebo o erro detectado ao processar a linha de comando: E10: \ deve ser seguido por /,? ou & . Não tenho certeza se isso é um bug no vim ou se estou fazendo algo errado. Eu também tentei:
vim -c '<Leader>n'
Mas isso fornece: Erro detectado ao processar a linha de comando: E488: Caracteres finais: n Pressione ENTER ou digite o comando para continuar .
Existe uma maneira de conseguir o que eu quero?
fonte
-c
não executa combinações de teclas no modo normal; ele executa comandos (com o que você normalmente faz :). Então você precisa usar oexecute
comando, que parece funcionar:Precisamos do dobro,
\\
porque estamos emitindo um comando shell (e não queremos que o shell interprete isso como uma sequência de escape).Testado com o keybind:
Não consigo
:execute "normal <Leader>t"
trabalhar; obter o valor demapleader
também é um pouco mais envolvido, pois você recebe um erro se não tiver definidomapleader
nada e usar o padrão de\
.fonte
nnoremap <Leader>x ':new ~/Desktop/x.txt'
para remover o <expr>. Masvim -c 'execute "normal \\x"'
indica "Erro detectado ao processar a linha de comando: E78: marca desconhecida". Alguma idéia do porquê?VimEnter
autocmd ou algo assim? ... Eu não tenho tempo para investigar agora, se ninguém mais encontrar uma resposta hoje à noite, vou dar uma olhada (deixarei essa resposta por enquanto), porque isso parece uma espécie se coisa que eu gostaria de ter / uso bem :-)Se seu objetivo é usar o mapleader e você o redefinir no seu .vimrc
deixe mapleader = ','
isso não funcionaria. Você pode usar
em vez de.
mas se você planeja usar essa funcionalidade na linha de comando, é melhor encapsular a funcionalidade em uma função e chamá-la diretamente.
fonte