Heim  >  Fragen und Antworten  >  Hauptteil

Wie verschiebt man einen großen Abschnitt des Python-Codes unter vim um eine Registerkarte nach vorne?

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?

伊谢尔伦伊谢尔伦2712 Tage vor1624

Antworte allen(11)Ich werde antworten

  • 漂亮男人

    漂亮男人2017-05-16 16:43:40

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

    set paste
    

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

    set nopaste
    

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

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

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 16:43:40

    :10,100>
    第10行至第100行缩进
    :20,80<
    第20行至第80行反缩进

    Antwort
    0
  • 滿天的星座

    滿天的星座2017-05-16 16:43:40

    normal模式下,光标在需要处理的起始行,然后:100>>

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 16:43:40

    1,^V 在需要缩进的行前面;
    2,I;
    3,tab

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-05-16 16:43:40

    1 按Esc到命令行模式
    2 移动光标到需要处理的开始行
    3 按v到视图模式,选中所有需要处理的行
    4 按Ctrl+<就可以了

    Antwort
    0
  • PHP中文网

    PHP中文网2017-05-16 16:43:40

    在 Vim 中粘贴要注意,如果 Vim 无法知道你是在粘贴(非 GUI 版本,终端中没有打开鼠标支持或者终端本身不支持鼠标,因为 Vim 没有 X 剪贴板支持而绕过 Vim、使用带 Shift 键的方式让终端直接粘贴(如往 ssh 中的 Vim 粘贴时通常 Vim 不能访问本地剪贴板,所以只能让终端去「打字」)),那么你需要在粘贴前设置 'paste' 选项。该选项会在插入模式禁用自动缩进、映射等。详见 :h 'paste'

    Antwort
    0
  • ringa_lee

    ringa_lee2017-05-16 16:43:40

    可以这么玩:
    假如你是第10行到第100行需要删除一个tab,那么可以这么写
    :10,100s/^\t//
    就ok了!

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-05-16 16:43:40

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

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

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

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 16:43:40

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

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

    以题主的问题为例。

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

    完~

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-05-16 16:43:40

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

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

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

    Antwort
    0
  • StornierenAntwort