Vim'de vurgulanan metnin etrafına parantez ekleme


14

Vim'de, vurgulanan metnin etrafına parantez eklenmesine izin veren bir işlev var mı?

Ben vurgulamak Örneğin, n = getchar()içinde if (n = getchar() == '\n'), bunun etrafında parantez koymak isterim.

Yanıtlar:


18

Harika ve olması gereken bir eklenti surround gerekir . Daha sonra, metin seçip Sb(surround-braces) veya S)(büyük S harfini not edin!)

: Bu çift tırnaklı kelime imleci koymak ve yazarak tek tırnak çift tırnak değiştirmenizi sağlar vb, etiketler, çeşitli tırnak: Aslında çevredeki bir çok şey yapabilir cs"'(değişim-Surround "için '). Veya ds"(delete-surround ") yazarak tırnak işaretlerini tamamen silebilirsiniz .

Dokümanları linkle okuyun, gerçekten harika!


1
Bununla birlikte, seçim ile nasıl yapılacağını açıklamak değildi. Buraya geldim çünkü hemen belli değildi.
JackHasaKeyboard

@JackHasaKeyboard, seçim ile nasıl yapılacağını açıklamam ne demek istiyorsun? Cevabımdaki ikinci cümle şöyle diyor:> O zaman, metin ve yazısb (surround-braces), veya seçerseniz mutlu bir şekilde istediğinizi yapar s).
Dmitry Frank

1
Sen yaptın. Yine de benim için çalışmıyor, vurmak ssadece seçimi siler ve ekleme moduna girer.
JackHasaKeyboard

1
Bu, cevabımda bahsettiğim "surround" eklentisinin doğru yüklenmediği anlamına geliyor.
Dmitry Frank

Gerçekten de. Bir süredir kullanıyorum ve bahse girebilirim.
biocyberman

20

Dmitry'nin surround eklentisi önerisine ek olarak , vurgulanan metnin etrafına parantez eklemek aşağıdaki komutla yapılabilir:

xi()<Esc>P

Dosyanıza \saşağıdakileri ekleyerek (örneğin) kullanarak görsel modda bir harita ayarlayabilirsiniz ~/.vimrc:

xnoremap <leader>s xi()<Esc>P

1
Bu güzel ve basit bir çözüm gibi görünüyor. Gelecekte bununla ilgili herhangi bir sorun bulamazsam, bunu ek eklentilere tercih ederim. Teşekkürler!
Zelphir Kaltstahl

3
Bu iyi bir çözümdür, ancak tüm satırları seçiyorsanız ( Vyerine kullanmak yerine v) surround eklentisini kullanmak kadar eksiksiz değildir . Bu durumda sadece parensinizin altındaki çizgileri yapıştırır.
Rohan Orton

1

lh-braketleri( , seçimi parantez ile çevrelemek için basitçe bağlanır . Surround'un aksine , her zamanki gibi tuş bağlama felsefesini takip etmez. Bunun yerine daha az anahtar gerekir.

Aksi takdirde, ilerlemenin birçok yolu vardır. Adsız kaydı bozmazsanız, s(^R")<esc>( ^Rgibi CTRL-R)


0

Dotancohens cevabına dayanarak, aşağıdakilere koyuyorum .vimrc:

xnoremap <leader>( <ESC>`>a)<ESC>`<i(<ESC>

[], {} Vb. İçin benzer eşlemeler kolayca yapabilirsiniz. Görsel modu bitirdikten sonra örtülü olarak ayarlanan başlangıç ​​ve bitiş işaretlerine atlayarak çalışır. Bu şekilde tüm çizgilerin seçilmesi, birinci / son çizginin başına / sonuna parens ekleyecektir; yank kaydınızın üzerine yazmaz; ve imleci açılış pareninden hemen önce bırakacaktır.

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.