[英]Why does "dO----------" in a vimrc mapped macro throw the error "E488: Trailing characters"?
在我的 vimrc 中,我有一个折叠标记、一个 function 和一个映射宏:
set foldmarker=----------,++++++++++++
"Function to switch INTO visual line mode, not just toggle
function SwitchToVisLine()
if visualmode()!="V"
execute "normal! V"
endif
endfunction
"Macro to wrap and fold visually highlighted lines
xnoremap <F3> :call SwitchToVisLine()
\dO
\----------<CR>
\++++++++++<ESC>
\k0pzako
关键是能够从三种视觉模式中的任何一种中选择 go 并点击<F3>
以将活动线包裹在折叠标记中,折叠,并且 cursor 在整个混乱上方的新行上返回。
问题:使用所写的宏时,出现错误E488: Trailing characters: dO----------
令人困惑的是,当我手动遍历每个击键时,甚至调用 function 从视觉或视觉块模式切换到视觉线模式时,我都没有收到此错误。 仅当我将其作为映射宏运行时才会发生。
任何帮助深表感谢!
在当前的形式中,您尝试制作多行宏在 Vim 中看起来像这样,并删除了行继续字符:
:call SwitchToVisLine()dO----------<CR>++++++++++<ESC>k0pzako
/\
<CR>
这是不正确的,因为:call SwitchToVisLine()
之后缺少<CR>
。
它应该如下所示:
xnoremap <F3> :call SwitchToVisLine()<CR>
\dO
\----------<CR>
\++++++++++<ESC>
\k0pzako
也就是说,这里有很多改进机会。
宏可以替换为两个:help:silent
:help:put
命令:
xnoremap <F3>:sil'<put!='----------'\|sil'>put='++++++++++'<CR>
哪个:
您可以使用foldmarker
的值而不是重复自己:
xnoremap <F3>:sil'<put,=&fmr->split(',')[0]\|sil'>put=&fmr->split(',')[1]<CR>
十对一,不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.