[20240806]vim关闭bell声音.txt
--//今天在windows 10上使用vim 8.0,遇到一个奇怪的问题,我发现按<ESC>键,会从音箱发生响声,以前从来没有注意到这个情况,而不是
--//以前蜂鸣器的声音,可能是我不经常打开音箱的原因.而家里也是使用winows 7+vim 8.0的笔记本电脑,就从来没有出现这样的情况,为
--//什么呢?
--//我个人在工作中非常讨厌这类声响,非常影响工作情绪.
--//看了文档,涉及到声音在vim有几个参数belloff,errorbells,visualbell,t_vb
:set belloff? eb? vb? t_vb?
belloff=
noerrorbells
novisualbell
t_vb=^[|f
--//第1个参数为空,没有设置,应该排除,
--//第2个参数设置是noerrorbells,也可以排除.
--//第3参数设置的是novisualbell,也可以排除.
--//只能是最后1个参数
--//仔细查看:help visualbell
'visualbell' 'vb' boolean (default off)
global
{not in Vi}
Use visual bell instead of beeping. The terminal code to display the
visual bell is given with 't_vb'. When no beep or flash is wanted,
use ":set vb t_vb=".
Note: When the GUI starts, 't_vb' is reset to its default value. You
might want to set it again in your |gvimrc|.
In the GUI, 't_vb' defaults to "<Esc>|f", which inverts the display
for 20 msec. If you want to use a different time, use "<Esc>|40f",
where 40 is the time in msec.
Does not work on the Amiga, you always get a screen flash.
Also see 'errorbells'.
--//执行:set vb t_vb?,显示:
t_vb=^[|f
--//执行如下:
set visualbell t_vb=
--//再次尝试按<ESC>键,不再发出烦人的声音.实际上还会出现一个奇怪的问题,按<ESC>键屏幕会出现闪烁,设置后,这个现象也会消失.将
--//以上设置写入vimrc.vim文件我以为问题可以解决,很奇怪我设置的不生效.t_vb没有变化.
:set t_vb
t_vb=^[|f
--//上网查询,链接https://vim.fandom.com/wiki/Disable_beeping,设置如下:
set visualbell t_vb=
autocmd GuiEnter * set visualbell t_vb=
--//执行gvim后:
:set belloff? eb? vb? t_vb?
belloff=
noerrorbells
novisualbell
t_vb=
--//但是按<ESC>键还是会从音箱发生响声.但是手工执行:set visualbell t_vb= 后,确实声音消失,不知道为什么.
--//仔细看上面的输出可以发现一个细节输出含有novisualbell.
--//在结尾加入set novisualbell问题解决.
set visualbell t_vb=
autocmd GuiEnter * set visualbell t_vb=
set novisualbell
:set belloff? eb? vb? t_vb?
belloff=
noerrorbells
visualbell
t_vb=
--//只有这样才不会出现上面的情况.实际上脚本写入如下就可以解决以上问题.
autocmd GuiEnter * set visualbell t_vb=
set novisualbell
--//我又在linux下测试(虚拟机器),同样的设置发现问题再次出现:
--//设置如下:
set visualbell t_vb=
autocmd GuiEnter * set visualbell t_vb=
:set belloff? eb? vb? t_vb?
belloff=
noerrorbells
visualbell
t_vb=
--//总之,设置后结果如上,声音就不再出现.视乎vim与gvim两种不同.在linux下设置set visualbell t_vb=就可以了.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3024448/ ,如需转载,请注明出处,否则将追究法律责任。