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+(.*)'

效果如下:

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

Vim中根据正则对选中文本对齐(比如ini文件的=号对齐)的更多相关文章

  1. HTML中解决双击会选中文本的问题

    HTML中解决双击会选中文本的问题 <div unselectable="on" style="-moz-user-select:none;" onsel ...

  2. Vim 中的持久撤消

    Vim中的持久撤消 阅读文本大约需要俩分钟. 在 Vim 中像其他文本编辑器一样,你可以在当前会话中执行 "撤销/重做" .当一旦会话关闭,则你需要重新打开一个新文章,运行撤销将不 ...

  3. Vim 中进行文件目录操作

    Vim 中进行文件目录操作 当前文件名 我们知道Vim有48个寄存器,其中%只读寄存器中保存着当前文件路径. 例如在/home/harttle/下打开src/main.cpp,我们打印%的值: :ec ...

  4. C#中读写INI文件

    C#中读写INI文件 c#的类没有直接提供对ini文件的操作支持,可以自己包装win api的WritePrivateProfileString和GetPrivateProfileString函数实现 ...

  5. C#中读写INI文件

    INI文件就是扩展名为“ini”的文件.在Windows系统中,INI文件是很多,最重要的就是“System.ini”.“System32.ini”和“Win.ini”.该文件主要存放用户所做的选择以 ...

  6. 配置信息写入到.ini文件中的方法

    在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中 1.所用的WINAP ...

  7. 如何在C#中读写INI文件

    INI文件就是扩展名为"ini"的文件.在Windows系统中,INI文件是很多,最重要的就是"System.ini"."System32.ini&q ...

  8. 每日vim插件--vim中的文本对象及相关插件

    最近在个人博客上 http://foocoder.com  每天都会介绍一个vim插件,想起来园子也好久没更新了,也来更新一篇. 今天按读者留言的要求,介绍下文本对象.同时还会介绍我在用的几个文本相关 ...

  9. vim中选择匹配文本删除技巧

    试举几例如下: 如何只保留匹配内容行而删除其他行? :v/pattern/d :help :v 如何对每行只保留匹配内容而删除这一行中的其它内容 :%s/^.pattern.$/\1/g 删除包含特定 ...

随机推荐

  1. C++_了解虚函数的概念

    第一.先了解基本概念介绍: 虚函数.多态.继承都是紧密相关的概念.而继承是所有概念的基础: 继承的概念:是面向对象编程的三大特性之一(另外两个是:多态和封装):继承可以使得子类具有父类的属性和方法或者 ...

  2. jquery 拖动改变div大小

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 华东交通大学2015年ACM“双基”程序设计竞赛1004

    Problem D Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Sub ...

  4. Java中Array与ArrayList的主要区别

    1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([]):最高效:但是其容量固定且无法动态改变:      ArrayList: ...

  5. hbase数据库操作

    .实验内容与完成情况:(实验具体步骤和实验截图说明) (一)编程实现以下指定功能,并用 Hadoop 提供的 HBase Shell 命令完成相同任务: () 列出 HBase 所有的表的相关信息,例 ...

  6. maven 环境变量配置

    新增变量:MAVEN_HOME:D:\tools\apache-maven-3.52 修改path,在path中新增如下: %MAVEN_HOME\bin%; 注意末尾增加分号 最后,到dos中查看m ...

  7. 常见的几种web攻击方式

    一.Dos攻击(Denial of Service attack) 是一种针对服务器的能够让服务器呈现静止状态的攻击方式.有时候也加服务停止攻击或拒绝服务攻击.其原理就是发送大量的合法请求到服务器,服 ...

  8. cesm1_2_2在南信大大型机上的移植以及运行简单case的步骤

    真实验证有效:点击链接 查看具体移植过程.

  9. Vim Plugins for Linux

    Usage 1.Set up Vundle: git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vi ...

  10. Linux环境编程--waitpid与fork与execlp

    waitpid waitpid(等待子进程中断或结束) 表头文件 #include<sys/types.h> #include<sys/wait.h> 定义函数 pid_t w ...