自动关闭Vim中的卷曲引号

时间:2011-06-07 23:24:09

标签: vim typography auto-close

我想设置Vim来自动关闭'和'(弯引号)对。

我已经尝试配置我能找到的所有五个插件(两个autoclose's,环绕声,闭包和delimitmate),但没有成功。我似乎根本无法重新映射':imap ‘ ‘’<left>或类似的东西。

我在Arch Linux和uim 1.7.0输入法上使用Vim 7.3;我通过.XCompose中定义的快捷方式插入'和'。重新制作对我的其他复合快捷键很有用,比如¡!或¿?。

3 个答案:

答案 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!中的感叹号,它会阻止映射递归。