mc 全称是 GNU Midnight Commander,我认为它是自由操作系统下最强的文件管理器,无论是Linux还是FreeBSD均能稳定工作。神奇的是它只是纯字符界面的管理器,体积不过两三兆,却比nautilus, rox, thunar, konqueror 等等都要强大,并且不依赖X环境(不像krusader,且后者不够稳定),真是把ncurse用到了极限。不信么?Windows下的最强文件管理器totalcmd的操作方式跟它可是基本类似噢,虽然我不清楚它们之间的是否很有渊源,但mc提供甚至更加灵活的配置方式,下边先看一份双列显示的截图:
它默认用到了F1-F10键位,类似totalcmd的键位分别为F3(查看)、F4(编辑)、F5(复制)、F6(移动)、F7(新建目录)、F8(删除)和F1(帮助),另外的几个键位为F2(功能菜单,很强大)、F9(下拉工具栏菜单)和F10(退出)。遗憾的是,mc的键位不能重新自定义。
按F9后在Option(选项)菜单中可以自定义很多设置,比如采用双列还是双行显示,或者采用单列显示;文件排序方式等等。因为mc的功能实在太多,它的manual也很长,这篇文章也说不完整,只挑一些有意思的应用。
mc的动作基本是对当前选中或着tag(标记)过的文件目录进行操作,它的组合键位设置跟GNU Emacs极其类似,如果熟悉Emacs则很容易上手,比如
C-x o
更改属性,C-x !
执行自定义的一些命令,M-!
对当前光标处的文件执行命令,C-x s
创建符号链接,C-x h
把当前目录添加到hotlist(这个类似totalcmd的favorites),C-\
调用hotlist(类似totalcmd的C-d),M-?
弹出搜索框C-x i
在另一个窗口显示当前项目的属性信息C-x q
在另一个窗口预览当前项目(这个类似totalcmd的quickview, C-q)C-t
标记当前的文件(这个类似totalcmd中的空格选中的作用)C-s
在当前目录检索文件名(totalcmd也有这样的快速定位功能)M-y
返回上一界面M-u
返回下一界面M-<;
移动到列表开头M->
移动到列表结尾C-x j
查看后台工作进程- … 还有我不常用的了,以及我常用
F9
呼出菜单的操作,比如sort :-P
最后一个强力功能键是 C-o
,它让你可以在terminal输出和mc界面之间进行快速切换,你可以理解为是mini-buffer的全屏功能 :)
得一提的是 mini-buffer 里边输入命令的话是可以自动补全的,在控制台模式下直接M-Tab
就行,而X环境下这个键位被window switcher占用了,只能用 C-M-i
或者 Esc-Tab
补全命令了。
F2
弹出菜单是可以高度定制的,它的配置文件在 ~/.mc/menu
,可以参考 /usr/share/mc/mc.menu
这个文件,下边是一个示例:
最后应该提及的是,mc的F3
(View)和F4
(Edit)以及Enter
的默认动作都是可以自己在文件 ~/.mc/bindings
中绑定的,并且支持正则表达式,默认的动作绑定在 /usr/share/mc/mc.ext
中。mc是自带 viewer 和 editor 的,能还颇强大,而你可以自己替换它的view和edit,因为音频视频总不能用mcviewer打开视听吧?比如我对一些常见文件类型的操作(注意格式要求是Open, View前面应该空格或者Tab,并且等号两边不能有空格,详细内容请见manual。
另外跟totalcmd类似的是,mc同样内置ftp功能,但是由于它的F3和F4功能更为强大,因此使用的时候也远比totalcmd更顺手。如果是要远程编辑一个ftp上的脚本,那么跟你编辑本地的文件感觉不出丝毫差异,就像挂载上了一个新的文件系统(ftpfs)一样。更绝的是它除了支持ftpfs,还支持tarfs、sshfs、nfs、smbfs等等(顾名思义 :) )。访问方式是这样的,如果你要进入一个ftp,用cd命令就行了,ftp用下边的格式表示:
cd /#ftp:[!][user[:pass]@]machine[:port][remote-dir]
而tar文件,你也可以通过类似的方式,或者干脆直接在文件上enter(回车)就可以进入(因为对 .tar, tar.gz, .tgz 等文件的默认enter操作已经在 mc.ext 中写好了),类似totalcmd下边直接访问压缩文件的样子,是不是非常方便呢?