這個想法是有一張地圖,允許我摺疊花括號中的代碼塊。防止地圖打破運動命令錯誤
nnoremap zff 0f{zf%
這個按預期方式工作,但只在左括號。 只要{和}在同一行上,以下版本似乎可以工作。它們應該在不同的行上,儘管光標只跳到開頭{並且沒有創建摺疊。
nnoremap zff 0f{f}zf%
編輯:
這個問題似乎是一旦有在運動的一個命令地圖符出錯。 :silent!
防止ex命令在發生錯誤時破壞映射。運動命令是否有相同的內容?
這個想法是有一張地圖,允許我摺疊花括號中的代碼塊。防止地圖打破運動命令錯誤
nnoremap zff 0f{zf%
這個按預期方式工作,但只在左括號。 只要{和}在同一行上,以下版本似乎可以工作。它們應該在不同的行上,儘管光標只跳到開頭{並且沒有創建摺疊。
nnoremap zff 0f{f}zf%
編輯:
這個問題似乎是一旦有在運動的一個命令地圖符出錯。 :silent!
防止ex命令在發生錯誤時破壞映射。運動命令是否有相同的內容?
你說得對,命令序列中的錯誤會破壞序列,這通常是正確的。如果您想要在出現錯誤的情況下繼續操作,只需通過:normal!
單獨執行命令。這可以通過一個命令行鏈接:execute
:
nnoremap zff :exe 'normal! 0f{' | exe 'normal! f}' | exe 'normal! zf%'
您的第一個映射應該可以工作,除非您有一個文件類型檢測或語法問題,阻止正確的配對匹配。
您的第二個映射無法工作,因爲f
(和FtT
)僅適用於當前行。替代方案:
f{v/}<CR>zf
f{zf/}<CR>
但是你可以使用zf
與文本的對象:
zfi{
zfat
zfip
所以......爲什麼用映射麻煩?
你好@romainl,謝謝你的有用答案(+1)。不過,出於好奇,我提出了我的問題。 – nuke 2014-11-05 12:55:33