是否有任何快捷方式可以引用MV命令中第一个参数的路径?

我经常发现自己使用mv重命名文件。例如。
mv app/models/keywords_builder.rb app/models/keywords_generator.rb
这样做我需要写第二个参数的路径(确定,标签完成)。在这个例子中它不是太糟糕,但有时路径是深度嵌套的,它似乎是相当多的额外打字。 有没有更有效的方法来做到这一点?     
已邀请:
你可以像这样使用历史扩展:
mv app/modules/keywords_builder.rb !#^:h/keywords_generator.rb
!
介绍历史扩展。
#
是指当前正在键入的命令
^
表示第一个参数
:h
是获取“head”的修饰符,即没有文件部分的目录 它支持
bash
zsh
。 文档: bash历史扩张 zsh历史扩张     
另一种方式:支撑扩张。
mv app/models/keywords_{builder,generator}.rb
一般来说,
before{FIRST,SECOND}after
扩展到
beforeFIRSTafter beforeSECONDafter
因此它对其他重命名也很有用,例如
mv somefile{,.bak}
扩展到
mv somefile somefile.bak
它适用于
bash
zsh
。 更多例子: Eric Bergen> Bash Brace扩张 Bash Brace扩展| Linux Journal     
一种方法是键入第一个文件名和空格,然后按
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 -
    
Mikel和geekosaur的综合答案以及“:p”的附加用法 使用大括号扩展来避免第一个参数重复:
mv -iv {,old_}readme.txt # 'readme.txt' -> 'old_readme.txt'
mv -iv file{,.backup}    # 'file' -> 'file.backup'
使用历史扩展来避免第一个参数重复:
mv -iv "system file" !#$.backup # 'system file' -> 'system file.backup'
可以使用“p”指示符打印文件名以进一步编辑:
mv -iv "file with a long name" !#$:p
然后按“↑”编辑命令     

要回复问题请先登录注册