[英]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.