Có một đối tượng văn bản cho dòng hiện tại?


Câu trả lời:


13

Đây là một đối tượng văn bản "dòng" thô:

xnoremap il g_o0
onoremap il :normal vil<CR>
xnoremap al $o0
onoremap al :normal val<CR>

Và một đối tượng văn bản "đệm" thô:

xnoremap i% GoggV
onoremap i% :normal vi%<CR>

---BIÊN TẬP---

Một "điều hành" là một lệnh mà không làm bất cứ điều gì bởi chính nó: d, yvv

Nhấn các phím đó sẽ đưa bạn vào "chế độ chờ xử lý của nhà điều hành", trong đó Vim chờ bạn nói cho bạn biết bạn muốn nó hoạt động như thế nào với một "chuyển động chờ toán tử".

Bạn có thể sử dụng :omaphoặc :onoremapđể xác định các chuyển động chờ toán tử tùy chỉnh. Kỹ thuật được sử dụng ở đây được lấy cảm hứng từ :help omap-info:

  1. bạn xác định ánh xạ chế độ trực quan bao phủ khu vực mong muốn,
  2. bạn sử dụng ánh xạ đó trong ánh xạ chờ toán tử.

Lưu ý rằng tôi đã sử dụng :onoremapbởi vì il, ali%không tồn tại. Nếu bạn đang ghi đè một chuyển động hoặc đối tượng văn bản hiện có - giả sử ip- bạn phải sử dụng ánh xạ đệ quy : :omap.

:help :map-operator mô tả một phương pháp tiên tiến hơn một chút.

Xem :help v_ocho otrong chế độ trực quan.


Mát mẻ. Bạn có phiền giải thích một vài điều về nó không? Là gì o(hành chế độ cấp phát) trong onoremap? Những gì otrong chế độ trực quan làm gì? Tôi đoán rằng đó là "mặt khác", bởi vì nó dường như nhảy sang phía bên kia của một lựa chọn ... Làm thế nào để tôi tìm thấy :hnó? Tôi không thể tìm thấy nó với :h x_ohoặc :h o.
lindhe

Giải thích thêm.
romainl

1

Tôi sẽ đề xuất một giải pháp bổ sung, để sử dụng ^ thay vì 0 (vì vậy dòng bắt đầu ở đầu ký tự đầu tiên:

xnoremap il g_o^
onoremap il :normal vil<CR>
xnoremap al $o^
onoremap al :normal val<CR>

Bằng cách này, nếu chúng ta "thay đổi dòng", nó sẽ tôn trọng mức độ thụt đầu dòng.


Ngoài ra còn có một plugin cung cấp chức năng này bởi vim master kana: github.com/kana/vim-textobj-line/blob/master/doc/iêu
Blasco
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.