Ich habe einen großen Abschnitt des Python-Codes unter vim eingefügt, aber ab einer bestimmten Zeile wurde alles durch eine zusätzliche Registerkarte nach hinten verschoben. Es gab mehr als 100 Zeilen, eine nach der anderen, und ich war erschöpft.
Gibt es eine Möglichkeit, es einfacher zu machen?
在vim里,粘贴代码之前最好进入粘贴模式,这样就会关闭自动缩进
将代码粘贴进去之后再关闭粘贴模式
缩进单行代码是两个大于号'>>'
回缩就是两个小于号'<<'
如果想要缩进很多行代码的话就按照下面做
:10,100>
第10行至第100行缩进
:20,80<
第20行至第80行反缩进
normal模式下,光标在需要处理的起始行,然后:100>>
1,^V 在需要缩进的行前面;
2,I;
3,tab
1 按Esc到命令行模式
2 移动光标到需要处理的开始行
3 按v到视图模式,选中所有需要处理的行
4 按Ctrl+<就可以了
在 Vim 中粘贴要注意,如果 Vim 无法知道你是在粘贴(非 GUI 版本,终端中没有打开鼠标支持或者终端本身不支持鼠标,因为 Vim 没有 X 剪贴板支持而绕过 Vim、使用带 Shift 键的方式让终端直接粘贴(如往 ssh 中的 Vim 粘贴时通常 Vim 不能访问本地剪贴板,所以只能让终端去「打字」)),那么你需要在粘贴前设置 'paste' 选项。该选项会在插入模式禁用自动缩进、映射等。详见
:h 'paste'
可以这么玩:
假如你是第10行到第100行需要删除一个tab,那么可以这么写
:10,100s/^\t//
就ok了!
在 vimrc 里面定义好python的各种 tab,例如:
然后在 normal 模式,直接输入
=nj
n 是要求自动对齐的行数,不管缩进是怎么样的乱,都会自动对齐
在下以为 vim 提供的命令都很灵活,但都太底层了。目前所有答主的答案都是硬敲的,难记忆也没有效率,建议设置成快捷键吧。
比如个人习惯用tab,选中目标区域然后按快捷键即可。
以题主的问题为例。
完~
提供另一个方法,不用进 V 模式。
移动到需要处理的首行,ma
移动到需要处理的末行,<'a