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


    因为汉字不是占一个字节位,而 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
    
  • 相关阅读:
    VueJS
    Nacos 微服务注册发现配置中心
    精简自己20%的代码(异常的处理)
    lazarus 检测内存泄漏
    winsocket练习一 阻塞与select模型
    js原型链解析
    块元素 父子外边距现象
    行高的继承
    行内元素(文字)垂直平居中
    本地文件播放
  • 原文地址:https://www.cnblogs.com/hyaray/p/15183549.html
Copyright © 2020-2023  润新知