在vim中显示一些特殊字符作为换行符

时间:2011-08-06 12:55:43

标签: vim

我想将一些(任意)特殊字符显示为换行符< CR>在vim。 到目前为止,我试图滥用(当然极端滥用:)不可破坏的空间打字

:set list listchars=nbsp:<CR>

哪个不起作用,似乎是因为该命令不接受&lt; CR&gt;。 有什么我可以在这里用于&lt; CR&gt;? \ r也不起作用。

请注意,我不想编辑文本文件。目标是将行块(一些相关代码)视为与vim操作相关的单行,但显示为多行。在这些情况下,特殊字符(待定义)仅用于将此块结构保存在替换linebreak \ r的文件中。

3 个答案:

答案 0 :(得分:1)

考虑到您在附加内容中提供的问题的更广泛背景 评论,我会建议以下解决方案。集团依赖线 通过缩进,语言的语法或标记来折叠代码。任何这些 三种方法是自动的,不需要手动创建折叠。哪一个 一个选择取决于您使用的语言。请参阅:help foldmethod或提问 如果您需要任何折叠方面的帮助,请发表评论。

除非您使用的语言语法在Vim中得到广泛支持,否则最多 方便的方法是使用折叠标记或定义表达式 计算每条线的折叠水平。前一种方法意味着周围 每组线由特殊文本标记折叠(可以封闭 在评论中不要破坏语言的语法规则)。默认那些 标记为{{{}}};请参阅:help fold-marker:help foldmarker 找出如何改变它们。使用

:set foldmethod=marker

启用此折叠模式。

定义表达式以计算每行的折叠级别甚至更多 灵活的方法。它允许使用任何逻辑(可以用Vim表示) 脚本)确定折叠级别。例如,折叠那些行的组 从单一空间使用开始

:set foldmethod=expr
:set foldexpr=getline(v:lnum)[0]=='\ '

有关自定义折叠表达式的更多详细信息,请参阅:help fold-expr

当相互依赖的线条以折叠方式分组时,您可以轻松地进行折叠 将折叠传递给过滤程序。将光标移动到目标内的一条线 折叠,然后键入[zV]z!(选择整个折叠)并输入命令 跑。要保存输入,您可以定义映射

:nnoremap <leader>z [zV]z!

或者,如果命令始终相同,

:nnoremap <leader>z [zV]z!cat -n<cr>

(替换cat -n - 我的示例命令 - 为您的自定义命令。)

答案 1 :(得分:0)

我想您可能需要查看this vimcasts episode。可能不是你想要的,但可以帮助你。祝你好运!

答案 2 :(得分:0)

我的解决方案最后是在文件的相应位置插入不间断的空格和换行符。然后可以使用:set list listchars=nbsp:$来显示这些“特殊换行符”。它们的存在允许解释代码以识别由该组合分隔的线块作为相关线。

当然这不回答这个问题。根据我现在的最佳知识,答案是:set list:wrap都不能用来实现这一点。