重构Ruby的最佳方法是什么;如果’;在Vim中将语句转换为一行速记形式?
我有以下Ruby代码:重构Ruby的最佳方法是什么;如果’;在Vim中将语句转换为一行速记形式?,vim,Vim,我有以下Ruby代码: if some_cond && another foo_bar end 我想把它改成: foo_bar if some_cond && another 在Vim中,最惯用的方法是什么?我看到很少(可能是非最佳)解决方案: 光标位于第一行的第一个字符中: D-删除if条件,但将光标保持在相同位置(不删除行) J-将下一行连接到当前 A-追加空格并退出到正常模式 p-粘贴if条件 然后用jdd拆下剩余的一端 光标位于第一行的第一个字
if some_cond && another
foo_bar
end
我想把它改成:
foo_bar if some_cond && another
在Vim中,最惯用的方法是什么?我看到很少(可能是非最佳)解决方案:
- D-删除
条件,但将光标保持在相同位置(不删除行)if
- J-将下一行连接到当前
- A-追加空格并退出到正常模式
- p-粘贴
条件if
- 然后用jdd拆下剩余的一端
- j-移动到下一行
- dd-删除此行
- k-如果条件,则返回到
- P-将删除的行粘贴到实际行之前,光标应放在粘贴的行上
- J-将下一行连接到当前
- ==或这可能有30种方法
这里有一个,假设您在正常模式下从单词
的末尾开始: dd(删除最后一行)end
“aD(删除并复制
到缓冲区foo_bar
)a
dd(现在删除空行2)
“aP(插入符号前从缓冲区粘贴
)a
aSpaceEsc(插入空格并返回正常模式)
同样,“正确”在Vim中很少应用,因为有很多方法可以完成某些事情。这是一个非常小的更改,即使重新键入
也有道理。假设光标位于 重构(不一定在该行的开头), 我将使用以下正常模式命令序列:foo\u bar
ddjVpkJ<<
:m+|-j|<|+d
ddjVpkJ另一种方式:
ddpkJjdd
- ddp交换两条线路
- kJ向上移动并加入队列
- ==重新缩进该行
- jdd向下移动并删除最后一行
,但那更好,我可以自己映射。你提供的Ex命令非常棒,但是你能解释一下它们以及如何获得帮助吗?@Peter:谢谢!类似于:s//
:s/^\s*\(if.*\)\n\(\\\\.*\)\n\s*end\>/\2\1/@sławosz:当然。我已经添加了一个简短的解释,说明了四个Ex命令链背后的操作。有关更多详细信息,请参见
,:h:m
,:h:j
:h: