:r !uuidgen
Często używam do wstawiania nowego UUID do bufora. To działa, ale ogólnie próbuję wstawić identyfikator użytkownika między cudzysłowami i :r !uuidgen
wypisuje go w nowej linii.
Aby obejść ten problem, używam obecnie prostej mapy klawiszy:
nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp
To makro ustawia znak mm
, wstawia identyfikator UUID r!uuidgen
, usuwa wstawiony identyfikator UUID dW
, usuwa dodatkową linię "_dd
, wraca do znaku BACKTICKm
i na koniec wkleja UUID p
.
Czy istnieje sposób :r
tuż za kursorem bez tego przypisania makra / klawisza, które marnuje rejestr?
Odpowiedzi:
Możesz użyć rejestru wyrażeń
"=
isystem()
:To wyglądałoby tak w trybie mapowania w trybie wstawiania:
lub z mapowaniem wyrażeń:
źródło
W trybie wstawiania możesz nacisnąć Ctrl-R, a następnie wpisać:
Zauważ, że doda to końcowy znak nowej linii, ponieważ to właśnie
uuidgen
wyjściowe; aby to naprawić, możemy użyć:Aby usunąć nową linię.
Od
:help i_CTRL-R
:Aby powiązać to z Ctrl-utwoim przykładem, możesz użyć:
źródło
Jeszcze jedno
:python
:Możesz mapować jako:
Identyfikatory UUID są generowane przez moduł UUID języka Python .
źródło
Jest to być może mniej preferowane niż użycie rozwiązania czystego vima, jednak jeśli używasz menedżera fragmentów, takiego jak Ultisnips, możesz spróbować dodać fragment taki jak:
W ten sposób możesz wpisać
uuid
i nacisnąć twój rozwijany wyzwalacz w trybie wstawiania iuuid
zostanie on zastąpiony wyjściem odpowiedniego polecenia powłoki. Można to oczywiście łatwo dostosować do innych poleceń i rozwinąć w potężny sposób, jak opisano w dokumentach Ultisnips.źródło