Команда для окружения символа пробелами в энергии

Я пытаюсь использовать энергию правильно - для помощи мне я отобразил свои клавиши со стрелками на "" так, чтобы я был вынужден использовать {hjlk} для перемещений.

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

"2+3" лучше отформатирован "2 + 3"

Ранее я поместил бы свой курсор по + и ввел бы:

я [пространство] [право стрелки] [пространство] [Esc]

Это - 5 нажатий.

Чтобы сделать это без стрелки, я, кажется, должен поместить курсор по + и иду:

я [пространство] [Esc]lli [пространство] [Esc]

Это - 8 нажатий.

Я могу преобразовать "литий" в "a", который уменьшает его до 7 нажатий:

я [пространство] [Esc]la [пространство] [Esc]

За исключением записи этого в макрос там лучший способ сделать его? Есть ли некоторая волшебная команда энергии, которая позволит мне делать это в меньше, чем даже 5 нажатий - и некоторый способ обобщить его так, чтобы я мог сделать это ко всем словам или символам, например, если я хочу преобразовать 3 == от 4 до 3 == 4?

10
задан William Becker 14 March 2010 в 19:03
поделиться

5 ответов

Лично я считаю, что разумнее всего уничтожить то, что вы хотите окружить, а затем вставить заново.

c w "" ESC P

Очевидно, что вы можете заменить и объект, и кавычки на то, что вам нравится. Чтобы изменить только один символ + на [пробел]+[пробел], вы должны сделать

s [space] [space] ESC P

на +

16
ответ дан 3 December 2019 в 15:06
поделиться

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

:%s/\(\d\)\(+\|-\)\(\d\)/\1 \2 \3/g

Вероятно, вам придется выполнить эту команду два раза потому что он будет находить только каждое второе появление +/-.

РЕДАКТИРОВАТЬ:

Это заменит все без необходимости повторного вызова:

:%s/\d\@<=+\|-\d\@=/ \0 /g
1
ответ дан 3 December 2019 в 15:06
поделиться

Попробуйте расположить курсор над '+' и набрать следующее:

q1i[пробел][стрелка вправо][пробел][стрелка влево][esc]q

Это запишет быстрый макрос в слот 1, который вы сможете повторно использовать, когда вам захочется, и который будет окружать символ под курсором пробелами. Вы можете повторно вызвать его с помощью @1.

Есть и более универсальный вариант:

q1ea[пробел][esc]bi[пробел][стрелка вправо][esc]q

При нажатии @1 слово под курсором ("==" считается словом) будет окружено пробелами.

1
ответ дан 3 December 2019 в 15:06
поделиться

Вы можете настроить сопоставление следующим образом (нажмите ввод в визуальном режиме, чтобы обернуть пробелы):

:vnoremap <CR> <ESC>`<i<SPACE><ESC>`>la<SPACE><ESC>h
1
ответ дан 3 December 2019 в 15:06
поделиться

Первое, что приходит в голову после прочтения заголовка, - это surround.vim , который является отличным сценарием для выполнения всех видов полезные вещи в соответствии с тем, что вы описали.

Чтобы решить вашу конкретную проблему, я бы, вероятно, поместил курсор на + и:

s [пробел] + [пробел] [esc]

Чтобы изменить 3 == 4 на 3 == 4, I может поставить курсор на первый знак = и:

i [пробел] [esc] ww.

5
ответ дан 3 December 2019 в 15:06
поделиться