Linux VI跟VIM基本命令学习总结

Linux VI和VIM基本命令学习总结

 

VI编辑器

 

       VI编辑器是UNIX世界中最通用的全屏编辑器,Linux中用的是VI的加强版VIM,VIM同VI完全兼容。在Linux系统中,VI和VIM是完全等价的两条命令,都可以启动VI编辑器。

 

       VI编辑器可以执行输出,删除,查找,替换,块操作等众多文本操作,而且用户还可以根据自己的需求对其进行定制,这是其他编辑器程序所没有的。VI编辑器以命令的方式处理文本,尽管不如图形化处理方式直观,但它具有操作速度快、功能全面等有点,另外,VI不是一个排版程序,他不想Word和WPS那样可以对字体,格式,段落等其他属性进行编排,他只是一个文本编辑程序。VI和VIM的基本格式如下

 

 

vi [option] [filename...]
//或
vim [option] [filename...]

 

     其中,[option] 是选项,[filename]是需要编辑的一个或多个文件名。如果启动VI是没有执行文件名,则VI命令会自动产生一个无名的空文件。如果指定的[filename]文件不存在,则VI将创建一个名字为[filename]的新文件。启动VI后,消息行会显示文件的名称,文件中的行数和字数。消息行显示的信息随着所运行命令的不同而不同,如果文件中的任何一行上有一个波浪线(~),就说明没有足够的行来填满屏幕。注意VI并不锁住编辑的文件,因此多个用户可能同时编辑一个文件,最后保存的文件版本将被保留。下面是列出了VI命令选项及其说明:

选项 说明
-c command 在对文件进行编辑前,先执行command命令
-f filename 恢复文件filename
-R 以只读的方式编辑文件
+n file 编辑file文件,并将光标置于第n行
+ file 编辑file文件,并将光标置于最后一行
+/string file 编辑file文件,并将光标置于第一个保护string所表示的字符串的行

 

 

       输入VI命令打开VI编辑器后,VI编辑器的运行状态共有以下两种模式:

 

(1、)一般模式

      输入VI命令进入VI文本编辑的时候,就是一般模式了。该模式将用户的输入看做命令,这个模式允许用户移动光标,且允许搜索文本功能,图1-1就是用VI命令编辑器打开的文件的一般模式,此时,VI编辑器的最后一行是文件名、文件包含的字符数和字节数。退出VI编辑器、保存当前修改也是在一般模式中进行的,在一般模式下按冒号(:)图1-2,在冒号后面输入保存、退出等命令,这些命令共有四种:


Linux VI跟VIM基本命令学习总结
  图1-1,VI编辑器的一般模式:打开文件时


Linux VI跟VIM基本命令学习总结
 图1-2,VI编辑器的一般模式:保存或者退出

 

 

下面是VI编辑器文本保存或退出的命令:

保存或退出命令 说明
w 将编辑的文本存储
q 离开VI编辑器
q! 曾修改过文本,但是不想保存,使用该命令强制离开VI编辑器
wq 存储文本并离开VI编辑器

 

(2、)插入模式

     在一般模式下按大写字母 I、或 o、a等字母都可以进入编辑模式,在此模式下,VI将用户的输入插入到当前光标位置,修改暂时保存到缓冲区,按 "ESC" 键则从编辑模式退回到一般模式,图1-3显示VI编辑器的编辑模式,VI编辑器的最后一行显示 INSERT,这表示能插入新字符。


Linux VI跟VIM基本命令学习总结
 图1-3,VI编辑模式

 

 

 

      VI编辑器在编辑模式下编辑文件时存在两个关键技巧:移动光标到适当的位置和编辑文本。VI编辑器提供了丰富的移动光标命令,如下表所示,对于较短的文件,使用k、j、h、l进行上下左右的移动就可以满足需求。但是对于较长的文件,经常需要根据段落、句子、行数来移动光标。

命令 说明
h或(←) 将光标向左移动
j、加号(+)、Enter、(↓) 将光标向下移动
k、减号(-)、(↑) 将光标向上移动
l、(→) 将光标向右移动
} 将光标移动到当前段落的末尾
{ 将光标移动到当前段落的开头
) 将光标移动到当前句子的末尾
( 将光标移动到当前段落的开始
^ 移动到当前行的第一个非空字符
$ 移动到当前行末尾
:n 移动到行n


       编辑文件似乎不需要展开多解释,一般情况我们可以直接使用SSH连接工具,将需要修改的文件通过FTP工具直接下载到本地,通过记事本工具进行编辑。下面是一些VI编辑器经常用到的命令:

命令 说明
x 删除光标当前位置的字符
dd 删除光标当前所在整行文本
d$ 删除当前光标位置到该行结束的所有文本
dw 从当前光标位置向前删除单词
J 将下一行文本内容合并到本行行尾
a 在当前光标位置后附加内容
A 在当前光标所在位置的后面附加内容
#dd 删除从光标所在行数的#行
yw  复制光标所在位置的一个字
#yw 复制光标所在位置的#个字
yy 复制光标所在位置的一行
#yy  复制从光标所在行数的#行
p 粘贴
取消操作
cw 更改光标所在位置的一个字
#cw 更改光标所在位置的#个字
X (大写X),删除光标前面的字符
x 删除光标后面的字符
ESC 从输入状态退至命令状态