Uso :r !uuidgen
frequentemente para inserir um novo uuid no buffer. Isso funciona, mas geralmente estou tentando inserir o uuid entre aspas e :r !uuidgen
imprime o uuid em uma nova linha.
Para contornar esse problema, atualmente estou usando um mapa de teclas simples:
nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp
Essa macro define a marca mm
, insere o uuid r!uuidgen
, exclui o uuid inserido dW
, exclui a linha extra "_dd
, volta à marca BACKTICKm
e, finalmente, cola o uuid p
.
Existe uma maneira de :r
seguir o cursor sem essa macro / combinação de teclas que desperdiça um registro?
Respostas:
Você pode usar a expressão registradora
"=
esystem()
:Seria assim em um mapeamento no modo de inserção:
ou, com um mapeamento de expressão:
fonte
No modo de inserção, você pode clicar Ctrl-Re digitar:
Observe que isso adicionará uma nova linha à direita, porque é isso que
uuidgen
gera; para consertar isso, poderíamos usar:Para remover a nova linha.
De
:help i_CTRL-R
:Para vincular isso Ctrl-ucomo seu exemplo, você pode usar:
fonte
Mais um, com
:python
:Você pode mapear como:
Os UUIDs são gerados pelo módulo Python UUID .
fonte
Talvez seja menos preferível do que usar uma solução pure-vim, no entanto, se você usar um gerenciador de trechos como o Ultisnips , poderá tentar adicionar um trecho como o seguinte:
Dessa forma, você pode digitar
uuid
e pressionar seu gatilho de expansão no modo de inserção euuid
será substituído pela saída do comando shell relevante. Obviamente, isso pode ser facilmente adaptado a outros comandos e expandido de maneiras poderosas, conforme descrito nos documentos do Ultisnips.fonte