玩转VIM编辑器-关于vim的一些基础知识
关于vi-vim-关于vim的一些基础知识
文本编辑器有很多,图形模式下有gedit、kwrite等编辑器,文本模式下的编辑器有vi、vim(vi的增强版本)和nano。vi和vim是Linux系统中最常用的编辑器。
直到Emacs的出现(1984年以后),vi几乎是所有“黑客”所使用的标准UNIX编辑器。
vi编辑器是Unix的世界中一个相当强大的可视化编辑器,vi编辑器是所有Linux系统的标准编辑器,用于编辑任何ASCII文本,对于编辑源程序尤其有用。它功能非常强大,通过使用vi编辑器,可以对文本进行创建、查找、替换、删除、复制和粘贴等操作。
有人曾这样的说过在世界上有三种人:一种是使用Vi的,另一种是使用是Emacs的,剩下的是第三种人。
Vim(就是Vi Improved)是从 vi 发展出来的一个文本编辑器, 是Vi的改进版本。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
工作模式
vi编辑器有3种基本工作模式,分别是命令模式、插入模式和可视模式。在使用时,一般将可视模式也算入命令行模式。各模式的功能区分如下。
命令行模式
控制屏幕光标的移动,字符、字或行的删除,移动、复制某区域及进入插入模式,或者到末行模式。
插入模式
只有在插入模式下才可以做文本输入,按“ESC”键可回到命令行模式。
可视模式
将文件保存或退出vi编辑器,也可以设置编辑环境,如寻找字符串、列出行号等
为什么使用Vim
跨平台性
无论在Windows,Linux, Solaris, FreeBSD等等操作系统上,以及一些名都 没有听过的系统上,你都可以找到它。这样就保证了你的学习投资的保值性,就拿UltraEdit做对比吧,即使你在UltraEdit上学会灵活运用许多功能,到了Linux上,你在这部分学习投资就没有价值了,你可能需要找其他称手的编辑器,然后再进行学习一些功能。特别在一些古老的大型机上的系统上,即使没有Vim,一般来说,还有Vi的,这样一般简单的操作命令还是可复用的。如果你确定你一直只呆在Windows上可忽略这一点。
开源免费
Vim是开源软件,意味着你可以自由使用,修改,查看它的代码。对于自由查看,修改程序代的保证,有总比没有好。对于盗版软件,你有能力还是不要使用的好。正是这一特性,也是促使我放弃UE,投向Vim的重要原因。如果你对于使用盗版软件蛮不在乎,或你有财力购买正版软件,也可忽视这一条。
支持多种编程语言
Vim是程序员的编辑器,当然对程序员是非常友好的。它对 C,C++, Python, Perl, Tcl, Ruby, PHP等等,以及一大堆我没有听过见过的语言,以语法着色,代码缩进等基本支持,还有一些其他特性。比如,我在编辑XML时,它能提供自动封闭标记的支持。因此如果你有对多种格式的文本编辑需要,那么你就有了一个编辑的大平台,不需要再装一大堆针对某个格式特定的编辑器了。正如跨平台性一样,你只要一次投资,多次回报。如果你专注于某一格式文件的工作,那这一点同样对于你来说是没有用的。
高效地编辑
Vim的操作方式相对于Windows上呆久了的人来说,是蛮奇特的,这一点我深有体会。但是正如很多人讲的那样,你掌握了其操作后,发现它会大大增进你的编辑速度。你的双手根本不用离开键盘,就完成了许多事情,可以让鼠标歇会儿了。如果你特别钟爱鼠标,或只偶尔打打字,那么我说的这点,同样对你没有用。
灵活的设置
vim可自定义的地方太多了,你可以自定义键盘映射,语法着色,缩进,格式等等。所以你在网上可以看到许多人贴着自己的vimrc配置文件,配置自己喜欢的作业环境。如果你需要开盒即用的工具,那么这点对你的吸引力就不大了。
几种文本编辑器
l 行编辑器 :ed 或 ex
l 全屏编辑器 :vi 或 emacs 以及衍生的xemacs
l 有趣的编辑器:sam 与 acme编辑器
Vi:visual editor可视化编辑器的简写。
使用vi打开文件
1. 直接打开: vim filename
2. 先打开vim,然后输入:e filename重新装载。
你可以使用vi编辑任何文本,vi将要编辑的文件复制到缓冲区,显示缓冲区并且让你增加、删除与更改文本,存储编辑的结果时,vi则把缓冲区中的内容写回到永久的文件中,替换同名的旧文件。
PS:我们永远是在缓冲区里的文件副本上作业,除非存储缓冲区,否则编辑结果不会影响原始的文件。
如果文件名有空格,需要在前面加上反斜线(\)。
保存与离开文件
保存文件
使用:w 和 :u 都可以保存文件,其中w代表write,u代表update的含义。
如果只是输入上述命令,则直接保存文件,当然也可以使用:w anotherFilename来另存为另一个新的文件。
离开文件
: x :wq ZZ 保存文件并且退出
:q! :qa 退出但不保存文件。
Vi命令的特点
1. 字母大小写有区别
2. 在输入时不会显示在屏幕上
3. 不需要在命令后加上Enter键。
底端的命令
1.“/或者?” :用于后向或者 前向搜索命令;
2.“:” :冒号用于开始所有的ex命令,ex命令是ex行编辑器使用的命令,它是底层的编辑器,vi只是其可视化的模式而已。
光标的移动
结束而不保存编辑结果
当你想要消除所有的编辑结果,回到原来的文件时,可以采用命令:e!来恢复上一次存储的文件内容,这样可以从头再来;
或者:q!消除所有的编辑结果,并且直接离开vi。
保存文件时发生的问题
1. 尝试保存文件已存在,可以输入:w! file用来覆盖现有的文件,或者:w newfile将编辑的结果写入新的文件;
2. 得到没有写入的权限,可以使用:w newfile将缓冲区写入一个新文件;
3. 得到文件系统已满的消息,可以输入:!rm junkfile来删除一个不需要的打文件,空出一些空间(在冒号后加上感叹号,然后就可以执行shell命令),或者输入:!df看看其他文件系统有没有空间,如果有,先放入其他文件系统,用:w pathname来写入你的文件。
4. 系统进入开放模式并且显示文件系统已满的消息,可以输入:!ls /tmp来查看有无可以移除的文件,以腾出一些空间。如果有的话,可以先创建一个临时的unix shell,以便移除,直接输入:sh可以打开一个新的暂时的shell,移除后,可以输入exit返回到vi,或者使用CTRL+Z来将vi暂停,放到后端,使用fg既可以回到vi。
5. 尝试写入文件,却得到磁盘限额已满的消息,可以实时:pre(:preserve)的缩写,强迫系统保存你的缓冲区。
Vim配置文件
1. 在使用vim编辑文件的时候,对vim所作的配置全部只是对当前的会话有效,关闭文件后,配置不再有效;
2. 如果希望对vim的配置永久有效,可以尝试在~/.vimrc中,写入自己的配置文件,也可以将该文件拷贝至不同的Linux 发行版。
对于目前个人账户而言,修改文件为:
操作系统 | 文件位置 |
UNIX/Linux | $HOME/.vimrc |
Windows | $HOME/_vimrc |
对于系统管理员而言,如果想修改对所有的用户都起作用的配置,可以在如下文件中进行修改。
操作系统 | 文件位置 |
UNIX/Linux | $VIM/.vimrc |
Windows | $ VIM /_vimrc |
Vim版本
可以在文件中输入:version来查看vim的详细版本信息,并且会有vim包的编译信息,例如:
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -Wall -g -O2 -I/usr/include/python2.6 -pthread
Linking: gcc -Wl,--as-needed -o vim -lncurses -lselinux -lacl -lgpm -L/usr/lib/python2.6/config -lpython2.6 -lutil -lm -
Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
Vim的安装
Vim一般是默认安装到所有的Unix发行版的,但是如果你的vim不是最新版本,可以在www.vim.org上下载最新的安装包,进行安装。
Vim的帮助信息
l 可以输入:help查看vim提供的内建帮助文档;
l 可以使用:helpgrep pattern:使用模式匹配来查找帮助信息,可以使用:cn来查找下一个匹配的模式;
l 可以使用:help ‘option’来查找命令:set option的意思;
l 可以使用:help CTRL+X来查找CTRL+X命令;
l 可以使用:help :x来查找:x命令的含义;
l 可以使用:help <CTRL+D>来自动补全要查找的命令
使用vimtutor来练习
在安装vim的时候都会附加地安装上vimtutor,这个程序是用来一步一步地学习vim编辑器的。
可以使用vimtutor直接打开教程,当然也可以通过加上后缀来打开其他语言的教程,比如vimtutor fr是法语的,vimtutor es是西班牙语的。