如何缩写“ |”炭?

时间:2018-07-27 06:48:55

标签: vim

在我的vimrc中,我正在做几个@Override public blog getItem(int position) { return super.getItem(getItemCount() - (position + 1)); } -s。除了iabbrev>=以外,其他所有类似==||的计算机都可以正常工作。

直接在|||中使用|||||会给我带来错误。将它们转义为.vimrc\|无效。

请帮助。


更具体地说,我有以下内容:

<bar>

仅alpha的最后一行有效。它的工作方式是,在插入模式下,输入“ alpha”后,按空格键,然后在缓冲区中输入“α”。

1 个答案:

答案 0 :(得分:1)

缩写的设计方式使其可以很好地与关键字字符配合使用,而与其他字符的配合则不太好。另一方面,当我们开始键入可出现在映射开头的字符时,什么也不会显示:解决诸如插入模式下的扩展之类的缩写并不是真正的人体工程学。

在这种情况下,由IMAP插件(也随vim-latex一起提供)实现的解决方案可能更好:在您要键入的左侧序列的最后一个字符上定义一个映射,分析上下文并扩展结果。困难在于,相同的字符可能会以42个不同的缩写结尾。这就是IMAP插件输入的地方,因为它可以解决此问题。

请注意,如果您希望将|||||扩展到其他事物,那么祝您好运。

给出|上用于分析其上下文的映射,如果我发现||在光标之前被展开了,我将知道键入的内容是第三个管道,因此我将所有内容删除并替换为与|||相关的新内容。

请注意,以获得更精确的答案,您需要向我们提供更多详细信息。

编辑:给定规范,我们不能

  • 具有两个缩写,因为第三个管道类型会触发||缩写
  • ||上有一个缩写,在|上有一个上下文映射,因为映射中和了该缩写

因此,我将仅通过单个映射进行这种操作

inoremap <buffer> <expr> \| get({'\|': '<bs>∨', '∨': '<bs>⫴'}, matchstr(getline('.')[:col('.')], '.$'), '\|')

其中:

  1. 我定义了一个字典,将上下文与上下文联系起来;它将替换语义从||-> |||-> 更改为||-> ∨| ->
  2. 我提取了光标之前的最后一个字符(使用列号模式对matchstr()的一次调用就可以做到这一点
  3. 我将上下文字符注入字典中,以查看应如何替换它,如果该上下文字符未注册,我们只需注入管道。