当我在 vim 中输入缓冲区时,我尝试默认设置 hlsearch。
:set hls
进入缓冲区后手动运行会执行我期望的操作。但是,当我添加autocmd BufEnter * set hls
到 .vimrc(并重新加载 vim)时,打开缓冲区时什么也没有发生。在前面添加冒号set
不会改变行为。
为了便于理解,我尝试使用这个脚本,但默认将其设置为“开启”。我尝试了页面“启动时加载”部分中提到的两个技巧,但均未成功。
我从 .vimrc 中删除了其他所有内容,因此不会受到其他内容的干扰。
编辑:
我使用的是 Vim 7.4,‘巨大’版本,通过 homebrew 获取。
这是我测试该选项时 .vimrc 的内容call AutoHighlightToggle()
。它在启动时不会突出显示,但按两次后z/
可以正常工作。:
nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR>
function! AutoHighlightToggle()
let @/ = ''
if exists('#auto_highlight')
au! auto_highlight
augroup! auto_highlight
setl updatetime=4000
echo 'Highlight current word: off'
return 0
else
augroup auto_highlight
au!
au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>'
augroup end
setl updatetime=500
echo 'Highlight current word: ON'
return 1
endif
endfunction
call AutoHighlightToggle()
答案1
该命令:se hls
仅打开一个选项。您将从视觉上看不到任何变化。请参阅:
:help 'hlsearch'
(引号是需要输入的。)
如果您尝试让 Vim 在每次输入新缓冲区时开始突出显示最后使用的搜索字符串,那么该命令将对您没有帮助。
不幸的是,Vim 没有该:nohlsearch
命令的逆命令,该命令告诉 Vim 停止突出显示最后搜索的字符串,并且 Vim 似乎拒绝让您在自动命令中对其进行组合(即标记光标位置,再次运行最后一次搜索,然后返回到标记)。Vim 似乎认为自动命令永远不会触发搜索突出显示。
如果您需要此功能,您应该直接向开发人员列表或 Vim 维护人员发送电子邮件并请求:hlsearch
添加命令。
答案2
另一个选择是使用参数启动 vim:
nvim -c ":call AutoHighlightToggle()" -c "set hls" $@