【发布时间】:2023-03-15 18:20:01
【问题描述】:
我想映射一个键以在foldmethod=indent 和不折叠之间切换。我该怎么做?
【问题讨论】:
标签: vim keyboard-shortcuts keymapping
我想映射一个键以在foldmethod=indent 和不折叠之间切换。我该怎么做?
【问题讨论】:
标签: vim keyboard-shortcuts keymapping
我会说 zi (切换可折叠)可以完成这项工作。
无需映射。 (另见:he folding)
(你也可以看看 zM 和 zR)
由于您想将其映射到单个键,请按以下步骤操作:
:nnoremap <F10> zi
要每次强制折叠模式为indent(我不推荐),你需要一个函数:
将函数添加到您的 vimrc[2]:
function ForceFoldmethodIndent()
if &foldenable
se foldmethod=indent
endif
endfunction
nnoremap <F10> :normal zi^M|call ForceFoldmethodIndent()^M
inoremap <F10> ^O:normal zi^M|call ForceFoldmethodIndent()^M
让我知道这是否适合您。如果您接受此答案,我将不胜感激:)
干杯
[1] 与behave mswin
[2] 要在命令行或插入模式中输入特殊键(例如 ^O),请使用例如
【讨论】:
map <F10> :set foldmethod=indent<CR>zi,但不幸的是,第一次按下时它不起作用。
<F10> 映射到zi?还期望一个键中有太多功能不是 vi 精神。否则,该概念在第一次插入时失败,从额外的 i 开始 :)
normal zi 的“正常”命令。我用大量的分步和背景信息更新了答案。 HTH