分类: LINUX
2008-12-31 13:58:38
Linux的vi编辑器显示混乱的问题
Vi是unix世界中最通用的全屏编辑器,Linux中用的是vi的加强版vim,vim同vi完全兼容,vi就是”visual interface”的缩写。它可以执行输出、删除、查找、替换、块操作等众多文件操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。[1]
笔者在使用vi的时候,忽然遇到了一个问题:vi编辑器显示混乱,如图1所示。
图1 vi编辑器显示混乱
不管输入什么字符都不显示或者不显示在一行,而且本来该在右下角显示的光标位置的状态行在任何操作和输入后都会跨行非覆盖显示,造成了显示的严重混乱。虽然显示混乱了,但实际的操作还是被正确执行,保存退出再查看刚才编辑的文件时会看到内容是正确的。
当稍微改变窗口的大小时,vi编辑器显示又回归正常,如图2所示。
图2 vi编辑器正确显示
这样不是解决问题的办法,找到原因才是根本。首先想到是不是vim的设置有问题呢?
笔者在用户家目录下用.vimrc文件对vim进行了设置:
set nocompatible
set bs=2
set columns=120
set
background=dark
set tabstop=8
set wrapmargin=8
syntax on
set nobk
set cindent
set shiftwidth=8
set ruler
set noexpandtab
set number
分析一下以上哪些设置可能造成该问题。各个设置的作用在此不一一介绍,其中set columns=120用来设置窗口的列大小,在文献[2]中对此的说明是:Normally this is set by the terminal initialization and does not have to be set by hand. When Vim is running in the GUI or in a resizable window, setting this option will cause the window size to be changed. When you only want to use the size for the GUI, put the command in your |gvimrc| file. When you set this option and Vim is unable to change the physical number of columns of the display, the display may be messed up. 可见此设置会造成vi显示的混乱。在.vimrc文件中将此设置去掉,vi显示混乱的问题解决了。同样在文献[2]中还提到对lines的设置也可能造成显示的混乱,所以不要轻易设置。Columns和lines的默认值分别是80和24,所以在设置文件里将两者设置成默认值后不会出现vi显示混乱的问题。
至此,找到了vi这种显示混乱的原因,对症下药,问题也得到了解决。
参考文献
[1] http://net.zdnet.com.cn/network_security_zone/2008/0519/869835.shtml, “Linux操作系统下VI编辑器常用命令介绍”;