如何在Neovim中插入缩写标签开头的行

时间:2019-03-08 02:26:14

标签: vim neovim abbreviation

我的$.ajax({ type: "POST", url: "https://api.instagram.com/oauth/access_token", data: { client_id: 'XXXXXX', client_secret: 'XXXXXX', grant_type: 'authorization_code', redirect_uri: 'XXXXXX', code: 'XXXXXX' }, success: function(html) { console.error(html) }, error: function(html) { console.error(html) } }); 文件夹中有以下行:

Net::HTTP.post_form(URI.parse('https://api.instagram.com/oauth/access_token'), {'client_id': 'XXXXXX','client_secret': 'XXXXXX','grant_type': 'authorization_code','redirect_uri': 'XXXXXX','code': 'XXXXXX'}).body

每当我进入Neovim时,它就会不断弹出错误。整个代码如下:

ftplugin/cpp.vim

很有趣的是,第5行没有弹出错误,它们确实可以在inorea <buffer> #def #define 文件中工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

缩写的工作方式取决于'iskeyword'选项。参见:h Abbreviations

缩写的左侧可以只是关键字字符( full-id ),也可以是非关键字字符,以关键字字符( end-id )或以非关键字字符( non-id )结尾的任何字符。

如果#字符不是'iskeyword'不是部分,则#def不是这三种类型,因此:ab #def ...无效。因为那是以非关键字字符开头的关键字字符。

'iskeyword'的格式相当神秘(请参阅:h 'isfname'),但是默认情况下它设置为@,48-57,_,192-255。它不包含#

快速测试:

:set isk=a-z
:ab #def foo
E474: Invalid argument
:set isk=a-z,#
:ab #def foo

因此,您可以将set iskeyword+=#放在缩写词之前,但这也可能导致其他问题,因为'iskeyword'中的字符用于很多用途。