Saya :r !uuidgen
sering menggunakan untuk memasukkan uuid baru ke buffer. Ini berfungsi, tetapi saya biasanya mencoba memasukkan uuid di antara tanda kutip, dan :r !uuidgen
mencetak uuid di baris baru.
Untuk mengatasi masalah ini, saya saat ini menggunakan keymap sederhana:
nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp
Makro ini menetapkan tanda mm
, memasukkan uuid r!uuidgen
, menghapus uuid yang disisipkan dW
, menghapus garis ekstra "_dd
, kembali ke tanda BACKTICKm
, dan akhirnya menempelkan uuid p
.
Apakah ada cara untuk :r
langsung setelah kursor tanpa makro / keybinding ini yang membuang register?
Jawaban:
Anda dapat menggunakan register ekspresi
"=
dansystem()
:Akan terlihat seperti itu dalam pemetaan mode penyisipan:
atau, dengan pemetaan ekspresi:
sumber
Dari mode penyisipan, Anda dapat menekan Ctrl-R, lalu ketik:
Perhatikan bahwa ini akan menambahkan baris tambahan, karena itulah yang
uuidgen
dihasilkan; untuk memperbaiki ini, kita dapat menggunakan:Untuk menghapus baris baru.
Dari
:help i_CTRL-R
:Untuk mengikat ini agar Ctrl-umenyukai contoh Anda, Anda dapat menggunakan:
sumber
Satu lagi, dengan
:python
:Anda dapat memetakan sebagai:
UUID dihasilkan oleh modul Python UUID .
sumber
Ini mungkin kurang disukai daripada menggunakan solusi pure-vim, namun, jika Anda menggunakan manajer snippet seperti Ultisnips maka Anda bisa mencoba menambahkan snippet seperti berikut:
Dengan cara ini Anda bisa mengetik
uuid
dan menekan pemicu ekspansi Anda dalam mode insert danuuid
akan diganti dengan output dari perintah shell yang relevan. Ini, tentu saja, dapat dengan mudah diadaptasi untuk perintah lain dan diperluas dengan cara yang kuat seperti yang diuraikan dalam dokumen Ultisnips.sumber