首页 > 系统服务 > 详细

VimL 获取光标所在行前、后的字符串(主要为了【兼容汉字】)

时间:2021-08-25 12:28:55      阅读:17      评论:0      收藏:0      [点我收藏+]

因为汉字不是占一个字节位,而 VimL 对这块处理,还是有不少细节要注意的。
比如 stridx 获取的是字节位置,而 strridx 是字符位置
strlen 是字节数, strchars 是字符

  • 获取光标前字符串(不含光标) strpart(getline(‘.‘), 0, col(‘.‘)-1)
  • 获取光标前字符串(含光标) strpart(getline(‘.‘), 0, col(‘.‘)-1) . strcharpart(strpart(str,col(‘.‘)-1),0,1)
  • 获取光标后字符串(不含光标) strcharpart(getline(‘.‘),strchars(strpart(getline(‘.‘),0,col(‘.‘)-1))+1)
  • 获取光标后字符串(含光标) strpart(getline(‘.‘), col(‘.‘)-1)
  • 获取当前光标字符 strcharpart(strpart(getline(‘.‘),col(‘.‘)-1),0,1)

为了方便以后获取,我还写了 ultisnips

snippet strbb "光标前字符串(不含光标)" w
strpart(${1:getline(‘.‘)}, 0, ${2:col(‘.‘)}-1)
endsnippet
snippet straa "光标后字符串(不含光标)" w
strcharpart(${1:getline(‘.‘)},strchars(strpart($1,0,${2:col(‘.‘)}-1))+1)
endsnippet

#考虑光标是汉字的情况
snippet charc "char at col" w
strcharpart(strpart(${1:getline(‘.‘)},${2:col(‘.‘)}-1),0,1)
endsnippet
snippet strb "光标前字符串(含光标)" w
strpart(${1:getline(‘.‘)},0,${2:col(‘.‘)}-1) . strcharpart(strpart($1,$2-1),0,1)
endsnippet
snippet stra "光标后字符串(含光标)" w
strpart(${1:getline(‘.‘)}, ${2:col(‘.‘)-1})
endsnippet

VimL 获取光标所在行前、后的字符串(主要为了【兼容汉字】)

原文:https://www.cnblogs.com/hyaray/p/15183549.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!