Menambahkan tanda kurung di sekitar teks yang disorot di Vim


14

Apakah ada fungsi di Vim yang memungkinkan tanda kurung ditambahkan di sekitar teks yang disorot?

Misalnya, jika saya menyoroti n = getchar()di if (n = getchar() == '\n'), saya ingin menempatkan kurung di sekitar itu.

Jawaban:


18

Anda memerlukan surround plugin yang mengagumkan dan wajib dimiliki . Kemudian, ia akan dengan senang hati melakukan apa yang Anda inginkan jika Anda memilih teks dan ketik Sb(kurung kurawal), atau S)(perhatikan huruf kapital S!).

Ini sebenarnya dapat melakukan banyak hal di sekitarnya: berbagai tanda kutip, tag, dll. Ini memungkinkan Anda untuk meletakkan kursor dalam kata yang dikutip ganda dan mengubah tanda kutip ganda menjadi tanda kutip tunggal dengan mengetik: cs"'(ubah-ubah "menjadi '). Atau Anda dapat menghapus kutipan dengan mengetik ds"(delete-surround ").

Baca dokumen dengan tautan, ini sungguh luar biasa!


1
Anda tidak menjelaskan bagaimana melakukannya dengan seleksi. Saya dituntun ke sini karena itu tidak segera jelas.
JackHasaKeyboard

@JackHasaKeyboard, apa maksudmu saya tidak menjelaskan bagaimana melakukannya dengan seleksi? Kalimat kedua dalam jawaban saya mengatakan:> Lalu, ia akan dengan senang hati melakukan apa yang Anda inginkan jika Anda memilih teks dan jenis sb(kurung kurawal), atau s).
Dmitry Frank

1
Jadi kamu melakukannya. Tidak bekerja untuk saya, memukul shanya menghapus seleksi dan masuk ke mode insert.
JackHasaKeyboard

1
Ini berarti bahwa plugin "surround" yang saya sebutkan dalam jawaban saya tidak diinstal dengan benar.
Dmitry Frank

Memang luar biasa. Saya sudah menggunakannya untuk sementara waktu dan bisa bertaruh.
biocyberman

20

Selain saran Dmitry tentang plugin surround , menambahkan tanda kurung di sekitar teks yang disorot dapat dilakukan dengan perintah berikut:

xi()<Esc>P

Anda dapat mengatur peta dalam mode visual menggunakan (misalnya) \sdengan menambahkan berikut ini ke ~/.vimrcfile Anda :

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

1
Ini terlihat seperti solusi yang bagus dan sederhana. Jika saya tidak menemukan masalah dengan ini di masa depan, saya akan lebih suka ini daripada plugin tambahan. Terima kasih!
Zelphir Kaltstahl

3
Ini adalah solusi yang baik, tetapi tidak selengkap menggunakan plugin surround karena tidak berfungsi jika Anda memilih seluruh baris (menggunakan Vbukan v). Dalam hal ini hanya menempelkan garis di bawah parens Anda.
Rohan Orton

1

Kurung lh hanya mengikat (untuk mengelilingi seleksi dengan kurung. Tidak seperti surround, ia tidak mengikuti filosofi vib seperti biasa. Sebaliknya diperlukan lebih sedikit kunci.

Kalau tidak, ada banyak cara untuk melanjutkan. Jika Anda tidak keberatan mengacaukan register yang tidak disebutkan namanya, Anda juga menggunakan s(^R")<esc>( ^Rseperti CTRL-R)


0

Membangun berdasarkan jawaban dotancohens, saya menempatkan yang berikut ini di .vimrc:

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

Anda dapat dengan mudah membuat pemetaan serupa untuk [], {}, dll. Ini berfungsi dengan melompat ke penanda awal dan akhir yang secara implisit diatur setelah mengakhiri mode visual. Dengan cara ini memilih seluruh baris akan menambahkan parens pada awal / akhir dari baris pertama / terakhir; itu tidak akan menimpa daftar yank Anda; dan itu akan meninggalkan kursor tepat sebelum paren pembuka.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.