Wie verschiebt man einen großen Abschnitt des Python-Codes unter vim um eine Registerkarte nach vorne?
伊谢尔伦
伊谢尔伦 2017-05-16 16:41:40
0
11
1705

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?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

Antworte allen(11)
漂亮男人

在vim里,粘贴代码之前最好进入粘贴模式,这样就会关闭自动缩进

set paste

将代码粘贴进去之后再关闭粘贴模式

set nopaste

缩进单行代码是两个大于号'>>'
回缩就是两个小于号'<<'
如果想要缩进很多行代码的话就按照下面做

1 //在这里按下'v'进入选择模式
1
1
1
1
1
1//光标移动到这里,再按一次大于号'>'缩进一次,按'6>'缩进六次,按'<'回缩。以下同理
function helo{//将光标移动到'{',在按下'%',光标将会移动到匹配的括号

//这里省略1000行

}//光标会移动到这里,再按一次大于号'>'就可以缩进
phpcn_u1582

: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了!

Peter_Zhu

在 vimrc 里面定义好python的各种 tab,例如:

autocmd FileType python set ts=4 | set sw=4 | set expandtab    

然后在 normal 模式,直接输入=nj
n 是要求自动对齐的行数,不管缩进是怎么样的乱,都会自动对齐

给我你的怀抱

在下以为 vim 提供的命令都很灵活,但都太底层了。目前所有答主的答案都是硬敲的,难记忆也没有效率,建议设置成快捷键吧。
比如个人习惯用tab,选中目标区域然后按快捷键即可。

vimlvnoremap <tab> >gv
vnoremap <s-tab> <gv

以题主的问题为例。

  1. 移动到目标区域的首行
  2. 输入 v 进入选择模式
  3. 输入 100j 往下移动 100 行,此时已经选取了 100 行目标区域
  4. 输入 < tab > 键。

完~

漂亮男人

提供另一个方法,不用进 V 模式。

  1. 移动到需要处理的首行,ma

  2. 移动到需要处理的末行,<'a

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage