Vim的一个bug


  今天用vi编辑服务器上的一个文件,当我x的时候,提示文件是只读文件?ls看了一下权限,owner、group、读写权限都没问题,我chmod这个文件为777,vi打开还是不能编辑!

  然后请教了师兄,也没遇到过这个问题,周围的同事也不是很熟悉,奇怪!Linux下文件的权限不就是这些吗?我是owner,并且文件是可写的,但用vi却无法编辑,尝试echo $str >> file,好使。

  问题看来出在vi上面,我知道的可能影响权限的,除了上面的就是set-user-id和set-group-id以及stick-bit,而vim可执行文件的权限位是-rwxr-xr-x,排除这些可能!考虑到加密,也排除了,加密的话,我压根不能打开,或者即便打开也是乱码,可里面的代码是可读的。

  排除这些可能,我想可能是文件编码的问题,因为我的gentoo和服务器的编码不用,我的是utf-8,服务器是gbk,但其它文件都正常读写。用firefox打开文件,自动识别为big5编码,其中的汉字全是乱码,然后用gbk,正常了,只有一处是乱码。

  我的vi配置是支持gbk和cp936这些常用编码,并且进入文件的时候会自动识别并转换编码:

  let &termencoding=&encoding
  set fileencodings=utf-8,gbk,ucs-bom,cp936

  用iconv从gbk转换到utf8时,发现那处乱码没法通过,问题应该就是这里。

  总结:问题可能出在vim,当一个文件有多种编码字符,vim在识别并转换编码的时候遇到问题,可能就不允许修改文件了,甚至是root,这个bug需要进一步测试。

相关内容