在vim中创建不会造成大量延迟的imaps

时间:2016-02-03 09:45:07

标签: vim vim-plugin

我正在为一种新语言开发一个小vim插件。我目前正在处理一些很酷的效果,将某些字符和单词更改为badass unicode字符,例如Move function definition to source file变为\

我现在想让λ变成not,但由于我不能在¬上匹配,这会导致一些复杂化,因为这会导致像not这样的字词转向进入nottingham所以我创建了imap:

¬tingham

但是每次按下空格都会导致恼人的延迟。无论如何要解决这个问题吗?

注意: 我没有使用inoremap <space>not<space> ¬ ,因为它会导致角色向后翻转,第四次变亮,而且它会突出显示。

3 个答案:

答案 0 :(得分:2)

使用缩写:

:abbrev not ¬

对于&#34;之前的空间&#39;不是&#39;部分&#34 ;:
来自:help abbreviations(&#39; not&#39;是full-id缩写,请参阅所有缩写类型的帮助):

The characters before the cursor must match the abbreviation.  Each type has
an additional rule:

full-id   In front of the match is a non-keyword character, or this is where
          the line or insertion starts.  Exception: When the abbreviation is
          only one character, it is not recognized if there is a non-keyword
          character in front of it, other than a space or a tab.

对于&#39;之后的&#34;空间&#39;部分&#34;:

An abbreviation is only recognized when you type a non-keyword character.
This can also be the <Esc> that ends insert mode or the <CR> that ends a
command.

答案 1 :(得分:0)

您可以使用

iabbrev not ¬

这使用内置的缩写系统,速度更快 而不是inoremap with spaces。

答案 2 :(得分:0)

简化和默认行为是当timeoutlen=1000timeout时,超时延迟由on控制,默认值为on

因此,要减少当前超时值的一半:set timeoutlen=500

更多:h timeout。 不确定,如果这是你正在寻找的,但比abbr方法更灵活。