如何在使用上的Vim自动关闭插件自动关闭匹配报价?

问题描述 投票:1回答:2

我用这个插件autoclose.vim,因为我想自动关闭功能。

当使用Omnicompletion在编辑HTML,这是我得到的。

<p id="

注意初始报价...

输入一些数据后,我开始关闭的报价,这是输出(注意第3不正确双引号):

<p id="sometext""

我知道,我可以用ToggleAutoCloseMappings切换插件。我也想过上删除现有的报价和打开一些带有自动关闭插件,那么也许会有所帮助。

更好的解决方案是只关闭现有报价不切换插件(它没有被autoclosed)。

你怎么可以让它自动关闭匹配报价?

vim autocomplete quotes
2个回答
1
投票

我建议两种解决方案之一:

  1. 最简单的一个:立即完成后,将报价时使用<C-v>"
  2. 在那里你尝试检查需要的时候,只有插件的情况和运行使用<expr>映射。 " Put to ~/.vim/after/plugin/autoclose.vim let g:old_quote_rhs=substitute(maparg('"', 'i'), '<[^>]*>', '\=eval(''"\''.submatch(0).''"'')', 'g') inoremap <expr> " (HasUnclosedQuote() ? '"' : g:old_quote_rhs) 最棘手的部分是写功能HasUnclosedQuote权。下面是一个简单的实现只能对同一行未关闭的报价工作: function HasUnclosedQuote() return getline('.')[:(col('.')-1)]!~#'\v^%([^"]+|\"%(\\.|[^"\\]+)*\")*$' endfunction

0
投票

该插件只能识别已明确进入报价。当你介绍从自动完成报价(或注册膏),这是不认可的,因此导致重复报价。

我想有一点你可以只是避免将这种不完整的报价片段时,插件是积极做。

© www.soinside.com 2019 - 2024. All rights reserved.