Vim: Использование v: count1 в качестве аргумента отображения - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть отображение, подобное приведенному ниже, для перемещения курсора к первому столбцу области ввода / обновления (с красным кружком) в таблице.И я могу набрать w или ww, чтобы добраться до 2-го / 3-го столбца, если необходимо.

noremap <s-F8> 0f\|ew

Сначала идет к якору |, до концазеленого номера и перейдите к следующему слову (может быть точкой, числом или выражением) в таблице, как показано ниже.

A table with 3 columns for data entry

IИнтересно, могу ли я использовать COUNT, указанный перед командой нормального режима, чтобы напрямую перейти во 2-й / 3-й столбец с помощью команды 2<s-F8> or 3<s-F8>.

Следующий код не работает, хотя @= помогает отделить COUNT от команды '0'.

noremap <s-F8> @='0f\|ew'<cr>

Я изучил ответ Карката в посте "Mapping with v: count in vim" и сделал это отображение:

noremap <expr> <s-F8> '0f\|e' . v:count1 . 'W'

но он не двигается, если задан счет.(Он переместится в столбец 1, если нет COUNT.)

Как правильно использовать v: count1 в таком отображении?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Для вашей <expr> версии вам нужна <esc>, чтобы помочь отменить COUNT (что-то вроде CTRL-U):

noremap <silent> <expr> <s-F8> '<esc>0f\|e' . v:count1 . 'W'
0 голосов
/ 07 декабря 2018

Используйте команду :execute STRING, чтобы включить v:count1 в строку:

noremap <silent> <s-F8> :<c-u>exe 'norm 0f\|e' . v:count1 . 'W'<cr>

Примечание: CTRL-U используется для удаления диапазона, который может вставить Vim.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...