В Vim, как я могу сделать пользовательское движение границы слова? - PullRequest
5 голосов
/ 03 марта 2012

Как я понимаю, w распознает границы слов, разбивая текст на 3 группы:

1) символы, указанные в параметре iskeyword (буквы, цифры и подчеркивание)

2) другие непечатаемые символы (символы)

3) пробельные символы

Каждый раз, когда вы нажимаете w, он переходит к следующей группе 1 или группе 2. Я бы хотел настроить его так, чтобы он переходил только к следующей группе 1, перепрыгивая через «слова-символы».

Что почти работает, так это:

nnoremap w /\k\+<CR>

, который использует iskeyword класс символов \k. Но это уродливо, потому что имитирует выполнение поиска, который меняет мое выделение, загромождает мою историю поиска, и кто знает, что еще. Есть ли способ сделать эту работу "чисто", как обычно команда w?

Ответы [ 2 ]

3 голосов
/ 03 марта 2012

Я думаю, вы ищете оператор в режиме ожидания , a.k.a xmap, smap и семейство.

Я сделал несколько примеров этих в других ответах на SO :

Наиболее актуальным примером может быть

Вы также найдете несколько техник, которые похожи и могут быть полезны для вас

0 голосов
/ 03 марта 2012

Я, возможно, не сильно помогу здесь .. Я даже не знаю, что означает \k в этом контексте, но вы можете решить две непосредственные проблемы, которые вы представляете:

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

Это ужасно, и подсветка может мерцать, но, возможно, это укажет вам правильное направление.

...