【问题标题】:Move current line (up/down) to one position in Vim将当前行(上/下)移动到 Vim 中的一个位置
【发布时间】:2014-05-25 12:33:57
【问题描述】:

有时我想在 vim 中将当前行与 line up 或 line 交换。我可以使用命令:m+1:m-1 来做到这一点。不过也太啰嗦了。有没有更短的方法做同样的事情?

【问题讨论】:

标签: vim editor vi


【解决方案1】:

试一试:

ddpddkP

如果它给了你想要的。 ;)

【讨论】:

    【解决方案2】:

    给映射一个机会:

    nnoremap <leader>k :move-2<CR>==
    nnoremap <leader>j :move+<CR>==
    xnoremap <leader>k :move-2<CR>gv=gv
    xnoremap <leader>j :move'>+<CR>gv=gv
    

    【讨论】:

      【解决方案3】:

      Tim Pope 的 unimpaired.vim - Pairs of handy bracket mappings 和我自己的 LineJuggler plugin 都提供(除其他外;我的插件专注于行移动和复制,而 Tim 的则混合了有用的东西)[e]e 映射来移动当前行/选择高于或低于。这些不会破坏默认寄存器,如ddp 等。会的。

      【讨论】:

        【解决方案4】:

        Vim 有 :move 命令,可以让你移动一行。

        例如,:m +1 会将当前行向下移动。

        我的.vimrc 中有这些映射:

        " move the lines of visual mode up or down
        " JK to move and keep a correct indentation (with =)
        " <up><down> to move keeping the correct indentation
        vnoremap <silent> J :m '>+1<cr>gv=gv
        vnoremap <silent> <down> :m '>+1<cr>gv
        vnoremap <silent> K :m '<-2<cr>gv=gv
        vnoremap <silent> <up> :m '<-2<cr>gv
        

        使用这些线条,如果您在可视模式下选择一堆线条,然后按&lt;up&gt;&lt;down&gt; 箭头,线条将向上或向下移动(您将保持在相同的视觉选择中,这要归功于gv 结尾)。

        JK 几乎相同,但它们使用= 运算符保持和自动缩进(gv= 自动缩进最后一个视觉选择)。

        当然,我鼓励您修改映射到您自己偏好的键。这些只是我的。此外,在不理解的情况下复制粘贴可能是一个坏主意。如果您了解该映射,您可以查看:mgv= 的帮助页面。

        【讨论】:

          猜你喜欢
          • 2011-06-30
          • 1970-01-01
          • 2017-09-09
          • 1970-01-01
          • 1970-01-01
          • 2023-02-01
          • 2011-11-13
          • 2016-08-06
          • 2013-05-12
          相关资源
          最近更新 更多