vim - 如何在 Vim 中插入对齐文本列所需的可变数量的空格?

我是 Vim 中可视模式的粉丝,因为它允许在任何给定列之前插入文本。

例如,在下面的引号前插入空格:

> one
> two
> three

可以通过 <Ctrl-V>jjI <Esc> 完成:

>   one
>   two
>   three

如下:

  1. 使用 Ctrl-V 启动可视模式。
  2. 使用 jj 扩展视觉选择.
  3. I__ 插入一些空格.
  4. 使用 Esc 将更改传播到 block 选择的所有行。

现在我有一个需要格式化的文本文件。这是它的样子:

start() -- xxx
initialize() -- xxx
go() -- xxx

现在我想对齐部分文本以将其排列成这样的列:

start()       -- xxx
initialize()  -- xxx
go()          -- xxx

我遇到的问题是我不能在每一行中插入不同数量的缩进,而仅仅缩进固定数量的空格/制表符是不够的。 如何在所有缩进的文本都必须在同一列对齐的情况下进行缩进?

更新

我只是想出了一个相当冗长和笨拙的方法:

  1. 查找要缩进的字符串位置:\-- .
  2. 在此之前插入 n(比如 20)个空格:20i <Esc> .
  3. 将这些空格的一部分删除回某一列(比如说 15):d|15 .
  4. 将这些步骤保存为宏,并根据需要经常重复该宏。

不过,这种方法非常丑陋!

最佳答案

没有任何 vim 插件我会好很多。 这是我的解决方案:

<Shift-V>jj:!column -ts --

然后插入 --就像你在问题中写的那样分成多行。


您还可以在插入时附加一些评论。

:set virtualedit=all

<Ctrl-V>jjA-- xxx<Esc>

https://stackoverflow.com/questions/7529029/

相关文章:

text - 为什么 LaTeX 会忽略文档类中的字体大小

.net - 文化不可变对象(immutable对象) ToString()

html - html属性和值之间的空格?

javascript - json 值中的单引号

r - 用 R 定义 Excel 的列宽

intellij-idea - 如何阻止 IntelliJ IDEA 从 .properties 文

algorithm - 需要一种算法来拆分一系列数字

c# - Linq 2 Sql DateTime 格式为字符串 yyyy-MM-dd

sql-server - SQL Server 2008 : how to format the o

string - 在包含花括号的字符串上使用 -f 运算符