我找不到一种方法使Vim将所有的空格都显示为字符。 我发现的都是关于制表符、尾随空格等的。
我找不到一种方法使Vim将所有的空格都显示为字符。 我发现的都是关于制表符、尾随空格等的。
正如其他人所说,您可以使用
:set list
这将与其他元素组合使用
:set listchars=...
如何显示不可见字符。
目前,没有一种明确的选项可以用来显示空格,但在listchars中,您可以设置一个除了空格以外的字符来显示其他所有字符。例如,我的设置如下:
:set listchars=eol:$,tab:>-,trail:~,extends:>,precedes:<
所以,现在,在你使用之后
:set list
如果没有显式显示成其他东西,那么一切都是普通的空格。
通常,要了解listchars
如何工作,请使用帮助。它提供了许多关于可以显示哪些字符(例如尾随空格)以及如何显示它们的重要信息:
:help listchars
在编辑过程中添加一个切换按钮可能会很有帮助,这样你可以轻松地查看更改(来源:VIM :set list! as a toggle in .vimrc):
noremap <F5> :set list!<CR>
inoremap <F5> <C-o>:set list!<CR>
cnoremap <F5> <C-c>:set list!<CR>
.vimrc
文件中,这样就可以随时使用:set list
轻松启用显示不可见字符的漂亮方式(无需再次搜索此页面)。 - Melebius·
作为空格,现在我的VIM看起来很棒!感谢这个技巧~ - benjaminz从补丁7.4.710开始,您现在可以使用listchars设置一个字符来代替空格的显示!
:set listchars+=space:␣
所以,要显示所有的空白字符作为一个字符,你可以采取以下方法:
:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
:set list
:set nolist
讨论邮件列表:https://groups.google.com/forum/?fromgroups#!topic/vim_dev/pjmW6wOZW_Q
space:·
),因为它看起来像 MS Word、Notepad++ 等软件中的空格。 - Dinei<C-K>.M
可得到·
符号。有关详细信息,请参阅:h digraph
。 - johnchen902set listchars=tab:⇤–⇥,space:·,trail:·,precedes:⇠,extends:⇢,nbsp:×
- GottZ:set list
命令用于启用特殊字符的显示。
:set nolist
命令用于禁用特殊字符的显示。
: set list!
更好 :) - skipprShift
和 !
比 no
更难打之外,它们的按键次数是相同的。如果你要将其放入你的 .vimrc 文件中,我同意感叹号形式更易于阅读。 - Dan Bechard:set list!
来完成,无需再输入nolist
。 !
符号只是将当前设置的值取反。我经常使用这种方法,特别是在使用:set paste!
时。我不喜欢按箭头键查找:set paste
或者:set nopaste
,哈哈。 - skippr我认为这里的其他答案更全面,但我想分享一个我通常用来视觉区别制表符和空格的技巧:
:syntax on
:set syntax=whitespace
这是针对Whitespace编程语言的语法高亮规则 - 制表符显示为绿色,空格显示为红色。 :)
可以与其他答案提到的:set list
结合使用,尽管制表符将显示为^I而没有绿色高亮,但空格将以红色显示。
:set list
命令会将所有空格显示为字符。除了空格以外的所有字符都会变得与正常状态不同,这意味着如果您仍然看到一个普通的空格,那么它确实是一个普通的空格。 :)
:set nolist
命令来关闭此功能。 - Greg K!
来切换无选项:set list!
- baldrslistchars
中的space
字符,似乎可以通过space:•
来实现。set showbreak=↪\
set listchars=tab:→\ ,eol:↲,nbsp:␣,trail:•,extends:⟩,precedes:⟨,space:•
- Kevin Friedheim如果你设置:
:highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none
然后执行一个搜索空格的操作,每个空格字符都会显示为下划线字符。
您可以将此命令用于方便的函数中,该函数切换空格的“下划线”状态。
set hls
let g:HLSpace = 1
let g:HLColorScheme = g:colors_name
function ToggleSpaceUnderscoring()
if g:HLSpace
highlight Search cterm=underline gui=underline ctermbg=none guibg=none ctermfg=none guifg=none
let @/ = " "
else
highlight clear
silent colorscheme "".g:HLColorScheme
let @/ = ""
endif
let g:HLSpace = !g:HLSpace
endfunction
使用以下方法将该函数映射到快捷键:
nmap <silent> <F3> <Esc>:call ToggleSpaceUnderscoring()<CR>
NB:在设置颜色方案之后,在vimrc中定义该函数。
根据当前缓冲区的语法规则,类似这样的内容可能有效:
:syn match WhiteSpace / / containedin=ALL conceal cchar=Æ
:setl conceallevel=2 concealcursor=nv
这需要一个带有+conceal功能的vim 7.3
更新于2014年10月24日 稍微详细解释一下,当然可以为隐藏的字符定义一些高亮显示。
您可以配置隐藏字符的外观。要进行突出显示,您至少需要一次配置“Conceal”突出显示组(请参见:h hl-Conceal
帮助文档)。这可以在您的颜色方案中完成,然后您就不需要再次重新配置它。但是,这会影响所有隐藏字符(例如,如果您的语法脚本隐藏了其他项目,则它们将显示为白色空格字符)。可能看起来像这样:
:hi Conceal ctermfg=7 ctermbg=NONE guifg=LightGrey guibg=NONE
似乎有一个特殊情况,即如果语法脚本使用skipwhite
关键字,则Vim不会突出显示空格。没有办法绕过它(也许这将被修复,我发布了patch)
list
模式下空格的外观。目前最新的补丁似乎是this one。(这意味着您需要构建自己的Vim才能使用它)。conceallevel
和concealcursor
是窗口本地选项。这意味着它们可以在不同的窗口中不同(并且可能也会由文件类型插件或其他插件脚本设置)。BufWinEnter
甚至可能是Syntax
或FileType
自动命令来完成。(我没有测试哪个实际上有效)。ColorScheme
自动命令设置高亮显示(这样隐藏的字符始终看起来相同,独立于颜色方案实际设置的内容)。要获得完整的解决方案,请查看romainl的答案,这应该可以让您有一个开端。如果您设置了一个函数,就可以轻松设置一个切换命令来打开或关闭特殊高亮显示。list
选项实现此功能。只需设置set list listchars+=space:␣
即可。这适用于Vim 7.4.711。.vimrc
中? - Eric Martindale/\s
:set hlsearch
为了突出显示空格。它搜索所有的空格,然后启用突出显示以使其突出显示。但是,它不会打印特殊字符。
nnoremap <leader><space> :noh<cr>
)。 - Lennaset list
会将非打印字符更改为在listchars
中配置的可见字符。:%s / /█/g
然后只需撤消更改即可返回。:set list
的反义词,将可见字符('space')改变为一个不可打印的字符。我想知道是否可以在匹配中使用它,比如 :match MyBlackBlockChar "appropriate_regex"
,那应该能解决问题,对吧? - Sudhi:%s/\s/█/g
命令来替换所有的空格。同时,使用 :set hlsearch
和 :&s/\s//gn
命令也是很有用的。 - user1655874function! Whitespace()
if !exists('b:ws')
highlight Conceal ctermbg=NONE ctermfg=240 cterm=NONE guibg=NONE guifg=#585858 gui=NONE
highlight link Whitespace Conceal
let b:ws = 1
endif
syntax clear Whitespace
syntax match Whitespace / / containedin=ALL conceal cchar=·
setlocal conceallevel=2 concealcursor=c
endfunction
augroup Whitespace
autocmd!
autocmd BufEnter,WinEnter * call Whitespace()
augroup END
将这些行添加到您的~/.vimrc
文件中,并启动新的Vim会话,以查看仍然不完美的魔法发生。
随意编辑默认颜色和隐藏字符。
注意:在几种语言的*FuncBody
语法组中,某些内容会阻止中间点显示。我还不知道如何使该解决方案更加可靠。
skipwhite
参数防止语法组匹配(尽管它应该允许包含在所有组中)。 - Christian Brabandt
:set list
的响应。那并没有回答我们的问题。(对于其他人来说,下面的 mrucci 的回答是有帮助的,但不算是真正的“解决方案”)。 - ELLIOTTCABLElist
和listchars
看到的人,请考虑一下空格直接跟在制表符后面的情况。在这种情况下,它几乎是看不见的。我同意你可以捕捉到大多数情况,但如果能正确突出显示所有空格就更好了。 - Kevin Cox