Posso ver o histórico das teclas pressionadas no modo normal?


32

Eu sei que o Vim mantém histórico de comandos ex, pesquisas, locais de salto, alterações e possivelmente outros.

Com showcmdset, o Vim também mostra quais teclas você digitou até o momento para um comando no modo normal, até que esse comando seja executado.

Às vezes, quando no modo normal, eu digito errado e ações ocorrem. Posso desfazer essas ações, mas às vezes quero saber como ocorreram as edições durante meu erro. Às vezes, a edição parece legal e eu quero saber como repeti-la no futuro.

Portanto, existe alguma maneira de ver o histórico de pressionamentos de teclas no modo normal, preferencialmente delimitado quando uma edição ou ação real (como movimento ou mudança de modo) ocorre?


4
Possivelmente relacionado: drbunsen.org/vim-croquet
wchargin 07/02

Respostas:


20

Seguindo o link do @WChargin um pouco mais, achei o seguinte:

Você pode iniciar o vim com a opção -wou da -Wseguinte maneira:

vim -w keys.txt my_file

Todos os caracteres que você digita são gravados no arquivo {scriptout}, até você sair do Vim.

-wserá anexado ao arquivo especificado, se existir; -Wirá substituí-lo.

Não é exatamente o que você deseja, mas é a direção certa.

Atualização: Parece que o vim na verdade armazena todas as teclas pressionadas até você sair do vim, mas há um patch de uma linha aqui que escreverá as teclas imediatamente.


Obrigado! Estou usando isso como ponto de partida para inserir o código fonte. Parece que -w salva cada pressionamento de tecla, não apenas comandos no modo normal, mas você está correto: é a direção certa!
John O'M.

@xthrd, como esses keys.txtarquivos são formatados / estruturados? Quando uso -w, o acréscimo está sempre acontecendo em uma linha longa, longa; e há caracteres estranhos exibidos: em UTF-8, sempre que eu abrir um arquivo em um novo buffer, receberei €齛. Esse é um bom marcador por si só, mas seria ótimo se os logs pudessem ser analisados ​​opcionalmente.
Llinfeng 19/11

@llinfeng Não está formatado. É literalmente apenas um arquivo contendo as teclas digitadas na ordem em que foram feitas. (Embora observe que, se algumas das teclas forem pressionadas <cr>, o arquivo conterá quebras de linha.) Isso ocorre porque o objetivo principal é criar arquivos que possam ser reproduzidos com a -sopção Mas por que não experimentar por si mesmo!
Rich

@ Rich Obrigado por esclarecer. Eu usei esse mecanismo de rastreamento de chaves para depurar o problema que iniciou minha pesquisa. [Minha lição é que: não mapear Wpara a linha de comando.]
llinfeng

-4

Existe o q:que mostra um histórico de comando.

Também acho útil que você possa pressionar um comando parcialmente concluído para percorrer as correspondências. Por exemplo, /abc pressionar para cima percorrerá seu histórico de pesquisas começando com 'abc'


5
q: mostra o histórico ex comando e é útil, mas não é um log de comandos normais, como "ad2tn (exclua para registrar um até o segundo n)
John O'M.

Não se esqueça que, embora no meio da edição de um comando que você pode trazer a linha atual no editor de história e usar o vi para editar a linha pressionandoCtrl+f
Sukima
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.