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,在冒号后面输入保存、退出等命令,这些命令共有四种:
图1-1,VI编辑器的一般模式:打开文件时
图1-2,VI编辑器的一般模式:保存或者退出
下面是VI编辑器文本保存或退出的命令:
保存或退出命令 | 说明 |
w | 将编辑的文本存储 |
q | 离开VI编辑器 |
q! | 曾修改过文本,但是不想保存,使用该命令强制离开VI编辑器 |
wq | 存储文本并离开VI编辑器 |
(2、)插入模式
在一般模式下按大写字母 I、或 o、a等字母都可以进入编辑模式,在此模式下,VI将用户的输入插入到当前光标位置,修改暂时保存到缓冲区,按 "ESC" 键则从编辑模式退回到一般模式,图1-3显示VI编辑器的编辑模式,VI编辑器的最后一行显示 INSERT,这表示能插入新字符。
图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 | 粘贴 |
u | 取消操作 |
cw | 更改光标所在位置的一个字 |
#cw | 更改光标所在位置的#个字 |
X | (大写X),删除光标前面的字符 |
x | 删除光标后面的字符 |
ESC | 从输入状态退至命令状态 |