在vim中执行小型重构的最佳方法

Sła*_*osz 3 vim

我有以下代码:

if some_cond && another
  foo_bar
end
Run Code Online (Sandbox Code Playgroud)

我想把它改成:

foo_bar if some_cond && another
Run Code Online (Sandbox Code Playgroud)

什么是vim方法正确地做到这一点?

ib.*_*ib. 5

我将使用以下正常模式命令序列

ddjVpkJ<<
Run Code Online (Sandbox Code Playgroud)

或者这个Ex命令链1:

:m+|-j|<|+d
Run Code Online (Sandbox Code Playgroud)

这里我假设在重构之前光标位于if-line(不一定在该行的开头).


1首先,if通过:move + 命令将-line向下移动一行.该:move命令会剪切给定范围的行(如果未指定,则为当前行),并将其粘贴到此命令的唯一参数所寻址的行下方.该+地址是一个快捷方式.+1 表示法指的是下一行(见:help {address}).其次,作为条件语句主体的行与刚移动的行连接在一起 if.该:join命令将给定范围的行连接成一行.的-范围是一个缩短的形式-1指的是光标(见上面的线地址:help :range).第三,shiftwidth使用该:<命令将新连接的线向左移动一行.最后,该命令将删除end其地址(称为+范围)的剩余行 :delete.