vim - 在 VIM 中隐藏、显示和仅将功能应用于具有恢复能力的可见行?

标签 vim text-files

我有一个我正在尝试模拟的编辑器,它有一些非常好的功能。编辑器的一个功能是隐藏文件的行(类似于折叠但没有装饰)并且只对那些保持可见的行应用命令操作。然后可以将隐藏线拉回来。
例如用户看到

    Smurf
    Apple
    Bubble
    Tree
    Dog

The user says show-non-matching-lines (SNML) e

    Smurf
    Dog

The user runs a command paste-after-line (PAL) followed by a token, $ say, and gets

    Smurf$
    Dog$

The user says show-all-lines (SAL)

    Smurf$
    Apple
    Bubble
    Tree
    Dog$

I know this is doable in VIM but I am at a loss at how to store per line properties without resorting to modifying the lines in some way. Please nudge me in the right direction or way of thinking...

Update: Using

:set foldtext=MyFoldingFunction

我可以在以下变量的帮助下操纵文本的折叠方式

v:foldstart Line num of 1st folded line 
v:foldend Line num of last folded line

我想我必须在应用函数时枚举所有折叠,因为我正在应用文本格式并确定是否有一行被折叠掉了。我真的想要一种在 vim 中存储每行属性的方法……我想我在黑暗的角落里。

最佳答案

folddoopen 做你想做的;它在不属于闭合折叠的每一行上执行一些命令。要将 $ 附加到当前未折叠的每一行,您可以这样做

:foldd norm A$

参见 :h folddoopen:h folddocclosed。它并没有完全“隐藏”折叠的文本,您仍然可以看到折叠标记,但已经非常接近了。

关于vim - 在 VIM 中隐藏、显示和仅将功能应用于具有恢复能力的可见行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089621/

相关文章:

vim - Vim 命令行中某些命令(如 ('!' )后面的感叹号 ":w!")有什么用?

vim - 防止 Vim 在退出时清除剪贴板

vb.net - 如何在 VB.NET 中覆盖文本

python - ValueError : not enough values to unpack (expected 2, 得到 1) 但我提供了 2 个值

python - vim 作为 python ide

vim - 如何使用 Vim surround 在段落的当前行开始和结束行上包围段落?

linux - 限制每行编辑器vi linux的字符数

windows - BATCH从txt文件中获取特定字符串

Python:如何构建用于加载数据的文本文件?

python - 如果一行包含专用区域字符,如何删除它?