首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Neovim中插入简短的hashtag起始行

如何在Neovim中插入简短的hashtag起始行
EN

Stack Overflow用户
提问于 2019-03-08 02:26:13
回答 1查看 413关注 0票数 1

我的ftplugin/cpp.vim文件夹中有以下一行:

代码语言:javascript
复制
inorea <buffer> #def #define

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

代码语言:javascript
复制
if (&ft != 'cpp')
    finish
endif

inorea <buffer> #inc<lt> #include <lt>><left>
inorea <buffer> #inc #include ""<left>
inorea <buffer> #def #define
nnoremap <buffer> #inc<lt> i#include <lt>><left>
nnoremap <buffer> #inc" i#include ""<left>
nnoremap <buffer> #def<Space> i#define 
inoremap <buffer> /* /**/<left><left>

" For Single-File Codes : Save, Compile, and Run
nnoremap <buffer> <F5> :w<CR>:!g++ % -o %<.exe<CR><CR>:!%<.exe<CR>
nnoremap <buffer> <C-F5> :w<CR>:!g++ % -o %<.exe<CR><CR>:tabe<CR>:terminal<CR>3j$a

有趣的是,第5行没有弹出一个错误,它们确实在.cpp文件中工作。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-11 23:44:03

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

缩写的左侧可以是关键字字符(完全id)、以关键字字符结尾的非关键字字符(结束id),也可以是以非关键字字符(非id)结尾的任何字符。

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

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

快速测试:

代码语言:javascript
复制
:set isk=a-z
:ab #def foo
E474: Invalid argument
:set isk=a-z,#
:ab #def foo

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55055840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档