Sunting : Saya baru saja menemukan plugin vim-textobject-latex , yang menambahkan fungsionalitas tepat yang Anda cari (selain beberapa hal lainnya). Dari README plugin:
Objek teks yang didukung saat ini adalah:
a i Description
a\\ i\\ Inline math surrounded by ``\\(`` and ``\\)``.
a$ i$ Inline math surrounded by dollar signs.
aq iq Single-quoted text ``\`like this'``.
aQ iQ Double-quoted text ``\``like this''``.
ae ie Environment ``\begin{...}–\end{...}``
Jadi Anda bisa menggunakan caq
dan sejenisnya seperti yang Anda inginkan. Saya mengujinya, dan berfungsi seperti yang diiklankan, tetapi perhatikan bahwa itu tergantung pada plugin vim-textobject-user . Perhatikan juga Anda harus memastikan bahwa textobject-user
plugin memuat terlebih dahulu , jika tidak semuanya tidak akan berfungsi.
Namun, jika Anda tidak ingin mengacaukan plugin, jawaban asli saya tetap berguna:
Menambahkan dua baris ini ke Anda .vimrc
akan mencakup sebagian besar yang Anda inginkan.
onoremap aq :<c-u>normal! F`vf'<cr>
onoremap iq :<c-u>normal! T`vt'<cr>
Ini membuat objek teks baru ( aq
dan iq
) yang kembali ke sebelumnya `
, masuk ke mode pemilihan visual, lalu pilih ke yang berikutnya '
.
Ini akan bekerja untuk ciq
, caq
, yiq
, dan diq
. Namun, yaq
dan daq
tidak akan mencabut / menghapus tanda kutip luar, jadi saya membuat objek teks lain a"
,, untuk mengatasinya ( i"
tidak diperlukan, tapi saya menambahkan agar semuanya konsisten:
onoremap a" :<c-u>normal! 2F`v2f'<cr>
onoremap i" :<c-u>normal! 2T`v2t'<cr>
Kelemahan utama di sini adalah bahwa ini akan merusak penggunaan normal ca"
, dll. Jika Anda mendahului mereka au FileType tex
, Anda hanya akan memiliki masalah dalam .tex
file, tetapi kadang-kadang masih menjadi gangguan. Anda juga bisa memberi nama objek seperti ad
/ id
('d' untuk 'double' quote), tapi itu sepertinya kurang intuitif bagi saya (saya bertujuan untuk perbedaan paling sedikit dari operasi normal).
Satu-satunya cara saya bisa memikirkan untuk membungkus ini menjadi hanya dua objek teks adalah dengan menulis fungsi yang memeriksa kutipan lain di luar set pertama dan mengatur aq
objek teks untuk memanggil itu.
Catatan : Ada beberapa masalah kecil lainnya dengan ini:
- Yanking mungkin meninggalkan kursor Anda di tempat yang tidak terduga (ini bisa diperbaiki dengan menambahkan menggunakan tanda pada perintah (mis.
ma2F`v2f'<cr>`a
), Pastikan untuk tidak menggunakan kursor yang sering Anda gunakan secara manual)
- Kursor harus berada di dalam tanda kutip; hal-hal aneh terjadi jika ada di kutipan.
Untuk mengakhiri semua itu, inilah yang secara pribadi akan saya tambahkan ke saya .vimrc
untuk masalah ini:
augroup filetype_latex
au!
au FileType tex,plaintex onoremap a' :<c-u>normal! muF`vf'<cr>`u
au FileType tex,plaintex onoremap i' :<c-u>normal! muT`vt'<cr>`u
au FileType tex,plaintex onoremap a" :<c-u>normal! mu2F`v2f'<cr>`u
au FileType tex,plaintex onoremap i" :<c-u>normal! mu2T`v2t'<cr>`u
end augroup
Seperti yang Anda lihat, saya memilih untuk melanggar fungsionalitas normal ca'
/ ya"
/ etc jadi saya tidak perlu belajar perintah baru karena saya tidak akan menggunakan fungsionalitas normal sebanyak di dalam LaTeX. Itu hanya preferensi pribadi; tidak sulit untuk berganti nama objek. Saya juga menambahkan deteksi filetype dan tanda.
iq
, tetapi tampaknya tidak bekerja dengan, misalnyadaq
,.