Ao usar o set showcmd
Vim, mostra comandos parciais na última linha da tela. Por exemplo, no modo Normal, ao digitar o comando, dt.
a última linha é exibida dt
e, quando você pressiona .
o comando, é concluída e, portanto, nada é mostrado.
Existe uma maneira de mostrar comandos completos? Por exemplo, ao digitar dt.gU(
, primeiro dt.
seria mostrado; e ao começar a digitar o segundo comando, o primeiro seria limpo, de modo que, no final, apenas gU(
seria exibido.
Isso pode ser útil, por exemplo, para ilustrar GIFs; e verificar se você digitou o que queria se encontrar algum resultado inesperado.
options
command-history
Gonçalo Ribeiro
fonte
fonte
dt
é mostrado porque é o operador atual pendente. Depois que uma moção é apresentada, não é mais um operador pendente. Suponha que fomos mais longe, e fizemos maisdt.gU(gu)daw
ou menos. Tudo isso é "um comando completo", ou são quatro comandos completos, ou algo mais?dt.gU(
existem 2 comandos:dt.
egU(
.... Então, o que você realmente deseja é mostrar algum tipo de histórico de comandos (o Vim já está mostrando os "comamnds completos").src/normal.c
chamadas de códigoclear_showcmd()
em vários lugares (normal_cmd()
,do_pending_operator()
,end_visual_mode()
). Estou brincando de despejar em um arquivoshowcmd_buf
nesses pontos, o que parecia muito bom, mas me garante que você não poderá obter o que deseja sem modificar da mesma forma o código-fonte do Vim e reconstruí-lo. Claro, fazer isso pode valer a pena o aborrecimento de criar seus gifs.Respostas:
Não consegui encontrar nenhuma maneira de fazer isso em um Vim comum. No entanto, se você estiver disposto a corrigir o Vim, o seguinte poderá funcionar para você.
O patch muito simples (aplicado ao Vim-7.4.052) desativa a atualização real na tela que limpa o histórico no final de um comando normal. Isso é feito retornando se está ou não
showcmd_is_clear
definido antes da atualização da exibição. (Alternativamente, você pode comentar a declaração se e deixar apenas o originalreturn
linha. Nota : O patch abaixo não colar muito bem, você pode ter que aplicar isso à mão, embora seja apenas uma frase curta. Nota : Não comentei o realdisplay_showcmd()
porque ele parece ser usado no modo visual para atualizar a exibição do número de linhas selecionadas ou outras possíveis outras coisas.Não testei extensivamente isso.O resultado fica assim:
Algumas coisas interessantes a serem observadas:
j
,k
,b
, etc.x
comando realmente se tornadl
no showcmd_buf.:
comando ou entrando no modo de inserção (pelo menos na minha configuração))"
, mas minha sequência de teclas fica visível na janela do vim para o meu arranque especificado de registro longo.^[
na área showcmdfonte
Além da solução John , há outra maneira de mostrar todas as teclas pressionadas no vim pressionadas usando o
-w
parâmetro que registra todos os caracteres digitados no arquivo. O problema é que o vim grava pressionamentos de teclas somente quando você sai do Vim. É assim que o VimGolf funciona.Para contornar isso, Kana Natsuno criou esse patch de linha única , que desativa o buffer da
-w
opção, para que você tenha acesso ao fluxo de pressionamentos de teclas em tempo real. Então é uma questão de lê-los (por exemplotail -f
), analisar ou você pode tentar exibi-los na barra de status (:set statusline
).Confira uma versão personalizada do Vim usando o ramo de pressionamentos de teclas ao vivo do Drew do MacVim, para obter o fluxo em tempo real de pressionamentos de teclas.
Fonte: Vimprint - um analisador de pressionamento de tecla Vim no blog Drew Neil
Isso é útil se você deseja revelar as teclas pressionadas pelo Vim em tutoriais em vídeo ou GIFs.
fonte