我想设置Vim来自动关闭'和'(弯引号)对。
我已经尝试配置我能找到的所有五个插件(两个autoclose's,环绕声,闭包和delimitmate),但没有成功。我似乎根本无法重新映射':imap ‘ ‘’<left>
或类似的东西。
我在Arch Linux和uim 1.7.0输入法上使用Vim 7.3;我通过.XCompose中定义的快捷方式插入'和'。重新制作对我的其他复合快捷键很有用,比如¡!或¿?。
答案 0 :(得分:4)
它看起来很像一个vim bug,特别是内部vim转义序列的bug,它都以\x80
开头(所讨论的字符的第二个字节是\x80
)并编码各种类似NULL的东西,功能键或\x80
字节本身。我想你可以深入研究vim源代码并找到这个字节是如何被转义的,并尝试用这个转义代码替换‘
的最后一个字节,或者等到这个将被修复(尽管我不希望修复来很快:这是引自todo.txt
UTF-8:映射不存在第二个字节为0x80的多字节密钥 上班。 (Tony Mechelynck,2007年3月2日)
所以,你看到问题已经存在了四年,还没有解决。)
答案 1 :(得分:3)
避免使用
进行递归inoremap ' ''<left>
答案 2 :(得分:0)
您可以通过一个小功能来实现这一目标:
function! CloseQuotes()
normal! i''
startinsert
endfunction
然后按以下方式将其映射到'
:
inoremap ' <ESC>:call CloseQuotes()<CR>
重要的是normal!
中的感叹号,它会阻止映射递归。