vim:删除除最后一行之外的所有单词

jus*_*ess 6 vim replace

我无法想出一个vim find/replace来删除除了最后一行之外的所有单词,即在一点SQL中,从一堆代码中生成所有别名的列表会很好

select 
column_a alias_a,
column_b alias_b,
column_c alias_c

from 
...
Run Code Online (Sandbox Code Playgroud)

我想生成列表

alias_a, alias_b, alias_c
Run Code Online (Sandbox Code Playgroud)

所以我想我想删除所有没有紧跟逗号和行结尾的单词

Ken*_*ent 8

选项1:

%s/\v.*\s(\S+)$/\1/
Run Code Online (Sandbox Code Playgroud)

选项2:使用宏

qa$T d0jq
Run Code Online (Sandbox Code Playgroud)

那么x@ax是你想要应用这个宏的行数

选项3

转向外部命令:

:%!awk '$0=$NF'
Run Code Online (Sandbox Code Playgroud)

选项4:如果您有Align或类似的插件,请将这些行对齐,然后使用c-v块选择并删除,只需离开最后一列.


Vau*_*ato 5

这应该可以做到:

:%s/.* \(.*\)\n/\1 /
Run Code Online (Sandbox Code Playgroud)