optimalkan surround dengan tanda kutip

Dec 22 2020

Saya ingin mengelilingi sebuah kata dengan tanda kutip

Ini set perintah saya:

  • ciw
  • kemudian ketika saya dalam mode penyisipan, saya mengetik '(saya menggunakan
    ekstensi vim pada kode Visual jadi saya mendapatkan dua 'saya tidak tahu apakah itu kasus untuk "normal" vim)
  • lalu Ctrl+ C+t
  • kemudian p

Ini berfungsi, tetapi mungkin ada versi yang lebih pendek untuk mencapai ini. Bisakah Anda membantu?

Jawaban

2 Macunaíma Dec 22 2020 at 20:54

Anda dapat mencoba plugin vim-surround . Untuk memasukkan kata ke dalam tanda kutip, Anda akan pergi ysiw'. Plugin memberi Anda kemampuan untuk:

  • tambahkan ( ysiw")

    word -> "word"
    
  • ubah ( csiw"')

    'word'
    
  • hapus ( ds')

    word
    

lingkungan tidak hanya kata-kata sigle tetapi dari semua jenis objek teks:

  • kelilingi kata-kata di dalam tanda kurung ( ysi)")

    def func(some sequence of words) -> def func("some sequence of words")
    
  • ubah tanda kurung menjadi tanda kurung siku ( cs)])

    list = (var1, var2, var3) -> list = [var1, var2, var3] 
    
2 BLayer Dec 22 2020 at 20:43

Jika Anda menggunakan ekstensi VS Code yang menurut saya Anda demikian, maka pemahaman saya adalah bahwa ia mendukung setidaknya beberapa plugin dan salah satunya adalah vim-surround . Jika itu masalahnya dan Anda terbuka untuk menggunakan plugin, langsung saja ke paragraf terakhir. Jika tidak, baca terus.

Dari mode Normal dengan kursor pada karakter pertama dari kata yang dapat Anda lakukan ...

i"<C-O>f<Space>"<Esc>

Ctrl-O, dari Sisipkan, mari kita masukkan satu perintah mode Normal sebelum kembali ke Sisipkan.

f<Space> pergi ke karakter spasi berikutnya pada baris (setelah kata).

Masalahnya adalah jika kata tersebut tidak diikuti oleh spasi (misalnya Anda berada di akhir baris atau diikuti dengan tanda baca). Anda perlu menyesuaikan perintah mode Normal (misalnya ke f.atau $<Left>).

Itu hanya satu contoh bagaimana mencapai ini tetapi saya pikir daripada mencoba mengoptimalkan perintah manual Anda harus menggunakan sesuatu yang lebih kuat (tapi rumit) dan memasukkannya ke dalam pemetaan. Misalnya perintah substitusi ini:

:%s/\<\w*\%#\w*\>/"&"

Yang mengatakan ambil posisi kursor ( \%#) dan karakter kata apa pun yang mengelilinginya (keduanya \w*) dan ganti dengan dirinya sendiri yang diapit oleh tanda kutip.

Pemetaan mode Normal untuk ini:

:nnoremap <leader>q :%s/\<\w*\%#\w*\>/"&"<CR>

Sekarang Anda telah mengoptimalkan semuanya hingga satu atau dua tombol tekan ... berapa pun panjang pemetaan yang Anda pilih.

Apa yang benar-benar saya sarankan adalah Anda baru saja mendapatkan plugin vim-surround . Kemudian Anda dapat dengan mudah membungkus kata (dan lainnya) dengan apa pun yang biasanya Anda gunakan untuk membungkus kata (mis. Tanda kurung).