是否有可能在粘贴模式下重新映射。
例如,我在jk
的插入模式下将<ESC>
重新映射到inoremap jk <esc>
,因此我可以轻松退出正常模式。但是当我使用:pastetoggle
处于粘贴模式时,我的重新映射不再有效。我查找了:help map-modes
的帮助,但找不到与粘贴模式相关的任何内容。
答案 0 :(得分:4)
来自:help 'paste'
:
[...]
When the 'paste' option is switched on (also when it was already on):
- mapping in Insert mode and Command-line mode is disabled
[...]
答案 1 :(得分:0)
重映射无法在粘贴模式下工作的一个解决方法是使用vim-unimpaired&lt; kbd> y o 和< kbd> y O 要粘贴的命令。至少这种方式保留带有粘贴设置的插入模式也会设置nopaste
,当你不想这么做时,你不会发现自己处于粘贴模式。
答案 2 :(得分:0)
这可能对你有帮助。它没有帮助我,因为我使用 GNU screen 并且它不支持括号内的 xterm 粘贴转义码
(来自https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode)
:inoremap jj <esc>
:inoremap jk <esc>
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
" This resets paste mode after insert
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
echo "DONE"
return ""
endfunction
答案 3 :(得分:0)
这是我发现的另一种方法。当您按 Esc 键离开插入模式时,它会自动关闭粘贴模式。颜色还可以帮助您了解自己处于哪种模式。hth。
import "message.proto";
import "google/protobuf/wrappers.proto";
service Service {
rpc request (Request) returns (.google.protobuf.BoolValue);
}