Xác định đối tượng văn bản phụ thuộc vào toán tử hiện tại


8

Tôi tò mò nếu có thể làm cho một đối tượng văn bản nhận thức được toán tử của nó. Cụ thể, tôi đang viết một đối tượng văn bản cho các môi trường LaTeX, nơi tôi muốn các hành vi khác nhau tùy thuộc vào toán tử. Ví dụ: hãy xem xét đoạn trích LaTeX sau:

\begin{example}
  Hello world
\end{example}

Ở đây thuận tiện nhất là diexóa nội dung theo kiểu thẳng hàng, trong khi ciexóa "Hello world", nhưng vẫn giữ được sự thụt lề, tức là, cho

\begin{example}
  |
\end{example}

nơi |là con trỏ.


1
Điều này thường được kiểm soát không phải bởi toán tử nào được sử dụng, mà bằng cách xác định chuyển động là theo đường thẳng hay không. Bạn muốn tránh viết cho các toán tử cụ thể để đối tượng văn bản của bạn có thể độc đáo với các toán tử tùy chỉnh.
tommcdo 16/2/2016

Toàn bộ vấn đề là tôi muốn chuyển động thẳng hàng trong một số trường hợp, nhưng không phải trong các trường hợp khác, tùy thuộc vào toán tử nào được sử dụng. Tôi hiểu rằng điều này có vẻ không nhất quán, nhưng trong trường hợp cụ thể này, tôi nghĩ rằng một sự khác biệt như vậy là tự nhiên.
Karl Yngve Lervåg

Câu trả lời:


5

Ví dụ sau đây gần với những gì bạn đang yêu cầu:

onoremap <expr> w '<esc>' . v:operator . v:count1 . (v:operator ==# 'd' ? 'aw' : 'iw')

Nó tạo ra một textobject wđó là một trong hai aw, trong trường hợp nó được sử dụng bởi các nhà điều hành xóa, có nghĩa là, dw= daw, hoặc iwbằng cách khác, ví dụ cw= ciw.


Cảm ơn! Các v:operatorbiến là chỉ là những gì tôi đang tìm kiếm!
Karl Yngve Lervåg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.