代码之家  ›  专栏  ›  技术社区  ›  vehomzzz

如何在vim中将单词移到句首

  •  2
  • vehomzzz  · 技术社区  · 16 年前

    说我有这条线

    = function (x, y, word) ;

    我想把它转换成

     word = function (x,y);
    

    到目前为止,我一直在手动选择单词,然后选择“x”,然后将其粘贴到开头。然后我会删除不必要的逗号。

    有没有更有效的方法来完成同样的事情?

    6 回复  |  直到 16 年前
        1
  •  10
  •   MBO    16 年前

    不要像许多高级用户建议的那样创建古怪的函数或宏,而是学习简单的命令,当您需要进行类似但略有不同的替换时,这些命令可以帮助您。

    我的解决方案是:将光标放在逗号上,然后键入: xxdw^Pa <C-[>

    • xx
    • dw -删除字
    • ^
    • P -将删除的文本放在光标前
    • a -在单词后加空格
    • <C-[> -escape可返回正常模式,也可按 <ESC>

    如何用逗号放置光标?了解 , F , T T , , B 和 E

        2
  •  4
  •   Nir Levy    16 年前
    :%s/\(.*\),\([^)]*\)/\2\1/
    

    编辑:删除/g

    EDIT2:仅当您要对整个文件执行此操作时,%s才可用。如果只想对当前行执行此操作,请替换 % . (a点)

        3
  •  1
  •   Randy Morris    16 年前

    我建议录制一个宏:(从行首开始) qq2f,2xdw0Pa <esc>0jq @q .

        4
  •  0
  •   John Feminella    16 年前

    试试这个: :dw 要剪切当前单词,请移动到行的开头,然后 :p

        5
  •  0
  •   martsbradley    16 年前

    或者可以使用正则表达式。

        :s/\(^.*\), \(\a\+\)\();\)/\2\1\3/
    

    (匹配最后一个参数)——>\2.

    根据需要对匹配的术语重新排序。

        6
  •  0
  •   Habi    16 年前

    "0diw    delete word and store it in register 0
    dF,      delete backwards up to and including ,
    ^        place cursor at first character in line
    "0P      paste word
    

    我建议将此映射到一个键。