在vim中,如何将键映射到整个缓冲区的切换折叠?

sta*_*tti 2 vim keyboard-shortcuts keymapping

我想映射一个键来切换foldmethod=indent和不折叠.我怎样才能做到这一点?

seh*_*ehe 8

我会说zi(toggle foldenable)完成这项工作.无需映射.(另见:he folding)

(你也可以看看zMzR)


由于您要将其映射到单个密钥,请按以下步骤操作:

:nnoremap <F10> zi
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

如果这对您有用,请告诉我.如果你接受这个答案,我很感激:)

干杯

[1] with behave mswin [2] ^O在命令行或insertmode中输入特殊键(例如)使用例如

  • Ctrl-VCtrl-O 要么
  • 在窗户上[1] Ctrl-QCtrl-O