我找不到一种方法使Vim将所有的空格都显示为字符。 我发现的都是关于制表符、尾随空格等的。
我找不到一种方法使Vim将所有的空格都显示为字符。 我发现的都是关于制表符、尾随空格等的。
想要在文本中突出显示空格,只需搜索它:
/<space>
注意:
想要同时突出显示空格和制表符:
/[<space><tab>]
快速取消高亮的方法是搜索其他内容: /asdf
(只需输入任意短的随机字符序列即可)
我没有从现有答案中找到完全符合我要求的。下面的代码将使所有的尾随空格显示为亮红色。只需将以下内容添加到你的.vimrc
文件中即可:
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
set list listchars=tab:\|\
highlight Whitespace cterm=underline gui=underline ctermbg=NONE guibg=NONE ctermfg=yellow guifg=yellow
autocmd ColorScheme * highlight Whitespace gui=underline ctermbg=NONE guibg=NONE ctermfg=yellow guifg=yellow
match Whitespace / \+/
|
,空格显示为_
,这使得混合代码样式很容易被发现。唯一的缺点是此片段不会调整背景颜色以匹配上下文(例如注释中的情况)。set list
set listchars=tab:│\ ,nbsp:·
highlight StrangeWhitespace guibg=Red ctermbg=Red
" The list is from https://dev59.com/KVoU5IYBdhLWcg3wAjrV#37903645 (with `\t`, `\n`, ` `, `\xa0` removed):
call matchadd('StrangeWhitespace', '[\x0b\x0c\r\x1c\x1d\x1e\x1f\x85\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]')
")。│
"(两个字符:一个长管道,然后是一个序数空格;在颜色方案murphy
中是灰色的)。·
"(一个字符;在颜色方案murphy
中是灰色的)。
")。set listchars=tab:»\ ,space:·
供您参考。 - Johnny Wonggvim
和 vim
。 - Kirill Bulygin我喜欢使用特殊字符来显示空格,这样更清晰。即使是一个切换地图的键也是一个重要功能,可以快速检查。
您可以在一款旧版vim脚本中找到此功能,但该脚本已经自2004年以来没有更新:
vim-scripts/cream-showinvisibles@vim.org
感谢项目vim-scripts和vundle,您可以重新使用此插件
vim-scripts/cream-showinvisibles@GitHub
更好的方法是添加一个可配置的快捷键(而不是预定义的F4),因此请将以下内容添加到~/.vimrc中
Plugin 'albfan/cream-invisibles'
let g:creamInvisibleShortCut = "<F5>" "for my F4 goto next error
在vim上安装插件
:PluginInstall
然后你就完成了
将 这些技巧 作为注释保存在 .vimrc 文件中,这样在 shell 中只需:
echo '
" how-to see the non-visible while spaces
" :set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
" set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
" :set list
" but hei how-to unset the visible tabs ?!
" :set nolist
' >> ~/.vimrc
:set list
要真正看到一行的结构,您将明确看到制表符和换行符。当您看到一个空白时,它确实是一个空白。
:match CursorLine /\s\+/
:set hlsearch
在.vimrc
文件中查找空格、制表符和换行符。
并进行搜索。
/ \|\t\|\r
或者搜索所有的空白字符
/\s
/\S
/\s$
:set list
的响应。那并没有回答我们的问题。(对于其他人来说,下面的 mrucci 的回答是有帮助的,但不算是真正的“解决方案”)。 - ELLIOTTCABLElist
和listchars
看到的人,请考虑一下空格直接跟在制表符后面的情况。在这种情况下,它几乎是看不见的。我同意你可以捕捉到大多数情况,但如果能正确突出显示所有空格就更好了。 - Kevin Cox