Как я могу повторить не только последнюю использованную модификацию (.), Но и более ранние?
Идеальный вариант - выбрать их по Ctrl+N и Ctrl+P.
Как я могу повторить не только последнюю использованную модификацию (.), Но и более ранние?
Идеальный вариант - выбрать их по Ctrl+N и Ctrl+P.
Я бы не рекомендовал переназначать CN и CP, поскольку они являются отображениями автозаполнения, и часто их используют плагины. На самом деле, я бы не рекомендовал переназначать любое из отображений vim по умолчанию. Но в любом случае это зависит от вас.
Что касается повторения, точка (.) Будет повторять то, что вы делали в своем последнем ряду. Если у вас возникли проблемы с командой повтора с некоторыми плагинами, попробуйте плагин repeat.vim .
Если вы хотите, чтобы в вашем распоряжении были какие-то операции, которые вы часто используете, попробуйте записать их в регистр и затем воспроизвести («: запись справки»), или сделать из этого функцию, а затем вызвать функцию (если вы хотите, я думаю, вызов функции может быть сделан как CN или CP ...)
Чтобы расширить комментарий @ldigas о записи и макросах, приведем простую разбивку.
Когда у вас есть макрос, вы можете воспроизвести его с помощью @w (при условии, что вы использовали w), и он будет пролистывать записанные вами действия.
Снова расширим отображение ваших команд для повторения:
Когда вы знаете без визуальной обратной связи, что вы хотите повторить, это [ Ctrl -] Space mapping сохраняет еще несколько нажатий клавиш:
" map in Normal and Visual modes, but not Select mode (see :help mapmode-x
:command -nargs=* Nxmap nmap <args>| xmap <args>
com -nargs=* Nxnoremap nnoremap <args>| xnoremap <args>
com -nargs=* Nxunmap nunmap <args>| xunmap <args>
" map <Space> to currently often-used operations (similar to space.vim)
" quickly create custom mappings
" Usage: <C-Space>YOURMAPPING<Enter> and then just <Space> for each repetition
" (When you know without visual feedback what you want to repeat, this saves another few keystrokes.)
Nxmap <C-Space> :Nxmap <lt>Space>
" make these commands repeatable by <Space> (similar to space.vim)
let space_repeats_nx = ['@@','@:']
for cmd in space_repeats_nx
exe 'Nxnoremap '.cmd.' :Nxnoremap <lt>Space> 'cmd.'<CR>'.cmd
endfor
Я сделал плагин RepeatLast.vim для обеспечения этой функциональности с 5\.
Это работает, включив запись макросов все время. По этой причине я не очень рекомендую это! Но это был единственный способ сделать несколько повторений ретроспективно. Было бы замечательно, если бы Vim мог обеспечить доступ к последним нажатиям клавиш внутри.
Желание вспомнить q
перед выполнением чего-либо, что вы захотите повторить, является предпочтительным.