: satır sonrası yerine imleçten sonra oku


11

:r !uuidgenArabelleğe yeni bir uuid eklemek için sık sık kullanıyorum . Bu işe yarıyor, ancak genellikle uuid'i tırnak arasına yerleştirmeye çalışıyorum :r !uuidgenve uuid'i yeni bir satıra yazdırıyor.

Bu sorunu çözmek için, şu anda basit bir tuş haritası kullanıyorum:

nnoremap <C-u> mm:r!uuidgen<CR>dW"_dd`mp

Bu makro işareti ayarlar, mmuuid'i ekler, r!uuidgeneklenen uuid'i dWsiler, ekstra satırı siler "_dd, işarete geri döner BACKTICKmve son olarak uuid'i yapıştırır p.

:rBir kayıt israf bu makro / tuş bağlama olmadan imleç sonra sağa bir yolu var mı ?


1
SU sorusu , bunun gibi geçici çözümlerle de.
muru

Yanıtlar:


8

İfade kaydını kullanabilir "=ve system():

<C-r>=system("uuidgen | tr -d '\n'")<CR>

Bir ekleme modu eşlemesinde şöyle görünür:

inoremap <key> <C-r>=system("uuidgen | tr -d '\n'")<CR>

veya bir ifade eşlemesi ile:

inoremap <expr> <key> system("uuidgen \| tr -d '\n'")

5

Ekleme modundan vurabilir Ctrl-Rve yazabilirsiniz:

=system('uuidgen')

Bunun sonunda bir satırsonu ekleyeceğini unutmayın, çünkü uuidgençıktı budur; Bunu düzeltmek için şunları kullanabiliriz:

=system('uuidgen')[:-2]

Yeni satırı kaldırmak için.

Gönderen :help i_CTRL-R:

Bir kaydın içindekileri ekleyin. CTRL-R yazmak ile ikinci karakter arasında, bir kaydın adını girmeniz gerektiğini belirtmek için '"' görüntülenecektir.

[..]

'=' ifade kaydı: bir ifade girmeniz istenir (ifadeye bakın)

Bunu Ctrl-uörneğinize benzer şekilde bağlamak için şunları kullanabilirsiniz:

nnoremap <C-u> i<C-r>=system('uuidgen')[:-2]<CR><Esc>

2

Bir tane daha :python:

:py import uuid, vim; vim.command(':normal i' + str(uuid.uuid1()))

Şu şekilde eşleştirebilirsiniz:

:inoremap <key> <esc>:py import uuid, vim; vim.command(':normal a' + str(uuid.uuid1()))<cr>a

UUID'ler Python UUID modülü tarafından oluşturulur .


1
Yine de, bu, devam etmek için oldukça bükülmüş bir yoldur.
muru

0

Bu, salt vim çözümü kullanmaktan daha az tercih edilebilir, ancak Ultisnips gibi bir snippet yöneticisi kullanıyorsanız , aşağıdaki gibi bir snippet eklemeyi deneyebilirsiniz :

snippet uuid "insert new uuid" w
`uuidgen`
endsnippet

Bu şekilde uuidekleme kipinde genişletme tetikleyicinizi yazıp vurabilirsiniz ve uuidbunun yerine ilgili kabuk komutunun çıktısı gelir. Bu, elbette, diğer komutlara kolayca uyarlanabilir ve Ultisnips belgelerinde belirtildiği gibi güçlü yollarla genişletilebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.