Сделать вставку одного символа в Vim атомарной операцией - PullRequest
19 голосов
/ 13 октября 2009

Я давно использовал этот очень полезный ярлык в vim:

nmap <space> i <esc>r

это означает, что если я нажму пробел f , например, он вставит один символ f в заданную позицию.

к сожалению, однако, это не атомарное, то есть, если я нажму пробел f , а затем перейду куда-нибудь еще, затем нажмите . , я получу эквивалент r f , а не пробел f .

все это имеет смысл, но вот вопрос: есть ли способ сделать это атомарным, чтобы . повторял операцию «вставка символа», и чтобы все операции отмены и т. Д. Рассматривали его как единое целое операция тоже?

Ответы [ 5 ]

11 голосов
/ 13 октября 2009

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

1) Установка Плагин Тима Папы

2) Установка Мой плагин

3) Добавьте отображение к вашему .vimrc:

nnoremap <space> :<C-U>call InsertChar#insert(v:count1)<CR>
7 голосов
/ 13 октября 2009

Это у вас работает?

noremap <silent> <space> :exe "normal i".nr2char(getchar())<CR>
3 голосов
/ 13 октября 2009

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

http://www.vim.org/scripts/script.php?script_id=2136

2 голосов
/ 13 октября 2009

Извините, я не могу дать конкретный ответ на вашу проблему, но отмечу, что я склонен использовать клавишу . , когда мне нужно воспроизвести довольно много команд (например, я хочу вставить f 5 или более раз).

Если это так, я не думаю, что экономия от использования вашего макроса стоит того. Вы сохраняете одно нажатие клавиши, используя ваш макрос, а не i f esc , и эта операция является атомарной, чтобы вы могли затем . к вашему сердцу.

Я бы просто использовал немакро-версию, если знаю, что хочу многократно повторять.

P.S. Вы знаете, мне начинает очень нравиться тег : -)

0 голосов
/ 16 февраля 2013
nmap <Space> xPpr

Как предположили эти люди:

http://objectmix.com/editors/148791-vim-command-insert-single-character-return-normal-mode.html

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