Tanda kutip di LaTeX berbeda dari pada teks normal, karena diformat ``like this''
(atau `like this'
untuk tanda kutip tunggal). Ini membuatnya sulit untuk dinavigasi melalui mereka di Vim.
Saya biasanya menggunakan sesuatu seperti T`ct'
(mundur sampai `
, ganti sampai '
). Namun, ini kikuk dan tidak wajar. Saya lebih suka untuk dapat menggunakan sesuatu di sepanjang baris ciq
( "perubahan dalam tanda kutip"), seperti yang saya bisa lakukan ciw
, ca)
, ci"
, ca'
, dll
Apakah ada cara untuk memberitahu Vim untuk memperlakukan ``LaTeX'' `quotes'
sebagai objek teks? (Sebagai nilai tambah, apakah ada cara untuk hanya memicu ini saat mengedit .tex
file?)
sumber
iq
, tetapi tampaknya tidak bekerja dengan, misalnyadaq
,.aq
juga dengan pemetaan serupa yang serupa. Saya mengedit jawabannya. Saya juga bertukar T` dengan t 'dalam pemetaan sehingga mencari terlebih dahulu, yang tampaknya lebih alami bagi saya.daq
pada``foo''
hanya hasil dalam`foo'
.f
dant
operator mengizinkan, yang akan membutuhkan menulis seluruh fungsi dengan variabel dan segala sesuatu. Saya tidak punya waktu untuk melakukannya sekarang.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:
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 bahwatextobject-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.Ini membuat objek teks baru (
aq
daniq
) yang kembali ke sebelumnya`
, masuk ke mode pemilihan visual, lalu pilih ke yang berikutnya'
.Ini akan bekerja untuk
ciq
,caq
,yiq
, dandiq
. Namun,yaq
dandaq
tidak akan mencabut / menghapus tanda kutip luar, jadi saya membuat objek teks laina"
,, untuk mengatasinya (i"
tidak diperlukan, tapi saya menambahkan agar semuanya konsisten:Kelemahan utama di sini adalah bahwa ini akan merusak penggunaan normal
ca"
, dll. Jika Anda mendahului merekaau FileType tex
, Anda hanya akan memiliki masalah dalam.tex
file, tetapi kadang-kadang masih menjadi gangguan. Anda juga bisa memberi nama objek sepertiad
/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:
ma2F`v2f'<cr>`a
), Pastikan untuk tidak menggunakan kursor yang sering Anda gunakan secara manual)Untuk mengakhiri semua itu, inilah yang secara pribadi akan saya tambahkan ke saya
.vimrc
untuk masalah ini: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.sumber
Ini adalah pertanyaan lama tetapi untuk kepentingan pengunjung masa depan: Saya merasa lebih mudah untuk mengubah kutipan lateks dengan:
Dan kemudian
This thing is "Foobar"!
akan berfungsi dengan baik dalam vim dan lateks.sumber
Plugin
vim-sandwich
Plugin lain yang bermanfaat untuk ini adalah
vim-sandwich
yang telah menentukan lingkungan khusus-ftl`
ataul'
untuk`text'
,l"
untuk``text''
danDengan pemetaan default, pekerjaan berikut
`text'
dengancisl'
atau jika deteksi otomatis di sekitar terdekat baik-baik sajacib
(mis. kursorh
masuk`a (phony) text'
perlu ditekanvibibc
). Namun, Anda dapat menentukan objek teks tambahan berikutiq
(contoh OP)omap <unique> iq <Plug>(textobj-sandwich-query-i)l' xmap <unique> iq <Plug>(textobj-sandwich-query-i)l' omap <unique> aq <Plug>(textobj-sandwich-query-a)l' xmap <unique> aq <Plug>(textobj-sandwich-query-a)l' omap <unique> iQ <Plug>(textobj-sandwich-query-i)l" xmap <unique> iQ <Plug>(textobj-sandwich-query-i)l" omap <unique> aQ <Plug>(textobj-sandwich-query-a)l" xmap <unique> aQ <Plug>(textobj-sandwich-query-a)l"
Sekarang cukup dengan menekanciq
atauciQ
berfungsi.text
dengansaiwl'
apostrof tunggal untuk mendapatkan`text'
Pola perintah adalah
sa{motion/textobject}{surrounding}
dan sarana Invoke Operatoradd surrounding
diinner word
dan jenis surround adalahlatex single quote
.sdl'
atau dengansdb
srl'l"
atau dengansrbl"
Ini mendukung
sumber