Komut satırı modu türünü <Esc> ve Ctrl komutlarını yapın


11

Aşağıdaki kelimeyi alıntılamak istediğinizi düşünün. Eğer |imleç konumu kolayca ile kelime alıntı cw""<Esc>PNormal modundan.

|below

Komut satırı modunda aynı davranışı elde etmek istiyorum. Benim sorum bir yazmak istediğim Komut Satırı moduna nasıl söyleyebilirim <Esc>. Denedim :norm cw""<Esc>Pve diğer bazı varyasyonlar ama sadece ""<Esc>Pyerine alıyorum "below".

Hala bununla ilgili nasıl Komut satırı modu türü Ctrl komutları yapabilirim bilmek istiyorum. Mesela yukarıda bahsedilen kelimeyi bununla birlikte alıntılayabilirim cw"<C-r>""<Esc>. Ama sonra benim için yazmak <C-r>için Komut Satırı'na ihtiyacım var. Bunu nasıl yapabilirim?


1
Orada Tıpkı <C-x><C-e>komut satırı düzenlemek için taleb de $EDITOR, sahip <C-f>komut satırı penceresi açmak için Vim. Bkz :help cmdline-window.
romainl

Yanıtlar:


11

<C-v>aradığınız şey bu. EscHiçbir şeyden kaçmanıza gerek kalmadan değişmez karakterler (örneğin, "Esc" dizesi yerine değişmez) girmenize olanak tanır .

:norm cw""<C-v><Esc>P

şu şekilde görüntülenir:

:norm cw""^[P

ve istediğinizi yapacaksınız (yani kelimeyi alıntılayın). Bunu diğer <C-?>eşlemelerle de kullanabilirsiniz . Örneğin, ikinci isteğiniz:

:norm cw"<C-v><C-r>""

şu şekilde görüntülenir:

:norm cw"^R""

Ve yukarıdaki ile aynı sonuç verecektir. EscSonuna ekstra dahil etmeye gerek yok .


10

Bunun nedeni, özel tuşların komutlarda <Esc>çevrilmemesi normalve bastığınız gibi işlem görmesidir <Esc>. Bunu düzeltmek için bir execkomut kullanabilirsiniz . Şöyle ki:

:exec "norm cw\"\"\<Esc>P"

Tırnak işaretlerinden önce ve ters eğik çizgi koymanız gerektiğini ve <Esc>çift ​​tırnak yerine tek tırnak kullanmanın işe yaramayacağını unutmayın.


Bu Ctrl komutları için de geçerli mi? Onları komutta nasıl yazmalıyım?
Gonçalo Ribeiro

Evet, işe yaramalı. Bunları şöyle yazabilirsiniz:"\<C-{insert key}>"
EvergreenTree

2

Komut satırı modu farklıdır; orada aynı (normal mod) düzenleme komutlarını kullanamazsınız. Komutların listesini adresinde bulabilirsiniz :help c_CTRL-V.

Şimdi, normal ve komut satırı modundan girilebilen komut satırı penceresi ( :help command-line-window) var . Gelen bu pencerede, tüm olağan komutları ve eşleştirmeleri kullanabilirsiniz böylece seçenek 1 olacaktır.q:<C-F>

Seçenek 2, komut satırı modu için özel eşlemelerdir. Dediğim gibi, yaklaşımı :normalet al. Bunları tanımlamanın anahtarı :help c_CTRL-\_e, "[s] {expr} 'ı değerlendiren ve [s] komut satırının tamamını sonuçla değiştiren eşleme'dir. Yalnızca komut satırının sonunda düzgün çalışan basit bir örnek:

:cnoremap <F1> <C-\>esubstitute(getcmdline(), '\w\+$', '"&"', '')<CR>

1
Ben OP komut satırı için eşleme oluşturmak için değil, komut satırından bir eşleme yürütmek anlamına geliyordu.
EvergreenTree
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.