Utilizo con :r !uuidgen
frecuencia para insertar un nuevo uuid en el búfer. Esto funciona, pero generalmente intento insertar el uuid entre comillas e :r !uuidgen
imprimo el uuid en una nueva línea.
Para solucionar este problema, actualmente estoy usando un mapa de teclas simple:
nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp
Esta macro establece la marca mm
, inserta el líquido r!uuidgen
, elimina el líquido insertado dW
, elimina la línea extra "_dd
, vuelve a la marca BACKTICKm
y finalmente pega el líquido p
.
¿Hay alguna manera de :r
justo después del cursor sin esta macro / combinación de teclas que desperdicia un registro?
Respuestas:
Puede usar el registro de expresión
"=
ysystem()
:Se vería así en una asignación de modo de inserción:
o, con un mapeo de expresión:
fuente
Desde el modo de inserción, puede presionar Ctrl-Ry luego escribir:
Tenga en cuenta que esto agregará una nueva línea final, porque eso es lo que
uuidgen
genera; para solucionar esto, podríamos usar:Para eliminar la nueva línea.
De
:help i_CTRL-R
:Para vincular esto a Ctrl-usu ejemplo, puede usar:
fuente
Uno más, con
:python
:Puedes mapear como:
Los UUID son generados por el módulo UUID de Python .
fuente
Esto es quizás menos preferible que usar una solución de vim puro, sin embargo, si usa un administrador de fragmentos como Ultisnips, entonces podría intentar agregar un fragmento como el siguiente:
De esta manera, puede escribir
uuid
y presionar su disparador de expansión en modo de inserción yuuid
será reemplazado con la salida del comando de shell correspondiente. Esto, por supuesto, puede adaptarse fácilmente para otros comandos y ampliarse de manera poderosa como se describe en los documentos de Ultisnips.fuente