我在文本文档中有一个折叠部分。我可以使用折叠作为运动w/W
在 vim 中,单词或 WORD 是用?表示的动作。
例如daw
删除围绕一个词, 所以
This is a |t|est
如果我运行该命令,光标位于||
, 模式中,则将变成normal
daw
This is |a|
我可以用折叠部分来做这个吗(使用foldmethod=marker
和 latex 代码)?
\begin{equa|t|ion}%{{{
a = 10
\end{equation}%}}}
之后折叠运动foldmethod
将被删除。在其他模式下是否也可以这样做?
对于我的问题,我知道我可以折叠该部分然后删除“线”,但我想知道折叠本身是否可以被视为一种动作。
答案1
我不知道 Vim 中是否有这样的功能。但是可以使用[z
和]z
跳转到折叠的开头和结尾。
这似乎可以解决问题:
xnoremap iz :<C-U>silent!normal![zV]z<CR>
onoremap iz :normal viz<CR>
iw
你可以像朋友一样使用它:
ciz
diz
viz
yiz
答案2
看看vim-textobj-fold插件。它提供了用于折叠的文本对象,我认为这正是您所要求的。
答案3
因为我觉得它很有用,所以将其链接到这里:
https://www.reddit.com/r/vim/comments/10cqgd/looking_for_a_languageaware_block_selection/c6cpyrg
简短的回答是你可以这样做:
" Create text objects using [z and ]z
vnoremap if :<C-U>silent!normal![zjV]zk<CR>
onoremap if :normal Vif<CR>
vnoremap af :<C-U>silent!normal![zV]z<CR>
onoremap af :normal Vaf<CR>
这将为您提供if
和af
,其工作方式类似于ip
和ap
。