1)无论如何在一组行上而不是整个文件中自动添加/重新标记?
set shiftwidth=4
set expandtab
set tabstop=4
已在我的.vimrc
中定义。
我想要的是选择一堆行并仅对它们应用缩进。这是因为文件很大,我只想清理我的代码行。通过执行:retab
,我必须强制整个文件重新缩进。
例如,选择以下代码并自动重新登记
def hello(self):
line1
line2
到
def hello(self)
line1
line2
2)有什么方法可以反转标签吗?类似于Eclipse中的Shift-Tab。它可以追溯到4个空格。
答案 0 :(得分:1)
我想要的是选择一堆行并仅对它们应用缩进
您可以在可视模式下对某些行应用缩进。为此,请按照以下步骤操作:
将光标置于要缩进的第一行
输入 shift + v
向下移动,输入 j ,直到到达最后一行缩进(或者你可以输入 line# + G 如果你知道要缩进的最后一行的行号。)
输入>
另一个解决方案是在命令行模式下使用正则表达式执行此操作:
2,5s/\v(.*)/\t\1/g
这里的行范围是在正则表达式的前两个数字中指定的(在本例中是从第2行到第5行)。
答案 1 :(得分:0)
要同时回答您的两个问题,您可以使用>
和<
运算符。由于它们是运算符,它们的行为就像y
,d
,c
以及所有其他运算符一样,因此您必须为它们提供运动。例如,>>
将缩进当前行(包含4个空格),>j
将缩进当前行和下面的行。 >G
会将所有内容缩进到缓冲区的末尾等。
同样地,<
将取消您指定的任何内容。
在您的具体示例中,我建议使用两种不同的方法。
使用普通模式。这有点取决于你的功能有多大。如果它只是两行,您可以将光标放在 line1 上,然后键入<j>,
。 (当然,如果你的功能超过2行,你需要调整)。不幸的是,你需要在重新投入之前取消注意,否则你最终会得到5个空格,我认为你不想这样做。
使用视觉模式。除非您修改.vimrc
,否则此方法会稍微不方便,因为在视觉模式下调用>
或<
会放弃您的视觉选择。这就是为什么我在.vimrc
中有以下内容:
"Make it easier to indent a visual selection several times.
xnoremap > >gv
xnoremap < <gv
使用此设置,您可以直观地选择要重新连接的行,然后执行<>
。 IMO,这是最好的解决方案,我经常使用这种工作流程。
答案 2 :(得分:0)
大多数(如果不是全部)Ex命令采用一个范围,因此您可以直观地选择行并执行:'<,'>retab
。
或:12,16retab
。
或:.,+9retab
。
等等。
请参阅:help :retab
和:help :range
。
答案 3 :(得分:0)
你可以试试这个...
Shift + V
进入可视模式
然后按 j
直到找到您想要识别的文本。
最后按
=
,它会自动识别您选择的代码。
如果您想识别整个代码,只需输入 gg=G
。