Katakanlah saya memiliki baris kode ini:
$query = "SELECT * FROM table";
Apakah ada perintah di vi / vim yang dapat langsung menghapus semua yang ada di antara tanda kutip dan menempatkan kursor di antara keduanya sehingga saya dapat mulai mengetik?
vim
, tapi TIDAKvi
. (Tidak yakin)F"ci"
.Anda dapat memilih di antara tanda kutip dan kemudian delete (
d
), change (c
) dll. MenggunakanDemikian pula, Anda dapat mengganti tanda kurung, tanda kurung, elemen XML, dll. Jadi:
atau untuk sekadar mengubah / menghapus, lakukan sesuai
di"
,ci"
dll Menggantia
untuki
kehendak meliputi elemen sekitarnya (sehingga Anda menandai atau mengubah kurung dan isi, misalnya)sumber
Saya telah membuat plugin
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesIni menyediakan objek teks untuk pasangan terdekat dari kutipan jenis apa pun dan mendukung kutipan yang mencakup beberapa baris. Hanya menggunakan
iq
atauaq
memungkinkan Anda untuk mengoperasikan konten tanda kutip tunggal ('), ganda ("), atau belakang (`) yang saat ini mengelilingi kursor, berada di depan kursor, atau di belakang (dalam urutan preferensi itu) Dengan kata lain, itu melompat maju atau mundur saat dibutuhkan untuk mencapai kutipan.Lebih mudah dipahami dengan melihat contoh (kursor ditunjukkan dengan
|
):foo '1, |2, 3' bar
:; setelah menekandiq
:foo '|' bar
foo| '1, 2, 3' bar
:; setelah menekandiq
:foo '|' bar
foo '1, 2, 3' |bar
:; setelah menekandiq
:foo '|' bar
foo '1, |2, 3' bar
:; setelah menekandaq
:foo | bar
foo| '1, 2, 3' bar
:; setelah menekandaq
:foo | bar
foo '1, 2, 3' |bar
:; setelah menekandaq
:foo | bar
Contoh di atas diberikan untuk tanda kutip tunggal, plugin bekerja dengan cara yang persis sama untuk tanda kutip ganda (") dan kembali (`).
Anda juga dapat menggunakan operator lain:
ciq
,diq
,yiq
,viq
, dllSilakan lihat halaman github yang ditautkan di atas untuk lebih jelasnya.
sumber
Dari sudah di dalam kutipan yang bisa Anda lakukan
Bacalah sebagai hapus di dalam "
sumber
Selain jawaban Brian, Anda juga dapat
p
(paste) dany
(yank) nilai baru, jadi jika Anda ingin mengganti nilai di dalam tanda kutip dengan nilai lain, Anda dapat melakukanyi"
seleksi yang ingin Anda salin,vi"
untuk memilih area yang ingin Anda ganti dan kemudian hanyap
untuk mengganti nilainya dengan benar.sumber
Jawaban yang dipilih HANYA cocok untuk ViM tetapi TIDAK untuk vi. Pertanyaannya juga tidak akurat karena penulis tidak menyebutkan posisi awal kursor. Jika kita berasumsi bahwa kursor berada di dalam tanda kutip ganda maka untuk vi jawabannya adalah:
Dimana:
T "- mundur tepat setelah karakter"
c - ubah perintah
t "- memberikan posisi akhir untuk perintah c, di mana ia harus berhenti menghapus karakter, dengan kata lain rentang untuk diubah
sumber