Eu sei que a execução de :map
comandos sem argumentos deve me fornecer uma lista de mapeamentos definidos pelo usuário, mas, por exemplo, quando eu pressiono Ctrl-W Ctrl-I algo acontece, mas não tenho idéia de qual função aconteceu apenas como mapeamentos internos não aparece nos :map
comandos.
Como descubro o que uma chave faz?
key-bindings
Mad Wombat
fonte
fonte
:help CTRL-W_CTRL-I
ou:help CTRL-W_i
Respostas:
Você não pode.
Aqui está o código fonte C para o que
<C-w><C-i>
faz:normal.c
:window.c
:Não tenho muita certeza de onde a
type
variável é captada, não estava com vontade de procurá-la, mas o ponto é que não há nenhuma facilidade real para dizer "essa chave está mapeada para essa funcionalidade". É basicamente apenas umstruct
que mapeia achar
para uma função, e a implementação do segundo pressionamento de tecla (<C-i>
) é simplesmente feiura ad-hoc!Isso é diferente do Emacs, onde (presumo) tudo está no Lisp, e seus mapeamentos personalizados não são diferentes dos mapeamentos padrão do Emacs. Mas no Vim você tem mapeamentos "mágicos" que são fornecidos pelo código C que mapeiam contra funções C que nunca são expostas no Vim. Eu sempre digo que o Vim tem a melhor ideia, mas o Emacs tem a melhor implementação ;-)
Portanto, a única maneira é procurar nos arquivos de ajuda. É por isso que encerrei isso como uma duplicata de Como navego para tópicos na documentação do Vim, já que essa é a única resposta prática que alguém pode dar. Alguém poderia de fato argumentar que uma explicação mais aprofundada para a questão poderia ser dada (como acabei de fazer), e você argumentou que , em vez de dar a resposta (agora excluída), eu provavelmente teria dito "você" está certo, desculpe pelo erro "e o abriu novamente ;-)
De qualquer forma, para ilustrar brevemente as convenções com alguns exemplos:
:help w
- mapeamento de modo normal paraw
(diferencia maiúsculas de minúsculas);:help g8
- mapeamento de modo normal parag8
;:help v_o
- mapeamento de modo visual parao
; outros modos sãoc
para linha de comando ei
inserção;:help CTRL-W
- mapeamento de modo normal para<C-w>
;:help i_CTRL-W
- inserir modo de mapeamento para<C-w>
;:help CTRL-W_CTRL-I
- mapeamento de modo normal para<C-w><C-i>
;:help i_CTRL-G_<Down>
- inserir mapeamento de modo para<C-g><Down>
.fonte
commandline completion
na ajuda do vim usando CTRL-D (eu chamo de "pesquisa na ajuda"). Digite:h CTRL-W
e pressione <CTRL-D>, e você obterá uma lista de todos os comandos que contêm a string "CTRL-W", por exemploCTRL-W, CTRL-W_^, CTRL-W-<Down>, ...
,. Digite:h g8<CTRL-D>
e você verág8
e,8g8
como assuntos de ajuda disponíveis. Sem isso, você precisa digitar o assunto da ajuda exatamente e encontrar a string exata que funciona é difícil.Está nos arquivos de ajuda do vim em
:help index
Se você deseja saber quais chaves não são mapeadas por padrão, consulte
:help map-which-keys
Nota: os links acima são clicáveis para o último manual de referência do vim
fonte
Eu acho que você pode obter os mapeamentos através dos seguintes comandos
Espero que ajude!
fonte