vim 如何实现给每一个汉字空格后面加一个空格字符

Vim 启动时会根据配置文件(.vimrc)来設置 Vim,因此我们可以通过此文件来定制适合自己的 Vim

Vim 配置文件分为系统配置文件和用户配置文件:

  • 系统配置文件位于 Vim 的安装目录(即全局配置,所有的用户都会执行这个配置)(默认路径为 /etc/.vimrc);
  • 用户配置文件位于主目录 ~/.vimrc即通过执行 vim ~/.vimrc 命令即可对此配置文件进行合理修改。通常情況下Vim 用户配置文件需要自己手动创建。


注意Vim 用户配置文件比系统配置文件的优先级高,换句话说Vim 启动时,会优先读取 Vim 用户配置文件(位于主目录中的)所以我们只需要修改用户配置文件即可(不建议直接修改系统配置文件)。

Vim 提供的环境配置参数有很多本节不一┅列举,大家可以在 Vim 中输入“:set all”指令来查询本节仅对常用的几个功能设置做详细介绍。

表 1 Vim环境设置参数
设置编码格式encoding 选项用于缓存嘚文本、寄存器、Vim 脚本文件等;fileencoding 选项是 Vim 写入文件时采用的编码类型;termencoding 选项表示输出到终端时采用的编码类型。
nu 是 number 的缩写所以上面两个配置命令是完全等效的,二选一即可取消行号可使用 set nonu。
Vim 编辑器里默认是不启用鼠标的通过此设置即可启动鼠标。
设置自动缩进即每行嘚缩进同上一节相同。
设置 Tab 键宽度为 4 个空格


注意,表中各配置参数前面可以添加冒号(:)也可以省略,两种写法都可以

通过以上方式,可以对用户配置文件(.vimrc)进行编辑进而实现对 Vim 的永久自定义。

在 Vim 编辑模式中通过 “:set nu” 命令也可以让 Vim 显示行号,但只是临时有效下次使用 Vim 编辑文件还是不显示行号。而本节介绍的编辑配置文件设置 Vim 的方式对 Vim 的设置是永久的。

}

我找不到让将所有空白显示为字苻的方法 我发现的只是关于制表符,尾随空格等


我对这个问题的所有其他答案感到沮丧,因为它们都没有以有用的方式突出显示空格芓符 将空格显示为字符对于空白格式的语言特别有用,因为在这些语言中制表符和空格的混合是有害的。

我的解决方案是显示选项卡並在多个空格下划线 它借鉴了和 。 因为它使用语法高亮显示所以它是持久的:

使用此选项卡显示为|_作为空格,这使我很容易分辨出哬时混合代码样式

我发现的唯一缺点是,此代码段无法调整背景颜色以匹配上下文(例如在评论中)


要突出显示空格,只需搜索它:

突出显示空格和制表符:

删除突出显示的一种快速方法是搜索其他内容:/ asdf

(只需输入任何简短的随机字符列表)


:set list将所有空格显示为字符 ┅切,但空间看起来会比正常状态这意味着如果你仍然可以看到一个普通的老式空间,这真是一个普通的旧空间的不同 :)


真正看到一条線的结构。 您将明确看到选项卡和换行符 当您看到空白时,实际上是空白


正如其他人所说,您可以使用

现在没有可用于显示空白的顯式选项,但是在列表字符中您可以设置一个字符以显示所有但空白。 例如我的看起来像这样

所以,现在在您使用之后

那么,所有沒有明确显示为其他内容的东西实际上都是纯空白。

与往常一样要了解listchars工作原理,请使用帮助 它提供了有关可以显示哪些字符(例洳尾随空格)以及如何执行的重要信息:

向其中添加切换可能会有所帮助,以便您可以轻松地在编辑过程中查看更改(来源: ):


然后搜索空格每个空格字符将显示为下划线字符。

您可以在方便的功能中使用此命令该功能可切换空格的“下划线”。

使用以下功能将功能映射到快捷键:

注意:设置了colorcheme后请在vimrc中定义功能。



如果用空格表示“”字符我的建议就是搜索/替换。 正如其他人所暗示的那样 set list会将非打印字符更改为在listchars配置的可见字符。

为了将空格显示为其他字符可以使用类似于以下内容的方法:

然后只需撤消更改以再次返回即可。


:se就足够了不需要:set


您还可以突出显示空格(用块代替空格):


我认为这里的其他答案更全面但我想我会分享一个我通常用来在视觉仩区分制表符和空格的技巧:

这些是语法突出显示规则-选项卡以绿色显示,空格以红色显示 :)

可以与:set list结合使用,如许多其他答案所述尽管选项卡随后将显示为^ I,而没有绿色背景但空格将显示为红色。


以上所有答案都试图使vim内部的空间可见 如果您真的坚持将可见的空间莋为点,那么还有另一种方法...

如果不能在vim中完成请完全更改字体。 我复制了Ubuntu One Mono字体并使用FontForge对其进行了编辑 记住要更改字体的全名,家族首选家族,兼容的完整字体(在FontFoge中它在字体信息中的TTF名称下),以便将其作为单独的字体 只需编辑空格字符在中间有一个点,然后將字体保存到?/ .fonts现在您就可以将其用于gvim或整个终端了……我复制了“!” 字符,删除线并将点移到中间 花了超过5分钟的时间...

注意:更妀空格字符(0x20)会导致在整个vim屏幕上出现点的不便...(但是它将空格与制表符分开...)


我喜欢用特殊字符来显示空格,更清晰 快速切换甚至昰要切换的地图也是关键功能。

您可以在自2004年以来未更新的旧vim脚本中找到以下功能:

多亏了项目和您可以重新使用此插件

更好的是我为此付出的两分钱是添加一个可 (而不是预定义的F4


下面的代码基于Christian Brabandt的答案,似乎可以满足OP的要求:

将这些行添加到~/.vimrc并开始一个新的Vim会话鉯查看仍不完美的魔术发生的情况。

随意编辑默认颜色和隐藏字符


警告: *FuncBody语法组中的几种语言阻止了中间点的显示。 我不知道(尚未)如何使该解决方案更可靠。


将其添加到我的.vimrc中对我来说有效 只要确保您没有其他冲突即可。


搜索所有非空白字符(不显示空白字符洇此您会看到单词之间的空白字符,但看不到尾随的空白字符)

在行尾显示所有尾随空格字符


从补丁您现在可以使用listchars设置要显示在空间位置的字符!

因此要将所有空白字符显示为字符,可以执行以下操作:


从现有答案中找不到我想要的东西 下面的代码将以红色突出显示所有尾随空格。 只需将以下内容添加到您的.vimrc


要覆盖Unicode空格字符:

  • 只有序数空间(U + 0020)看起来像一个空间(“ ”)
  • 选项卡(U + 0009)看起来像“ ”(兩个字符:一个长管道然后一个序数空格;在颜色colorscheme murphy为灰色)
  • 其他任何空格字符看起来都像红色“ ”

将作为注释保留在.vimrc中,因此在shell中只需:


避免了“您必须搜索空格以使其出现”的位,但是无法将afaict配置为对空格进行非突出显示的操作 CursorLine可以是任何亮点组,并且在默认主题Φ是普通下划线


根据当前缓冲区的语法规则,类似的方法可能会起作用:

2014年10月24日更新要对此进行扩展 当然可以为锥形字符定义一些突絀显示。

  • 您可以配置隐藏字符的外观 对于突出显示,您至少必须配置一次“隐藏”突出显示组(请参见:h hl-Conceal的帮助可以在您的配色方案中唍成此操作,然后无需重新配置它但这会影响所有隐藏的对象。字符(例如如果您的语法脚本隐藏了更多项目,它们将显示为空白字苻)看起来可能像这样:

  • 如果语法脚本使用skipwhite关键字,似乎Vim不会突出显示空格 将无法解决(也许会解决,我发布了一个 )

  • 似乎有一个补丁在浮动可以自定义list模式下的空间外观。 在撰写本文时最新的版本似乎就是 。 (这意味着您需要构建自己的Vim才能使用它)。
  • conceallevelconcealcursor是窗口本地选项 这意味着它们在不同的窗口中可以有所不同(并且也可能由文件类型插件或其他插件脚本来设置)。
  • 每当重新加载语法定義文件时都需要执行语法突出显示组。 这可以使用BufWinEnter或可能的Syntax甚至FileType自动命令来完成 (我尚未测试哪一个实际有效)。

最后两项意味着您将必须设置一些自动命令来重置语法规则和相应的选项。 对于第一个可能要使用ColorScheme自动命令设置突出显示(以便隐藏的字符始终看起来楿同,而与颜色方案的实际设置无关) 对于完整的解决方案,请查看romainl答案这应该为您提供一个开始。 如果您设置了功能则可以轻松哋设置一个切换命令来打开或关闭显示特殊高亮显示的功能。

更新10/26/2014我从这个问题中制作了一个


突出显示空白。 它搜索所有空白然后启鼡突出显示以使其弹出。 但是它打印特殊字符。

}

我要回帖

更多关于 一个汉字空格 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信