玩转VIM编辑器关于vim的一些基础知识

关于vi-vim-关于vim的一些基础知识

文本编辑器有很多,图形模式下有geditkwrite等编辑器,文本模式下的编辑器有vivimvi的增强版本)和nanovivimLinux系统中最常用的编辑器。

 

直到Emacs的出现(1984年以后),vi几乎是所有“黑客”所使用的标准UNIX编辑器。

 

vi编辑器是Unix的世界中一个相当强大的可视化编辑器,vi编辑器是所有Linux系统的标准编辑器,用于编辑任何ASCII文本,对于编辑源程序尤其有用。它功能非常强大,通过使用vi编辑器,可以对文本进行创建、查找、替换、删除、复制和粘贴等操作。

有人曾这样的说过在世界上有三种人:一种是使用Vi的,另一种是使用是Emacs的,剩下的是第三种人。

 

Vim(就是Vi Improved)是从 vi 发展出来的一个文本编辑器, Vi的改进版本。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

 

工作模式

vi编辑器有3种基本工作模式,分别是命令模式、插入模式和可视模式。在使用时,一般将可视模式也算入命令行模式。各模式的功能区分如下。

命令行模式

控制屏幕光标的移动,字符、字或行的删除,移动、复制某区域及进入插入模式,或者到末行模式。

插入模式

只有在插入模式下才可以做文本输入,按“ESC”键可回到命令行模式。

可视模式

将文件保存或退出vi编辑器,也可以设置编辑环境,如寻找字符串、列出行号等

 

为什么使用Vim

跨平台性

无论在WindowsLinux, 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编辑器

Vivisual editor可视化编辑器的简写。

使用vi打开文件

1.    直接打开: vim filename

2.    先打开vim,然后输入:e filename重新装载。

 

      你可以使用vi编辑任何文本,vi将要编辑的文件复制到缓冲区,显示缓冲区并且让你增加、删除与更改文本,存储编辑的结果时,vi则把缓冲区中的内容写回到永久的文件中,替换同名的旧文件。

      PS:我们永远是在缓冲区里的文件副本上作业,除非存储缓冲区,否则编辑结果不会影响原始的文件。

 

      如果文件名有空格,需要在前面加上反斜线(\)

 

保存与离开文件

保存文件

使用:w :u 都可以保存文件,其中w代表writeu代表update的含义。

如果只是输入上述命令,则直接保存文件,当然也可以使用:w anotherFilename来另存为另一个新的文件。

离开文件

: x   :wq  ZZ  保存文件并且退出

:q! :qa 退出但不保存文件。

Vi命令的特点

1.    字母大小写有区别

2.    在输入时不会显示在屏幕上

3.    不需要在命令后加上Enter键。

底端的命令

1./或者?    :用于后向或者 前向搜索命令;

2.“:”      :冒号用于开始所有的ex命令,ex命令是ex行编辑器使用的命令,它是底层的编辑器,vi只是其可视化的模式而已。

光标的移动

clip_image001

结束而不保存编辑结果

当你想要消除所有的编辑结果,回到原来的文件时,可以采用命令: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是西班牙语的。

原文地址:https://www.cnblogs.com/shaoguangleo/p/2806033.html