Команда Vim с подсчетом и движением возможна? - PullRequest
2 голосов
/ 29 апреля 2011

Мой основной вопрос заключается в том, как создать собственное отображение, которое учитывает счет и движение.Но я бы хотел, чтобы граф перекрыл движение.Чтобы прояснить, я хочу, чтобы следующее работало:

[count][cmd] - Сделайте что-нибудь полезное в строках [count] и не ждите [motion].

[cmd][motion] - Сделайте что-нибудь полезное вдиапазон [движения] линий.

Мой точный сценарий пытается добавить комментарии к строкам, но я бы использовал эту информацию для других отображений в моем vimrc.Вот то, что у меня есть.

"comment motion of lines
nmap <silent> ,c  :set opfunc=Comment<CR>g@
"comment count lines
nmap <silent> ,cc :s/^/\/\//<CR>:noh<CR>

function! Comment(...)
        silent exe "'[,']s/^/\\/\\//"
        silent exe "noh"
endfunction

,c[motion] Комментирует строку в движении.[count],cc Комментарии по количеству.

Я бы хотел, чтобы ,c[motion] и [count],c работали.

Возможно ли это?

РЕДАКТИРОВАТЬ: разъяснил мой вопрос.Изменен «диапазон» на «счет»

1 Ответ

6 голосов
/ 29 апреля 2011
function s:ExecuteCountOrMotion()
    setlocal operatorfunc=Comment
    if v:count is 0
        return 'g@'
    else
        return 'g@g@'
    endif
endfunction
nnoremap <expr> ,c <SID>ExecuteCountOrMotion()

Кстати, вам не нужно выполнять:

  1. Вместо silent exe "{range}s/.../.../" вы должны написать {range}s/.../.../e.
  2. Вы можете использовать s#^#//#eчтобы избежать экранирования.
  3. silent nohl работает так же, как и silent execute "nohl", но заставляет vim не выполнять синтаксический анализ дополнительной строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...