标题起得真纠结,其实就是用vim对比两段文本,地球人都知道用vim来对比文本文件不同很简单,用“vimdiff”来打开就行了, 我的问题是,从剪贴板分两次粘贴一段文本,直接对比一下,不想保存为文件再打开对比。


比如,smplayer的“音频”菜单,“滤镜”里有个选项是”音量正常化”,效果是让声音大声一点。我要找出这个选项对应的mplayer的参数 是什么,一个方法是去啃mplayer那个超长的manpage。另一个方法是,打开smplayer的“选项”菜单,“查看日志”的”Mplayer” 选项(快捷键Ctrl+M),这样就看到smplayer调用mplayer所用的命令行参数了。
/usr/bin/mplayer -noquiet -nofs -nomouseinput -sub-fuzziness 1 -identify -slave -vo xv -ao oss -nokeepaspect -framedrop -nodr -double -input nodefault-bindings:conf=/dev/null -stop-xscreensaver -wid 65011727 -monitorpixelaspect 1 -ass -embeddedfonts -ass-line-spacing 0 -ass-font-scale 1 -ass-force-style PlayResX=512,PlayResY=320,Name=Default,Fontname=WenQuanYi Micro Hei,Fontsize=20,PrimaryColour=&H00ffffff,BackColour=&H00000000,OutlineColour=&H00000000,Bold=0,Italic=0,Alignment=2,BorderStyle=1,Outline=1,Shadow=0,MarginL=20,MarginR=20,MarginV=40 -fontconfig -font WenQuanYi Micro Hei -subfont-autoscale 0 -subfont-osd-scale 20 -subfont-text-scale 20 -subcp CP936 -vid 0 -subpos 100 -volume 100 -nocache -ss 744 -osdlevel 0 -vf-add screenshot -slices -channels 2 -af volnorm=1,scaletempo,equalizer=0:0:0:0:0:0:0:0:0:0 -softvol -softvol-max 110 -overlapsub /media/Playground/Movie/[电视][连续剧]/生活大爆炸/[生活大爆炸.第三季].The.Big.Bang.Theory.S03E19.The.Wheaton.Recurrence.720p.HDTV.x264-CTU.mkv
再关闭这个”音量正常化”选项,再看一下命令行参数,对比两次的不同就知道这个选项所相关的参数了。
/usr/bin/mplayer -noquiet -nofs -nomouseinput -sub-fuzziness 1 -identify -slave -vo xv -ao oss -nokeepaspect -framedrop -nodr -double -input nodefault-bindings:conf=/dev/null -stop-xscreensaver -wid 65011727 -monitorpixelaspect 1 -ass -embeddedfonts -ass-line-spacing 0 -ass-font-scale 1 -ass-force-style PlayResX=512,PlayResY=320,Name=Default,Fontname=WenQuanYi Micro Hei,Fontsize=20,PrimaryColour=&H00ffffff,BackColour=&H00000000,OutlineColour=&H00000000,Bold=0,Italic=0,Alignment=2,BorderStyle=1,Outline=1,Shadow=0,MarginL=20,MarginR=20,MarginV=40 -fontconfig -font WenQuanYi Micro Hei -subfont-autoscale 0 -subfont-osd-scale 20 -subfont-text-scale 20 -subcp CP936 -vid 0 -subpos 100 -volume 100 -nocache -ss 93 -osdlevel 0 -vf-add screenshot -slices -channels 2 -af scaletempo,equalizer=0:0:0:0:0:0:0:0:0:0 -softvol -softvol-max 110 -overlapsub /media/Playground/Movie/[电视][连续剧]/生活大爆炸/[生活大爆炸.第三季].The.Big.Bang.Theory.S03E19.The.Wheaton.Recurrence.720p.HDTV.x264-CTU.mkv
从这么长的命令行看出不同来还真考点眼力,既然vim有对比功能,就让vim来搞定,保护眼睛。


打开vim,插入模式下按“Shift+Insert”粘贴第一段,再运行ex命令“:new”分割新建一个窗口来粘贴第二段。经过看手册,在两个 窗口都运行“:diffthis”就能对比不同了,不过切换窗口再运行命令还是比较麻烦,再看手册,还发现个“:windo”命令,即对当前标签的所有窗 口运行命令,vim还真想的真周到,粘贴好后直接运行
:windo diffthis
就行了,不过还有不爽,就是diff时取消了自动换行(即“:set nowrap”),看时需要右翻页,要把它整回来,而ex命令可以用“|”来连接运行的,所以用
:windo diffthis | set warp
一步搞定。

可以看到,与”音量正常化”这个选项相关参数是“ -af volnorm=1”,运行
mplayer -af volnorm=1 movie_file.avi
来确认一下,确实是这个无误,编辑“~/.mplayer/config”,追加一行
af=volnorm=1
即可让mplayer默认启用这个参数,不用每次都在命令行里输入。