Far Manager中如何直接将文件压缩后复制/移动到另一面板?
Far Manager中如何直接将文件压缩后复制/移动到另一面板?
哈哈,这个需求确实挺实用的——不想先压缩再手动挪,直接一键把文件压缩后送到另一面板对吧?其实Far Manager本身的自定义功能就能帮你搞定,不用每次分两步操作,给你两种简单的实现方式:
方法一:自定义快捷键直接绑定ArcLite命令
这是最直接的方式,把压缩+复制/移动的操作绑定到一个快捷键上:
- 按下
F9打开主菜单,依次选择Options->Keys进入快捷键设置界面 - 点击
Add按钮,挑选你想用的组合键(比如Ctrl+Shift+F5对应「压缩复制到另一面板」,Ctrl+Shift+F6对应「压缩移动到另一面板」) - 在
Command输入框里,填入对应的ArcLite命令:- 压缩复制到另一面板:
ArcLite pack "%f" "%p2\%n.zip"
(解释:%f是当前选中的文件路径,%p2是另一面板的当前路径,%n是原文件名不带后缀,这样生成的压缩包会直接出现在另一面板里) - 压缩移动到另一面板:可以先按上面的命令生成压缩包,再加上删除原文件的命令,比如
ArcLite pack "%f" "%p2\%n.zip" & del "%f"
- 压缩复制到另一面板:
- 保存设置后,以后选中目标文件按对应的快捷键,就能一步到位完成操作啦
方法二:编写自定义宏实现更灵活的操作
如果需要更精细的控制(比如自动刷新面板、处理批量文件),可以写个简单的宏:
- 按下
Ctrl+F11打开宏编辑器(或者通过F9菜单的Macros -> Edit macros进入) - 粘贴类似下面的宏代码(以「压缩移动到另一面板」为例):
Macro { description="压缩移动到另一面板"; area="Shell"; key="CtrlShiftF6"; action=function() -- 获取当前选中的文件 local currentFile = APanel.Current if not currentFile then return end -- 构造另一面板的压缩包路径 local destZipPath = Panel.Path(2) .. "\\" .. currentFile.Name:gsub("%.%w+$", ".zip") -- 调用ArcLite执行压缩 Plugin.Call("ArcLite", "pack", currentFile.FullName, destZipPath) -- 删除原文件 os.remove(currentFile.FullName) -- 刷新两个面板,确保显示最新状态 Panel.Update(nil, true) Panel.Update(2, true) end; }
- 保存宏文件后,这个快捷键就生效了——选中文件按下
Ctrl+Shift+F6,原文件会被压缩到另一面板,同时本地的原文件被删除
小贴士:如果需要用其他压缩格式(比如.rar),只需要把代码里的.zip改成对应的后缀就行;另外不同版本的ArcLite命令参数可能略有差异,你可以在ArcLite的帮助文档里核对具体参数哦
备注:内容来源于stack exchange,提问作者Alexander Gelbukh
相关产品推荐
相关产品推荐

