Vim脚本:检查光标是否在当前单词上

时间:2013-02-22 08:50:40

标签: vim

例如在这种情况下:

function_call(arg1, arg2);
                  ^Cursor is here

调用expand('<cword>')将返回“arg2” 当光标位于当前单词位置的左侧时,我需要过滤掉这些情况 有办法吗?

2 个答案:

答案 0 :(得分:3)

使用(下一个)<cword>的位置的替代方案是:
(根据他想知道的OP的评论,或许应该用该请求更新问题)

let cInd = strridx(getline('.'), expand("<cword>"), col('.') - 1)
let isOnKeyword = (cInd >= 0 && (cInd + strlen(expand("<cword>"))) >= (col('.') - 1))

如果下一个<cword>也位于当前行的较早位置,则需要第二部分,在您的示例中,如果字符串arg2也应该在,之前的某个位置之前的某个位置1}},这是假设但应予以考虑 请注意,strridx 不是 stridx

答案 1 :(得分:2)

可能通过检查光标当前是否在关键字字符上:

let isOnKeyword = matchstr(getline('.'), '\%'.col('.').'c.') =~# '\k'