2010年12月7日星期二

Vim中的^M

今天在Ubuntu下编译安装Xen,中途下载了一个给git设置代理的脚本,执行时出现下面的错误:
tux@Neverland:~/bin$ ./gitproxy
bash: ./gitproxy: /bin/sh^M: bad interpreter: No such file or directory
看起来是行末有^M,是DOS格式的文件。但是Vim不显示行末的^M,让我没注意到是DOS格式的。如果用vim -u NONE来打开文件(不读取任何vimrc文件),就会显示^M。我想一定是我vimrc里面的某行设置,导致vim不显示^M的。我到Freenode的#vim频道咨询,得到了答案:
<Fossilet> I want to find which init line causes ffs to be set.
<mgedmin> -u NONE tells vim not to look for vimrc files
<mgedmin> which line? no line
<mgedmin> I repeat myself: the mere presence of a vimrc turns off 'compatible' which in turn sets 'fileformats' to "unix,dos"
就是说只要有vimrc存在,就会把兼容模式关闭。这种情况下,在Linux平台fileformats是unix和dos,vim会自动检测unix和dos格式的文件。

我是希望Vim能够在文件中显示^M的,这样就很明显,不用运行了脚本才知道了。可以用set fileformats="unix"来关闭对DOS格式文件的自动检测,这样^M就原样显示了。不过没有必要的,如果打开的是DOS格式文件,Vim窗口最下面的状态栏会显示[DOS]的 。

没有评论:

发表评论