Vim编辑器简介及快速上手

Vim编辑器


Vim是Vi的增强版,后者工作在其他大部分UNIX系统中。在很多并不正式的场合中,Vim和Vi是一回事。这个编辑器是所有UNIX和Linux系统上的标准软件,因此对于系统管理员也有非常重要的意义。本节主要介绍Vim的基本使用,包括编辑、保存、搜索、替换和针对程序员的配置3个部分。最后以一张命令表结束本节的内容。更为详细的Vim使用请参考Vim手册。


编辑和保存文件


要编辑一个文件,可以在命令行下输入vim file。如果file不存在,那么Vim会自动新建一个名为file的文件。如果使用不带任何参数的vim命令,那么就需要在保存的时候指定文件名。同时,Vim会认为这个人应该是第一次使用这个软件,从而给出一些版本和帮助信息。
~
~
~                              VIM - Vi IMproved
~
~                                 版本 7.4.52
~                           维护人 Bram Moolenaar 等
~              修改者 pkg-vim-maintainers@lists.alioth.debian.org
~                       Vim 是可自由分发的开放源代码软件
~
~                            帮助乌干达的可怜儿童!
~                输入  :help iccf<Enter>       查看说明
~
~                输入  :q<Enter>               退出
~                输入  :help<Enter>  或  <F1>  查看在线帮助
~                输入  :help version7<Enter>   查看版本信息
~
~
~
~
~
                                                              0,0-1        全部


Vim分为插入和命令两种模式。在插入模式下可以输入字符,命令模式下则执行除了输入字符之外的所有操作,包括保存、搜索、移动光标等。不要对此感到惊奇,Vim的设计哲学就是让程序员在主键盘区完成所有工作。

启动Vim时惠东出于命令模式。按I键可以进入插入模式,这个命令用于在当前光标所在处插入字符。Vim会在左下角提示用户此时所处的模式。请确保没有开启键盘上的Caps Lock(大写锁定),因为Vim的命令是严格区分大小写的!现在尝试着输入下面一些字符,如果输错了,可以简单的使用退格键删除。

Monday
Tuesday
Thursday
Friday
Saturday
Sunday

按Esc键回到命令模式,此时左下角的“——插入——”提示消失,告诉用户正处于命令模式下。使用H、J、K、L这4个键移动光标,分别代表向左、向上、向下、向右。

提示:用户当然也可以使用键盘上的方向键移动光标,但是它们实在太远,对于快速编辑没有任何好处,也不符合Vim的设计理念。

在刚才编辑的这个文件中,发现少了星期三(Wednesday),移动光标至Tuesday所在的行,按o键(小写)在下方插入一行,并且自动进入插入模式。输入Wednesday并按下ESC键回到命令模式。

提示:读者也可以将光标定位到Thursday这一行,然后按O键(注意是大写)在上方插入一行。

完成文本编辑后,需要保存这个文件。为此需要使“:”命令在底部打开一个命令行,此时光标闪烁,等待用户输入命令。使用“w days”命令将该文件以文件名days保存在当前目录下。如果读者在最初运行Vim时就指定了文件名,那么这里就只要使用w就可以了,按下Enter键使命令生效。最后使用“:q”退出Vim。

提示:组合使用“:wq”可以保存文件并同时退出Vim。

如果用户在没有保存修改的情况下就使用命令":q",那么Vim会拒绝退出,并在底部显示一行提示信息:
E37: 已修改但尚未保存 (可用 ! 强制执行)  

如果确定要放弃修改,使用“:q!”命令退出Vim,所做的修改将全部失效。


搜索字符串

/string用于搜索一个字符串。例如要找到上文提到的文件中的Wednesday,那么就使用下面这条命令:
/Wednesday

提示:在输入“/”后,Vim底部会出现一个命令行,就像用户输入“:”后一样。

使用n跳转到下一个出现Wednesday的地方。因为这里只有一个Wednesday,Vim会提示:
已查找到文件结尾,再从开头继续查找 

这意味着Vim的搜索是可以循环进行的。尽管如此,为了不让Vim走的太远,可以指定究竟是向前(forward)还是向后(backward)查找。向前查找的命令是“/”,与之相对的向后查找的命令则是“?”。

提示:把forward和backward这两个词译成中文后难免产生歧义。在英语看来,“向前”指的是“朝向文件尾”,而“向后”指的是“朝向文件头”。

有的时候用户可能并不关心查找字符串的大小写,可以使用下面这条命令让Vim忽略大小写的区别。
:set ignorecase
这样搜索Wednesday和wednesday就没有任何区别了。要重新开启大小写敏感,只要简单的使用下面这条命令即可。
:set noignorecase


替换字符串

替换命令略微复杂一些,下面给出了替换命令的完整语法:
:[range]s/pattern/string/[c,e,g,i]

这条命令将pattern所代表的字符串替换为string。开头的range用于指定替换作用的范围,如“1,4”表示从第1行到第4行,“1,$”表示从第1行到最后一行,也就是全文。全文也可以使用“%”来表示。

最后的方括号内的字符是可选选项,每个选项的含义如表所示,用户可以组合使用各个选项,例如cgi表示整行替换,不区分大小写并且在每次替换前要求用户确认。下表给出了各标志及其含义。

----------------------------------------------------
标志    |                  含义
----------------------------------------------------
c       | 每次替换前询问
e       | 不显示错误信息
g       | 替换一行中的所有匹配项(这个选项通常需要使用)
i       | 不区分大小写
----------------------------------------------------

和替换有关的一个小技巧是清除文本文件中的“^M”字符。Linux程序员经常会碰到来自Windows环境的源代码文件。由于Windows环境中对换行符的表述和Linux环境不太一样,因此每行的末尾常常会出现多余的“^M”符号——这些特殊符号对于程序编译器和解释器而言是没有影响的。但是在进行Shell编程处理的时候却会出现问题。为此,可以使用下面的命令删除这些特殊字符。

:%s/^M$//g

提示:^M应该使用CTRL-V CTRL-M输入。其中“^M$” 是正则表达式,表示“行末所有的^M字符”。



针对程序员的配置

语法高亮是所有程序编辑器必备的功能。这个功能可以让程序看起来赏心悦目。更重要的是,它可以提高效率,并且有效减少出错的几率。要在Vim中打开语法高亮功能,只需要使用下面这个命令。Vim会通过文件的扩展名自动决定哪些是关键字。

:syntax on

另一个程序员经常使用的功能是自动缩进。

:set autoindent


用户可以为一个Tab键缩进设置空格数,在默认情况下,这个值是8(也就是一个制表符代表8个空格)。程序员应该要习惯Linux下的缩进风格,如果非要改变不可,可以通过set shiftwidth命令,例如下面这条命令将一个Tab键缩进设置为4空格。

:set shiftwidth=4

通常来说,这几个设置对用普通程序员而言已经足够了。为了避免每次启动Vim都要输入输入这些命令,可以把它们写在Vim的配置文件中(注意,写入的时候不要包含前面的冒号“:”)。Vim的配置文件叫做vimrc,通常位于/etc/vim目录下。修改这个配置文件需要root权限,但是如果没有特殊需要的话,不要那么做。用户可以在自己的主目录下新建一个名为“.vimrc”的文件,然后把配置信息写在里面。注意,这个文件名前面的点号“.”表示这是一个隐藏文件。

提示:通常用于用户个性化设置的配置文件都是隐藏文件,且保存在用户主目录下。

完成所有这些设置后,Vim就可以用来写程序了。输入下面这个程序并保存为summary.c,看看Vim能够提供的效果。


Vim的常用命令

Vim的命令实在太多了,没有办法每一个都给出示例。为此,本节总结了一张命令表(不全),按照功能划分,便于查找。

                    模式切换
------------------------------------------------------
命令            |                操作
------------------------------------------------------
a                 |   在光标后插入
i                  |   在光标所在位置插入
o                 |   在光标所在位置的下一行插入
Esc            |   进入命令模式
:               |   进入行命令模式
------------------------------------------------------

                    光标移动
------------------------------------------------------
命令           |               操作
------------------------------------------------------
h                |    光标向左移动一格
l                 |    光标向右移动一格
j                 |    光标向下移动一格
k                |    光标向上移动一格
^                |    移动光标到行首
$               |    移动光标到行尾
G              |    移动光标到文件尾
Gg           |    移动光标到文件头
W            |    移动光标到下一个单词
B             |    移动光标到前一个单词
Ctrl+f      |    向前(朝文件尾)翻动一页
Ctrl+b     |    向后(朝文件头)翻动一页
------------------------------------------------------

提示:在移动光标的时候,可以在命令前加上数字,表示重复多少次移动。例如5w表示将光标向前(朝文件尾)移动5个单词。

                 删除、复制和粘贴
------------------------------------------------------------
命令    |                      操作
------------------------------------------------------------
x          |   删除光标所在位置的字符
dd       |   删除光标所在的行
D        |   删除光标所在位置到行尾之间的所有字符
d        |   普遍意义上的删除命令,和移动命令配合使用。例如dw
          |   表示删除光标所在位置到下一个单词词头之间的所有字符
yy       |   复制光标所在的行
y        |   普遍意义上的复制命令,和移动命令配合使用。例如yw
          |   表示复制光标所在位置到下一个单词词头之间的所有字符
P       |   在光标所在位置粘贴最近复制/删除的内容
-------------------------------------------------------------

                  撤销和重做
---------------------------------------------------------
命令       |                  操作
---------------------------------------------------------
u            |    撤销一次操作
Ctrl+R  |    重做被撤销的操作
---------------------------------------------------------

                 搜索和替换
------------------------------------------------------------------------------
命令                     |                 操作
-----------------------------------------------------------------------------
:/string                 |  向前(朝文件尾)搜索字符串string
:?string                |  向后(朝文件头)搜索字符串string
:s/pattern/string |  将pattern所代表的字符串替换为string
----------------------------------------------------------------------------

                 保存和退出
-----------------------------------------------------------------------------------
命令                    |                    操作
-----------------------------------------------------------------------------------
:w                       |     保存文件
:w filename      |     另存为filename
:q                        |     退出Vim
:q!                       |     强行退出Vim,用于放弃保存修改的情况
----------------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值