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

如何在vim中将单词移到句首,vim,vi,Vim,Vi,说我有这条线 =函数(x,y,word) 我想把它转换成 word = function (x,y); 到目前为止,我一直在手动选择单词,然后选择“x”,然后将其粘贴到开头。然后我会删除不必要的逗号 有没有更有效的方法来完成同样的事情?试试这个::dw要剪切当前单词,移动到行的开头,然后:p将缓冲区粘贴到那里。不要像许多高级用户可能建议的那样创建奇怪的函数或宏,而是学习简单的命令,当您需要进行类似但略有不同的替换时,它可以帮助您 我的解决方案是:将光标放在逗号上,然后键入:xxdw^Pa 说

说我有这条线

=函数(x,y,word)

我想把它转换成

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


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

试试这个:
:dw
要剪切当前单词,移动到行的开头,然后
:p
将缓冲区粘贴到那里。

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

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

说明:

  • xx
    -删除逗号和空格
  • dw
    -删除单词
  • ^
    -将光标放在第行文本的开头
  • P
    -将删除的文本放在光标前
  • a
    -在单词后添加空格
  • -要返回正常模式,您也可以按
    ,如果您愿意,也可以不按

如何用逗号放置光标?了解f、f、t、t、w、b和e,以便在文本中移动更快。

我建议录制一个宏:(从行首开始)
qq2f,2xdw0Pa 0jq
,然后在需要的地方运行该宏:
@q

:%s/\(.*\),\([^)]*\)/\2\1/
编辑:删除/g


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

将光标放在word上并键入:

"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 “0diw删除字并将其存储在寄存器0中 dF,向后删除,包括:, ^将光标放在第行的第一个字符处 “0P粘贴单词
我建议将其映射到一个键。

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

    :s/\(^.*\), \(\a\+\)\();\)/\2\1\3/
(匹配到最后一个逗号)->\1

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

(匹配右大括号和分号)->\3


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

:s/(.*),([^)]*)/\2\1/g会使结果更漂亮。+1,但andrei可能不想在文件的所有行上都这样做。(在开始处删除%s)。但是运行此命令一次,然后手动移动到需要更改的下一行并按下&以重复替换,或者使用:g命令在多行上执行更改,这可能是有用的。对,只是开发人员并不总是添加正确的空间,所以让我们将其设置为:s/(.*),?([^]*)/\2\1/