Detecta se uma chave está ligada a algo no vim


89

Gostaria de saber se existe uma maneira de descobrir se uma chave faz algo in vim. Eu sei que posso usar :mappara ver mapeamentos definidos pelo usuário, mas há algo para o material integrado?

Por exemplo, sempre tive CTRL- Wvinculado a fechar a guia, porque pensei que não estava sendo usada. Depois de meio ano, descobri que existem algumas sequências que o usam, como CTRL- W CTRL- Spara dividir a janela, e foi um pesadelo me treinar novamente.


4
Falando em colisões acidentais de mapeamentos definidos pelo usuário, é realmente uma boa prática usar mapleader
derenio

Respostas:


78

Se você verificar a resposta sugerida por Randy Morris, você descobrirá que

:help index 

lhe dará a lista que você deseja.


muito útil! bom saber que há um lugar que você pode procurar se quiser apenas
fuçar

40

Para verificar o mapeamento padrão:

:help index

Para outro mapeamento feito por usuários ou plug-in:

:map
:map!

De http://vim.wikia.com/wiki/Mapping_keys_in_Vim_- Tutorial (Parte_1) :

O primeiro comando exibe os mapas que funcionam em modo normal, visual e selecione e operador pendente. O segundo comando exibe os mapas que funcionam no modo de inserção e linha de comando.

Normalmente, a saída dos comandos acima abrange várias páginas. Você pode usar o seguinte conjunto de comandos para redirecionar a saída para o arquivo vim_maps.txt:

:redir! > vim_maps.txt
:map
:map!
:redir END

A menos que as versões mais recentes do Vim de repente ofereçam uma alternativa melhor, essa parece ser a única maneira de pesquisar os mapas de teclado incluídos e personalizados. mapcheck(como mencionado em outra resposta ) também abrange apenas atalhos de teclado personalizados. A principal diferença entre a saída para um arquivo de texto e a verificação de mapa é que a saída para um arquivo de texto e / ou usando :help indexpermite que você /C-wno Vim encontre qualquer coisa usandoC-w
Zoe

34

Não é uma resposta completa, mas você pode querer verificar a :help map-which-keyslista de chaves que o vim recomenda que você use em seus mapas personalizados.

Essa seção de ajuda tem uma recomendação de como saber se uma tecla específica está mapeada para uma ação.


19

Use :map!e :mappara definir manualmente as chaves e :help 'char(-combination)'descobrir quais chaves já estão mapeadas no vim fora da caixa (/ fora de suas opções de compilação específicas). (Um pouco fora do assunto, mas ainda respeitável (eu acho): use :scriptnamespara ver quais arquivos foram originados em qual ordem.)


Se você deseja pesquisar quais teclas acionam um determinado comando, você pode fazer o seguinte:: redir keys.txt: map: redir end Em seguida, abra keys.txt e pesquise quais comandos estão vinculados.
Christian Oudard

18

Eu folheei :help indexe fiz uma lista de algumas das nmapchaves não utilizadas :

  • Q (mudar para o modo "Ex")
  • Z exceto ZZ, ZQ
  • \
  • <Space>(igual lao modo normal; a chave maior e mais subutilizada no modo normal)
  • gb, gc, gl, gx, gy, gz
  • gs (dormir)
  • zp, zq, zu, zy
  • cd, cm, co, cp, cq, cr, cs, cu, cx, cy
  • dc, dm, do, dp, dq, dr, ds, du, dx, dy
  • gA, gB, gC, gG, gK, gL, gM, gO, gS, gX, gY, gZ
  • zB, zI, zJ, zK, zP, zQ, zP, zS, zT, zU, zV, zY, zZ
  • ] a,] b,] e,] g,] h,] j,] k,] l,] n,] o,] q,] r,] t,] u,] v,] w,] x ,] y
  • [a, [b, [e, [g, [h, [j, [k, [l, [n, [o, [q, [r, [t], [u, [v, [w, [x , [y
  • CTRL-G, CTRL-K
  • CTRL- \ a - z (reservado para extensões)
  • CTRL- \ A - Z (não usado)

Por favor, atualize / comente.


12

Você pode usar mapcheck.: -

Por exemplo, eu queria mapear <CR> ,ipara gg=Gum arquivo com recuo. Para verificar se já existe um mapeamento para<CR> , i

if mapcheck("\<CR>", "I") == "" |echo "no mapping"

... mas isso não detectará se o mapeamento faz parte de uma sequência.


Tentei verificar se "o" está vinculado a algo no modo normal, com o seguinte: if mapcheck ("o", "N") == "" | echo "sem mapeamento", mas informa "sem mapeamento", quando o está definitivamente vinculado a "abrir nova linha". Estou usando errado?
K. Norbert

@ K.Norbert: Acredito que isso seja para mapeamentos definidos pelo usuário
Moha, o camelo todo-poderoso,
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.