Como pesquisar facilmente na lista de mapeamentos existentes?

7

De tempos em tempos, quero pesquisar na lista dos meus mapeamentos de correntes. Eu procuro por chaves mapeadas (o que /<Space>afaz?) Ou por um comando (Em que chaves estão mapeadas /MyFunction()<CR>?)

Eu sei que posso produzir esses mapeamentos com :map(ou :nmap, :vmapetc ...), mas isso abre uma janela onde eu posso apenas rolar e não usar o modo de pesquisa /.

Portanto, quando quero pesquisar nesta lista, tenho que usar redirpara colocar o resultado do comando em um novo arquivo, que abro no vim e uso o modo de pesquisa:

:redir > foo
:map
:redir END
:e foo

Eu sinto que esse fluxo de trabalho não é natural:

  • Ele usa muitos comandos em comparação com o que eu quero fazer.
  • Ele cria um novo arquivo que eu tenho que excluir.

Portanto, minha pergunta é : existe uma maneira mais natural de fazer uma pesquisa nas chaves mapeadas no momento?

Sei que poderia criar uma função que executasse esses comandos e um comando personalizado para chamar facilmente a função, mas estava pensando se não haveria uma maneira mais direta de fazê-lo.

statox
fonte

Respostas:

3

Uma maneira muito fácil de procurar um mapeamento usa um plugin . Mas a boa notícia é que você provavelmente já a possui.

O comando é:

:Unite mapping -start-insert

... então você basicamente digita diretamente seu termo de pesquisa e restringe a lista.


Sem um plug-in, você ainda pode restringir os resultados do mapa fornecendo o prefixo do mapa e seu tipo. Por exemplo:

:verbose xmap <leader>

... mostrará os mapeamentos definidos apenas para o modo visual e que começam com a tecla líder. Você não está limitado a um personagem lá (por exemplo, você pode usar xmap <leader>ae assim por diante).

VanLaser
fonte
Eu ouvi falar desse plugin antes, mas nunca tentei, vou tentar, obrigado! Além disso, a segunda sugestão é boa, mas não permite fazer o segundo tipo de pesquisa, ou seja, quais chaves são mapeadas para executar esta função.
statox
Na verdade - você pode fazer isso com a 1ª sugestão. E 'Unite' (e suas extensões) = a faca suíça de plugins Vim :)
VanLaser
11
Ok, eu vou olhar de perto, então muito obrigado!
statox
2

:map, :imape os amigos usam um argumento para que, em vez de emitir um comando genérico e depois filtrá-lo, você possa simplesmente emitir um comando específico desde o início:

:imap <CR>
romainl
fonte
Essa é uma ótima maneira de fazê-lo, obrigado, mas, quanto à resposta do VanLaser, ainda tenho uma pergunta: isso não me permite pesquisar MyFunctionpara saber quais teclas estão mapeadas para chamá-lo.
statox