Отображение ключей лидера Vim для многошагового копирования и вставки

348
Josh

Когда мне нужно скопировать и вставить большие блоки кода с веб-страницы, мне нужно выполнить следующие шаги:

  1. : установить пасту
  2. войти в режим вставки Vim
  3. вставить буфер обмена
  4. установить нопасте
  5. войти в нормальный режим

Я надеюсь сделать это все сразу с помощью сопоставления клавиш лидера для P.

Спасибо за помощь!

0
Пара вопросов: пытались ли вы создать макрос, используя 'q'? Вы должны быть в режиме вставки, чтобы вставить? Можете ли вы привести базовый пример? Shadoath 6 лет назад 0
Я никогда не использовал макрос, чтобы быть честным. В настоящее время мне нужно быть в режиме вставки, чтобы вставить. По сути, всякий раз, когда я вставляю информацию с веб-страницы (например, переполнение стека), это полный беспорядок - поэтому я ищу способ эмулировать «обычное» копирование и вставку вне VIM. Возможно, я пойду не так. Josh 6 лет назад 0

1 ответ на вопрос

0
Ingo Karkat

Если у вашего Vim есть доступ к выбору X / системному буферу обмена, вы можете просто вставить через <C-r>*/ <C-r>+в режиме вставки или напрямую в обычном режиме через "*p/ "+p.

Только если это не сработает, вам нужно :set paste, поскольку Vim иначе не сможет определить, набрали ли вы это (очень быстро) или вставили. Поскольку любое клавиатурное действие может быть связано с вводом, это трудно автоматизировать, но Vim, к счастью, предлагает 'pastetoggle'возможность ускорить переключение:

'pastetoggle' 'pt' string (default "") global  When non-empty, specifies the key sequence that toggles the 'paste' option. This is like specifying a mapping: :map :set invpaste<CR> Where is the value of 'pastetoggle'. The difference is that it will work even when 'paste' is set. 'pastetoggle' works in Insert mode and Normal mode, but not in Command-line mode. 

Например, с :set pastetoggle=<F11>, вам просто нужно i<F11> (paste) <F11><Esc>.