zoukankan      html  css  js  c++  java
  • Vim中根据正则对选中文本对齐(比如ini文件的=号对齐)

    vimrc增加如下内容即可:

    vnoremap <M-=> :call Duiqi('v(^s*S+)s+(.*)')<CR>  
      
    "reg匹配的第2段文字对齐  
    function! Duiqi(reg)  
        let l0 = line("'<")  
        let l1 = line("'>")  
        "获取第1个单词及前面空格的最大长度  
        let max = 0  
        let arr = {}  
        let l = l0  
        while l <= l1  
            let arr[l] = matchlist(getline(l), a:reg) "把字符串分成2段  
            let len = strlen(arr[l][1])  
            let max = (len > max ? len : max)  
            let l += 1  
        endwhile  
        let max += 1 "最长的后面要放一个空格  
        "设置strSpace  
        let strSpace = CreateSpaces(max)  
        "开始对齐  
        let l = l0  
        while l <= l1  
            call setline(l, arr[l][1].strpart(strSpace, 0, max-strlen(arr[l][1])). arr[l][2])  
            let l += 1  
        endwhile  
    endfunction  
      
    "生成n个空格的字符串  
    function! CreateSpaces(n)  
        let s = ''  
        for i in range(a:n)  
            let s .= ' '   
        endfor  
        return s  
    endfunction  
    

      

    函数参数用的正则表达式,例子中的正则是根据每行的第2个单词对齐,
    主要就是两个()内匹配的内容。
    使用方法:要先选中要对齐的行,再按Alt+=对齐,效果如下:

    如果前面有空格,则效果如下:

    如果想去除最前面的空格,修改参数为

    'v^s*(S+)s+(.*)'
    

    效果如下:

    想修改对齐规则,则要自己设置正则了。

  • 相关阅读:
    静态方法
    表单的验证
    jquery笔记
    jquery参考
    dom体系 和获取其他页面的Window对象
    jsRegExp对象
    jsDate对象
    js案例
    Sqli-Labs 闯关 less 42-53
    Sqli-Labs 闯关 less 32-41
  • 原文地址:https://www.cnblogs.com/hyaray/p/6663508.html
Copyright © 2011-2022 走看看