Imagine que você deseja citar a palavra abaixo. Se |
é a posição do cursor, você pode citar facilmente a palavra no cw""<Esc>P
modo Normal.
|below
Eu quero alcançar o mesmo comportamento no modo de linha de comando. Minha pergunta é como posso dizer ao modo de linha de comando que desejo digitar um <Esc>
. Eu tentei :norm cw""<Esc>P
e algumas outras variações, mas eu fico ""<Esc>P
em vez de "below"
.
Ainda relacionado a isso, gostaria de saber como posso fazer com que o modo de linha de comando digite comandos Ctrl. Por exemplo, eu poderia citar a palavra acima mencionada cw"<C-r>""<Esc>
. Mas então eu precisaria da linha de comando para digitar <C-r>
para mim. Como posso fazer isso?
command-line
Gonçalo Ribeiro
fonte
fonte
<C-x><C-e>
na linha de leitura para editar a linha de comando$EDITOR
, você tem<C-f>
no Vim para abrir a janela da linha de comando. Veja:help cmdline-window
.Respostas:
<C-v>
é o que você está procurando. Permite inserir caracteres literais (por exemplo, um literal emEsc
vez da string "Esc") sem exigir que você escape de nada.exibe como:
e fará o que quiser (ou seja, cite a palavra). Você também pode usar isso com outros
<C-?>
mapeamentos. Por exemplo, sua segunda solicitação:exibe como:
E resultará no mesmo que o acima. Não há necessidade de incluir o extra
Esc
no final.fonte
Isso ocorre porque teclas especiais como
<Esc>
não são traduzidas emnormal
comandos e são tratadas como você pressionou <Esc>. Para remediar isso, você pode usar umexec
comando. Igual a:Observe que você deve colocar uma barra invertida antes das aspas e
<Esc>
, e usar aspas simples em vez de aspas duplas não funcionará.fonte
"\<C-{insert key}>"
O modo de linha de comando é diferente; você não pode usar os mesmos comandos de edição (modo normal) lá. Você pode encontrar uma lista de comandos em
:help c_CTRL-V
.Agora, há a janela da linha de comando (
:help command-line-window
), que pode ser inseridaq:
no modo normal e<C-F>
na linha de comando. Em que janela, você pode usar todos os comandos normais e mapeamentos, de modo que seria a opção 1.A opção 2 é mapeamentos especiais para o modo de linha de comando. Como eu disse, você não pode usar a abordagem via
:normal
et al. A chave para definir esses é o:help c_CTRL-\_e
mapeamento, que "avalia [s] {expr} e substitui [s] toda a linha de comando pelo resultado". Aqui está um exemplo simples que só funciona corretamente no final da linha de comando:fonte