如果我有一个像这样的文本文件:
alpha: 1
beta: 2
gamma: 3
delta: 4
epsilon: 5
#1 楼
请参阅接受的答案以基于单个字符对齐代码块回顾
ggVG
选择全部:'<,'>normal f:5a
,您不必输入'<,'>
,也不必在末尾注明空格。对于选择中的每一行,它将执行常规命令查找:
并在其后添加5个空格转到
epsilon: <here>
之后的第二个空格,然后按<C-v>
激活块可视模式5k
选择一个字符列直到第一行<
重复1次.
重复它直到一切都对齐PS
评论
除了:normal f:5a,您还可以使用:s /:/:/
–马特
19年7月25日在10:16
实际上,可以使用:s /:/:/代替。 (不幸的是,5个空格被裁剪掉)
– Maxim Kim
19年7月25日在10:42
#2 楼
您可以使用vim-lion插件执行此操作。安装它,然后将光标放在第一行。在正常模式下,输入
glip/
。系统将提示您键入一种模式,因此只需键入\d
以匹配任何数字,然后按Enter。它将为您排列数字。评论
实际上,这可以通过lion.vim定义的gL运算符来完成。该运算符通过在对齐字符的右边添加空格(而不是像gl运算符一样,在左边)来执行对齐。完整的命令将是gLip:。
–tommcdo
2015年2月7日在21:53
#3 楼
这是一种不使用任何插件的方法。策略是使用制表符作为临时列定界符,然后将制表符重新格式化为空格。首先设置
:set noexpandtab
(简称noet
)文本,使用Tab键在每个冒号后面插入一个水平制表符。可能看起来有点错误,像这样: >
alpha: 1
beta: 2
gamma: 3
delta: 4
epsilon: 5
但是,空格实际上是水平制表符,而不是空格。
:set tabstop=9
表示要使用空格而不是制表符。然后,:set ts=9
执行制表符到空格的转换。评论
这不是理想的,因为这只会改变vim中选项卡的可视化方式,如果其他人在不同的编辑器中打开文件,效果会不佳。
–德鲁瓦·萨加尔(Dhruva Sagar)
2015年2月8日下午5:49
@DhruvaSagar怎么样?步骤4中的制表符到空格转换后,结果完全相同。
– 200_success
2015年2月8日在6:41
不同的编辑器以不同的方式显示/处理选项卡。
–德鲁瓦·萨加尔(Dhruva Sagar)
2015年2月8日,12:34
好的,我想我忽略了步骤4。对不起,我的错。
–德鲁瓦·萨加尔(Dhruva Sagar)
15年2月8日在14:58
#4 楼
这是另一种不使用任何插件的方法。首先用更大的空格替换空格。无需精确:只需将Space键捣碎一遍: >
:%s/ / /
唯一棘手的部分是知道要使用的计数。对于此示例,这很容易,最长的行包含7个字母的单词:
epsilon
加2个其他字符(冒号和空格),因此您需要使用9 + 1的计数。更复杂的对齐方式可能会因在状态行中显示当前光标位置(或使用类似
getcurpos()
)而受益。或者,您可以手动将光标定位在每行上并使用正常模式手动dw。
还可以在宏中使用此技术:
:%norm! 10|dw
#5 楼
您可以尝试以下插件:vim-easy-align。#6 楼
如果您使用的是Unix环境,则可以运行%!column -t
但是如果您使用的是Windows,并且已安装git,则意味着您可以使用已安装的精美的unix工具:)可以在这里找到grep,tee,它和列之类的工具: :
%localappdata%\Programs\Git\usr\bin
#7 楼
我试图解决问题的尝试vip ............... select paragraph
:'<,'>!column -t align
:%norm $X ......... remove one space
评论
请参阅vi.stackexchange.com/questions/20658/…的公认答案。@ D.BenKnoble在2015年提出了这个问题,您提供链接的问题是在2019年提出的。
@MaximKim很清楚。我链接的问题有一个可以接受的答案。无论如何,其中一个应该作为另一个的封闭。这似乎是将人们指向答案的更便捷的方法。