我通过以下方式在vimscript中获取光标下的字符:
getline('.')[col('.')-1]
Run Code Online (Sandbox Code Playgroud)
它完全像它应该的工作,但有一些我不喜欢.考虑这个[]光标.当存在在光标旁边,像这样的支架:
}[],][],)[]或{[]光标实际上返回支架.我需要设置什么才能始终在光标下正确返回字符,或者如果左边有一个括号则至少忽略?
注意:我怀疑它可能与括号突出显示有关,但我不确定.
注2:对于发生的情况,必须有匹配的括号.
Ing*_*kat 25
虽然我无法重现您正在描述的问题,但您的代码还有另一个问题:由于字符串索引(这是Vimscript的一个较粗糙的方面),它只适用于单字节字符,但无法捕获chars like Ä或 (depending on the encoding used). This is a better way of capturing the character under the cursor:
:echo matchstr(getline('.'), '\%' . col('.') . 'c.')
Run Code Online (Sandbox Code Playgroud)
Edit: Since about Vim 7.4.1742, Vim has new strgetchar(),并strcharpart()与性格指标工作职能,而不是字节寻址.这在很多情况下都很有用,但在这里不行,因为你仍然只能获得光标的字节索引位置(或者屏幕列的位置virtcol(),但是它与字符索引不同).
小智 5
nr2char(strgetchar(getline('.')[col('.') - 1:], 0))
Run Code Online (Sandbox Code Playgroud)
或者
strcharpart(getline('.')[col('.') - 1:], 0, 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5428 次 |
| 最近记录: |