2012-03-02 42 views
5

Theo tôi được biết, w nhận ranh giới từ bằng văn bản chia tách thành 3 nhóm:Trong vim, làm cách nào để tạo chuyển động ranh giới từ tùy chỉnh?

1) ký tự được quy định trong các thiết lập iskeyword (chữ cái, chữ số và dấu gạch dưới)

2) ký tự không in khác (biểu tượng)

3) ký tự khoảng trắng

Mỗi lần bạn nhấn w nó đi vào nhóm tiếp theo 1 hoặc nhóm 2. tôi muốn tùy chỉnh nó để nó chỉ đi với nhóm tiếp theo 1, nhảy qua "biểu tượng wo rds ".

gì hầu hết các công trình này là:

nnoremap w /\k\+<CR>

trong đó sử dụng các lớp nhân vật iskeyword\k. Nhưng nó là xấu bởi vì nó mô phỏng tôi thực hiện tìm kiếm, thay đổi đánh dấu của tôi, cắt lịch sử tìm kiếm của tôi, và ai biết những gì khác. Có cách nào để làm cho công việc này "sạch" như lệnh w bình thường không?

+0

Tôi không thực hiện theo những gì bạn muốn. 'W' có giúp gì không? Nó có hai nhóm ký tự: khoảng trắng và khoảng trắng, vì vậy nó luôn đi đến ký tự đầu tiên sau khoảng trắng tiếp theo. –

+0

Không, nó không hoàn toàn hoạt động: 'W' gộp các ký tự biểu tượng cùng với các ký tự chữ cái. Những gì tôi muốn là, hiệu quả, các biểu tượng khối với khoảng trắng, để các ký hiệu bị bỏ qua trong khi vẫn tạo ra các ranh giới từ. – Ein

Trả lời

0

tôi không có thể giúp ích nhiều cho đây .. Tôi thậm chí không biết những gì \k nghĩa trong bối cảnh này, nhưng bạn có thể giải quyết được hai vấn đề ngay lập tức bạn trình bày:

nnoremap w /\k\+<CR>:nohl<CR>:call histdel("search", -1)<CR> 

Nó xấu xí và nổi bật có thể nhấp nháy, nhưng có lẽ điều này sẽ chỉ cho bạn đi đúng hướng.

3

Tôi nghĩ bạn đang tìm kiếm operator pending mode, a.k.a xmap, smap và gia đình.

Tôi đã làm một số ví dụ về các in other answers on SO:

Ví dụ phù hợp nhất có thể là

Bạn cũng sẽ tìm thấy một số kỹ thuật tương tự và có thể có ích cho bạn

+1

Tôi nhớ điều đó. Câu trả lời chính xác. – lucapette

+0

Làm cho nó một chuyển động thích hợp cho các nhà khai thác là rất tốt, và câu trả lời SO đã dạy tôi một số điều mới. Nhưng điều thực sự khiến tôi không hài lòng là mô phỏng "tôi thực hiện tìm kiếm" để di chuyển xung quanh và tôi sẽ phải làm điều đó để xác định 'xmap' và' omap' tương ứng của mình. – Ein

+0

@Nuno: Đối với hồ sơ, các tài liệu nói rằng việc tìm kiếm từ bên trong một vimscript (chức năng) sẽ ** không ** ảnh hưởng đến mẫu tìm kiếm hiện tại của bạn, lịch sử tìm kiếm, vv (Anyways, bất kỳ tác dụng phụ _other_ chỉ đơn giản có thể được phục hồi trong cùng chức năng đó) – sehe