假设我有两个项目:
~/Dev/ProjectOne
~/Dev/ProjectTwo
我当前的目录是
~/Dev/ProjectOne
,在当前缓冲区中我已经打开:
./app/controllers/spree/admin/some_controller.rb
我想将此文件复制到
~/Dev/ProjectTwo
中的同一路径中:
~/Dev/ProjectTwo/app/controllers/spree/admin/
将当前文件复制到
~/Dev/ProjectTwo
同时自动扩展相对路径的最短、最惯用的方法是什么?
当然可以输入整个复制命令:
!cp ~/Dev/ProjectOne/app/controllers/spree/admin/some_controller.rb \
~/Dev/ProjectTwo/app/controllers/spree/admin
在使用 Vim 近三十年的时间里,我不敢相信我没有想到更好的方法!
任何想法都非常好!谢谢!
如果目标路径存在,那么你可以简单地执行以下操作:
:w[rite] %:s/ProjectOne/ProjectTwo/
或:
:sav[eas] %:s/ProjectOne/ProjectTwo/
哪里……
%
是当前文件名,:…
是 :help filename-modifiers
,:s/ProjectOne/ProjectTwo/
将文件名中的 ProjectOne
替换为 ProjectTwo
。在实践中,您可能需要添加更多文件名修饰符(例如
:p
以确保您使用完整的绝对路径)。 YMMV.
请参阅
:help :w
和 :help :saveas
来决定使用哪一个。