2017-05-22 43 views
5

Tôi sử dụng di" để báo giá di{ cho dấu ngoặc và dit cho thẻ HTML.Làm thế nào để xóa hoặc yank bên trong dấu gạch chéo và dấu hoa thị?

Tôi thường làm việc với CSS. Tôi muốn xóa bên trong dấu gạch chéo hoặc dấu hoa thị. Ví dụ:

/* This is a comment. Delete or yank me. ;) */ 
.button { 
    content: 'Change my comment.'; 
} 

Tôi không muốn làm điều đó với chức năng, v.v. Làm cách nào để ánh xạ các từ khóa này với tất cả các biến thể? (Đặc biệt tôi cần phải delete inside, yank inside, delete around, delete and go insert mode (ci/)) Giống như:

di/ 
yi/ 
ci/ 
ya/ 
da/ 
di* 
ya* 

vv ...

Trả lời

11

Bạn có thể xác định riêng text-đối tượng của bạn bằng cách kết hợp một ánh xạ chế độ hình ảnh và chế độ điều hành đang chờ giải quyết ánh xạ.

đoạn này sẽ tạo ra một i/ text-đối tượng:

xnoremap i/ :<C-u>normal! T/vt/<CR> 
onoremap i/ :normal vi/<CR> 

mà bạn có thể sử dụng giống như những cái built-in: ci/, vi/, di/, yi/.

Và một điều này sẽ tạo ra một a/ text-đối tượng:

xnoremap a/ :<C-u>normal! F/vf/<CR> 
onoremap a/ :normal va/<CR> 

mà bạn có thể sử dụng giống như những cái built-in: ca/, va/, da/, ya/.


THƯỞNG: đây là một đoạn mã một cách dễ dàng có thể mở rộng từ vimrc tôi tạo ra không ít hơn mới văn bản đối tượng, trong đó có những người bạn muốn:

for char in [ '_', '.', ':', ',', ';', '<bar>', '/', '<bslash>', '*', '+', '%', '-', '#' ] 
    execute 'xnoremap i' . char . ' :<C-u>normal! T' . char . 'vt' . char . '<CR>' 
    execute 'onoremap i' . char . ' :normal vi' . char . '<CR>' 
    execute 'xnoremap a' . char . ' :<C-u>normal! F' . char . 'vf' . char . '<CR>' 
    execute 'onoremap a' . char . ' :normal va' . char . '<CR>' 
endfor 
+0

Wow! Đoạn trích của bạn thật tuyệt vời. Cảm ơn bạn. :) –

4

Ngoài ra còn có các sắc targets.vim plugin bao gồm các đối tượng văn bản đó cộng với một số lượng lớn các đối tượng khác. Có thể có giá trị kiểm tra ra, đặc biệt là nếu bạn không muốn phải xác định của riêng bạn.

Các vấn đề liên quan