2014-11-05 30 views
1

這個想法是有一張地圖,允許我摺疊花括號中的代碼塊。防止地圖打破運動命令錯誤

nnoremap zff 0f{zf% 

這個按預期方式工作,但只在左括號。 只要{和}在同一行上,以下版本似乎可以工作。它們應該在不同的行上,儘管光標只跳到開頭{並且沒有創建摺疊。

nnoremap zff 0f{f}zf% 

編輯:

這個問題似乎是一旦有在運動的一個命令地圖符出錯。 :silent!防止ex命令在發生錯誤時破壞映射。運動命令是否有相同的內容?

回答

1

你說得對,命令序列中的錯誤會破壞序列,這通常是正確的。如果您想要在出現錯誤的情況下繼續操作,只需通過:normal!單獨執行命令。這可以通過一個命令行鏈接:execute

nnoremap zff :exe 'normal! 0f{' | exe 'normal! f}' | exe 'normal! zf%' 
3

您的第一個映射應該可以工作,除非您有一個文件類型檢測或語法問題,阻止正確的配對匹配。

您的第二個映射無法工作,因爲f(和FtT)僅適用於當前行。替代方案:

f{v/}<CR>zf 
f{zf/}<CR> 

但是你可以使用zf與文本的對象:

zfi{ 
zfat 
zfip 

所以......爲什麼用映射麻煩?

+0

你好@romainl,謝謝你的有用答案(+1)。不過,出於好奇,我提出了我的問題。 – nuke 2014-11-05 12:55:33