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

发布于 2024-10-28 20:55:39 字数 68 浏览 5 评论 0原文

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

I'd like to map a key to toggle between foldmethod=indent and no folding. How can I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流绪微梦 2024-11-04 20:55:39

我想说 zi (切换可折叠)可以完成这项工作。
无需映射。 (另请参见 :he 折叠

您还可以查看 zMzR


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

:nnoremap <F10> zi

要强制折叠模式每次缩进(对我来说并不真正推荐),您需要一个函数:
将函数添加到您的 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

让我知道这是否适合您。如果您接受这个答案,我将不胜感激:)

干杯

behave mswin [1]
[2] 要在命令行或插入模式中输入特殊键(例如 ^O),请使用例如

  • Ctrl-VCtrl-O
  • 在 Windows 上[ 1] Ctrl-QCtrl-O

I'd say zi (toggle foldenable) does the job.
No mapping required. (see also :he folding)

(You could also look at zM and zR)


Since you want to map it to a single key, proceed as follows:

:nnoremap <F10> zi

To force the foldmode to indent each time (not really recommended for me), you'd need a function:
Add the function to your 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

Let me know if that works for you. I appreciate if you accept this answer if it does :)

Cheers

[1] with behave mswin
[2] To enter the special keys (e.g. ^O) in commandline or insertmode use e.g.

  • Ctrl-VCtrl-O or
  • on windows[1] Ctrl-QCtrl-O
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文