如何在Vim中不使用宏录制快速实现文本列对齐
Vim 列对齐快捷方案
针对你提到的「第一列允许包含空格、两列用空格分隔」的对齐需求,以下3种方案都不需要录制宏:
方法1:可视块配合普通模式命令(无任何依赖,适合临时少量文本)
- 先将光标移动到第一行第二列内容的起始位置(也就是
French Polynesian的首字母 F 处),按Ctrl+G查看左下角显示的列号,记为目标对齐列数,示例中为 19 列 - 按
V选中其余 5 行需要对齐的内容 - 输入命令
:'<,'>norm! 19A <Esc>d019|后回车即可完成对齐
命令解释:给选中行的行尾补空格到至少19个字符,再删掉行首到第19列前的多余空格,把第二列内容统一对齐到19列位置
方法2:调用系统自带 column 命令(类 Unix 系统通用,操作简便)
因为第一列内部有空格,不能直接用默认的任意空格作为分隔符,按以下步骤操作:
- 按
V选中所有需要对齐的 6 行 - 输入替换命令,把两列之间的分隔空格替换为临时特殊字符,避免和第一列内部的空格混淆:
:'<,'>s/\s\(\S*\)$/|\1/ - 输入过滤命令调用 column 工具对齐:
:'<,'>!column -t -s '|',执行完成后即可得到符合要求的对齐效果
方法3:用对齐插件(高频对齐需求推荐,一次配置长期使用)
常用的对齐插件有 Tabular 和 vim-easy-align,以 Tabular 为例:
- 安装完成后按
V选中所有要对齐的行 - 输入命令
:Tabularize /\s\s\+/l0后回车即可,命令含义为:匹配至少2个连续空格作为分隔符做左对齐,分隔符左侧不留额外空格 - 如果使用 vim-easy-align,选中行后按快捷键
ga再输入2<space>,即可直接按每行的第二个空格作为分隔对齐,操作更快捷
内容的提问来源于stack exchange,提问作者mmmmmmmmmmmmm
相关产品推荐
相关产品推荐

