如何在Vim上面的线上方移动当前行?

ber*_*kes 3 vim

我如何将当前线移到它上面的线后面?说我有:

    function foo()
      {
      ^ Cursor is here
Run Code Online (Sandbox Code Playgroud)

并希望将其转化为:

function foo() {
Run Code Online (Sandbox Code Playgroud)

我还是vim的新手,所以我现在做的是i[backspace][backspace]...etc.:)

Ben*_*oit 9

几种方式:

  • 在正常模式下,kJkgJVkJVkgJ(最后两个命令在可视模式下执行相同操作).
    k将转到上一行,JgJ将与下一行合并(J在中间插入一个空格,gJ只删除EOL字符)
  • 在命令模式中,:-,j或者:-,j!
    -,是缩写的范围,.-1,.意味着"从前一行到当前行"
    j是用于连接范围中的行的ex命令.撞击(带感叹号)版本就像gJ一样.
  • 使用替换::-s/\s*\n\s*//
    -表示
    :s您可能已知前一行,否则您应该运行vimtutor. /\s*\n\s*/是尽可能多的空格的模式加上行终止符(根据文件格式匹配不同的字节序列:LF,CR或CRLF)加上尽可能多的空格.
    这里,替换模式是空的.
  • 在插入模式下,命中CTRL-W两次(每次删除一个单词,或在一行或新行上引导空格)(如同ib.建议,这取决于backspace设置).

参考文献:

  • :help J
  • :help gJ
  • :help k
  • :help range
  • :help :j
  • :help pattern
  • :help i_CTRL-W

  • +1; 另外,如果你需要用`gJ`合并多行,你可以做一次'gJ`,然后点击`.`键重复这个动作. (2认同)