แก้ไข : ฉันเพิ่งค้นพบปลั๊กอินvim-textobject-latexซึ่งเพิ่มฟังก์ชันการทำงานที่แน่นอนที่คุณกำลังมองหา (นอกเหนือจากสิ่งอื่น ๆ ) จาก README ของปลั๊กอิน:
วัตถุข้อความที่รองรับในปัจจุบันคือ:
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{...}``
เพื่อให้คุณสามารถใช้caq
และไม่ชอบตามที่คุณต้องการ ฉันทดสอบแล้วใช้งานได้ตามที่โฆษณา แต่โปรดทราบว่ามันขึ้นอยู่กับปลั๊กอินvim-textobject-user นอกจากนี้โปรดทราบว่าคุณต้องตรวจสอบให้แน่ใจว่าtextobject-user
ปลั๊กอินโหลดก่อนไม่เช่นนั้นจะใช้งานไม่ได้
หากคุณไม่ต้องการยุ่งกับปลั๊กอินคำตอบเดิมของฉันยังคงมีประโยชน์:
เพิ่มสองบรรทัดที่คุณ.vimrc
ปกพระทัยมากที่สุดของสิ่งที่คุณต้องการ
onoremap aq :<c-u>normal! F`vf'<cr>
onoremap iq :<c-u>normal! T`vt'<cr>
เหล่านี้สร้างวัตถุข้อความใหม่ ( aq
และiq
) ที่กลับไปก่อนหน้านี้`
, '
เข้าสู่โหมดเลือกภาพแล้วเลือกขึ้นต่อไป
นี้จะทำงานciq
, caq
, และyiq
diq
อย่างไรก็ตามyaq
และdaq
จะไม่ดึง / ลบเครื่องหมายคำพูดด้านนอกดังนั้นฉันจึงสร้างวัตถุข้อความอื่นa"
เพื่อจัดการกับมัน ( i"
ไม่จำเป็น แต่ฉันเพิ่มเพื่อให้สิ่งต่าง ๆ สอดคล้องกัน:
onoremap a" :<c-u>normal! 2F`v2f'<cr>
onoremap i" :<c-u>normal! 2T`v2t'<cr>
ข้อเสียที่สำคัญที่นี่คือสิ่งนี้จะผิดปกติca"
ฯลฯ ใช้ หากคุณนำหน้าพวกเขาด้วยau FileType tex
คุณจะมีปัญหานั้นใน.tex
ไฟล์เท่านั้น แต่บางครั้งก็อาจเป็นเรื่องน่ารำคาญ คุณสามารถตั้งชื่อวัตถุเช่นad
/ id
('d' สำหรับเครื่องหมายคำพูด 'double') แต่มันดูง่ายกว่าสำหรับฉัน
วิธีเดียวที่ฉันคิดว่าจะห่อสิ่งเหล่านี้ลงในวัตถุข้อความสองชิ้นเท่านั้นคือการเขียนฟังก์ชั่นที่ตรวจสอบการอ้างอิงอื่นนอกชุดแรกและตั้งค่าaq
วัตถุข้อความให้เรียกสิ่งนั้น
หมายเหตุ : มีปัญหาเล็กน้อยอีกสองสามประการเกี่ยวกับสิ่งเหล่านี้:
- Yanking อาจทิ้งเคอร์เซอร์ไว้ในที่ที่ไม่คาดคิด (อาจแก้ไขได้โดยการเพิ่มโดยใช้เครื่องหมายในคำสั่ง (เช่น
ma2F`v2f'<cr>`a
) เพียงให้แน่ใจว่าจะไม่ใช้ที่คุณใช้บ่อย ๆ ด้วยตนเอง)
- เคอร์เซอร์จะต้องอยู่ในเครื่องหมายคำพูด สิ่งแปลก ๆ เกิดขึ้นถ้ามันอยู่ในคำพูด
ในการสรุปทั้งหมดนี้คือสิ่งที่ฉันจะเพิ่มให้ฉัน.vimrc
สำหรับปัญหานี้:
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
อย่างที่คุณเห็นฉันเลือกที่จะเลิกฟังก์ชั่นปกติca'
/ ya"
/ ฯลฯ ดังนั้นฉันจึงไม่ต้องเรียนรู้คำสั่งใหม่สำหรับพวกเขาเพราะฉันจะไม่ใช้ฟังก์ชั่นปกติเท่าไรใน LaTeX นั่นเป็นเพียงการตั้งค่าส่วนตัว; ไม่ยากที่จะเปลี่ยนชื่อวัตถุ ฉันยังเพิ่มในการตรวจจับประเภทไฟล์และเครื่องหมาย
iq
daq