如何在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/