有什么捷径可以参考MV命令中第一个参数的path吗?

我经常发现自己使用mv来重命名一个文件。 例如

mv app/models/keywords_builder.rb app/models/keywords_generator.rb 

这样做,我需要写(确定,选项卡完成)的第二个参数的path。 在这个例子中,它不是太糟糕,但是有时候这个path是深深嵌套的,看起来好像还有一些额外的input。

有没有更有效的方法来做到这一点?

Solutions Collecting From Web of "有什么捷径可以参考MV命令中第一个参数的path吗?"

你可以像这样使用历史扩展:

 mv app/modules/keywords_builder.rb !#^:h/keywords_generator.rb 
  1. ! 介绍历史扩张。
  2. #当前正在键入的命令
  3. ^表示第一个参数
  4. :h是获取“head”的修饰符,即没有文件部分的目录

它在bashzsh受支持。

文档:

  • bash历史扩张
  • zsh历史扩张

另一种方式: 扩张 。

 mv app/models/keywords_{builder,generator}.rb 

一般来说,

 before{FIRST,SECOND}after 

扩展到

 beforeFIRSTafter beforeSECONDafter 

所以对其他重命名也是有用的,例如

 mv somefile{,.bak} 

扩展到

 mv somefile somefile.bak 

它在bashzsh

更多例子:

  • 埃里克·卑尔根> Bash大括号扩张
  • Bash Brace扩展| Linux杂志

一种方法是输入第一个文件名和一个空格,然后按下Ctrl + w将其删除。 然后按Ctrl + y两次以获得文件名的两个副本。 然后编辑第二个副本。

例如,

 mv app/models/keywords_builder.rb <Ctrl+W><Ctrl+Y><Ctrl+Y><edit as needed> 

或者cd apps/models && mv keywords_builder.rb keywords_generator.rb && cd -