vim的介绍及使用
1、vim的概述1.1什么是 vim?vim(vi improved),是Linux系统中提供的编辑器,它是vi的增强版本,与vi向上兼容。通常,在LInux中用到的vi实际上是vim,即使输入命令时输入的是vi,但是使用的仍然是vim。1.2、vim的三种模式vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last li
目录
1、vim的概述
1.1什么是 vim?
vim(vi improved),是Linux系统中提供的编辑器,它是vi的增强版本,与vi向上兼容。通常,在LInux中用到的vi实际上是vim,即使输入命令时输入的是vi,但是使用的仍然是vim。
1.2、vim的三种模式
vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
1.2.1、命令模式
用户刚刚启动 vi/vim(例如输入vi命令),便进入了命令模式。
此状态下敲击键盘动作会被vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
首先说明Ctrl+g,在屏幕下方可以查看到当前光标所在位置,例如:按下Ctrl+g组合键后,在下方看到:
在命令模式移动光标可以使用下面的按键:
h 向左箭头键(←) Backspace | 光标向左移动一个字符。 这几个命令前面都可以添加数字,表示移动多个字符。 Backsapce在到达边界时可以上移一行,即具有跨行的功能。 h和←不具备跨行功能。 |
j 向下箭头键(↓) Ctrl+n + Enter | 光标向下移动。 这几个命令前面都可以添加数字,表示移动多行,除了Ctrl+n。 +和Enter将光标移到下一行的第一个非空白字符。 其他3个将光标向下移动一行,但是光标所在列不变。如果下一行比当前行光标所在位置还短,则下移到行尾。 |
k 向上箭头键(↑) Ctrl+p - | 光标向上移动。 这几个命令前面都可以添加数字,表示移动多行,除了Ctrl+P。 -是将光标移到上一行的第一个非空白字符 其他3个将光标向下移动一行,但是光标所在列不变。 |
l 向右箭头键(→) space | 光标向右移动一个字符。 这几个命令前面都可以添加数字,表示移动多个字符。 space在到达边界时可以下移一行,即具有跨行的功能。 l和→不具备跨行功能。 |
例如:向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键; 向左移动5个字符,可以使用“5h”或“5←”的组合按键; | |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
0 ^ | 0将光标移动到当前行的第1列,不管它是否为空白符。 ^将光标移动到当前行的第一个非空白字符。 该命令前面不能有数字。 |
$ | 将光标移到当前行的最后一个字符上(包括空白字符)。 |
n<space> | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离,即使会换行。不指定n时,默认为1个字符。 |
w | 移到下一个单词的首字符,在移动的路径上如果有逗号、句号会先跳到标点符号上。前面可以有数字。 |
W | 移到下一个非空白字符串的开头。 |
b | 和w命令方向相反 |
B | 和W命令相反 |
e | 和w命令类似,只不过是,e将光标移到单词结尾。 |
E | 和W命令类似,只不过是,E将光标移到字符串的结尾。 |
0 或功能键[Home] | 移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
( | 将光标移到上一个句子的开头。句子被定义为以” . “、"?”、“!'结尾,后随两个空格或一个换行的字符序列。 |
) | 将光标移到下一个句子的开头。句子被定义为以” . “、"?”、“!'结尾,后随两个空格或一个换行的字符序列。 |
H | 光标移动到这个屏幕的最上方那一行的第一个字符(包括空白字符)。 |
M | 光标移动到这个屏幕的中央那一行的第一个字符(包括空白字符)。 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符(包括空白字符)。 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊! (常用) |
命令模式下修改文本命令(有些命令可以有命令模式转换成输入模式)介绍:
i | 在光标前插入内容。 | ||||||||||||||
I | 在当前行的行首插入新增文本,行首是该行第一个非空白字符。 | ||||||||||||||
a | 在光标后附加内容。 | ||||||||||||||
A | 在当前行的行尾附加内容。 | ||||||||||||||
o | 在当前行的下面新增一行,并写入内容。 | ||||||||||||||
O | 在当前行的前面新增一行,并写入内容。 | ||||||||||||||
c C cc | c命令的一般使用方式是:c+光标移动命令+新文本+Esc键 删除多个字符或多个行,然后进入输入模式(即修改)。配合光标移动命令例如:2c←或者c2←则会删除光标(向左修改时不包括光标位,向右修改时包括光标位)左侧2个字符然后进入insert输入模式;c2↑删除当前行和当前行上面2行,接着进入输入模式; C命令删除从光标当前位置到该行的末尾,接着进入输入模式; cc和C类似,不过cc是删除当前一整行,并进入输入模式。 | ||||||||||||||
x | 从光标所在位置向右删除n个字符(包括光标处的字符)(n省略时,默认为1),但是不会由命令模式转化成输入模式。 | ||||||||||||||
X | 从光标所在位置向左删除n个字符(包括光标处的字符)(n省略时,默认为1),但是不会由命令模式转化成输入模式。 | ||||||||||||||
r | 取代当前光标所在处的字符,但是不会由命令模式转化成输入模式。r前面可以有数字,例如:3ra表示光标位及光标后2个字符都被取代成a。 | ||||||||||||||
R | 进入取代输入模式。 | ||||||||||||||
s | 删除当前光标所在处的字符,接着插入(替换)。若在s前面给出一个数字,例如:5s表示删除光标所在字符及其后的4个字符将被新输入的正文替换。 | ||||||||||||||
S | 删除当前光标所在行,接着插入。 | ||||||||||||||
nu | 撤消命令,撤销到上n步。(常用)(n省略时,默认为1)(常用) | ||||||||||||||
U | 把当前行恢复到编辑之前的状态,无论该行被编辑了多少次。 | ||||||||||||||
[Ctrl]+r | 重做上一个动作。(常用) | ||||||||||||||
. | 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用) | ||||||||||||||
d... | d与光标移动命令(以...表示)组合而成的命令表示从光标位置开始删到由光标移动限定的文本对象的末尾。向右删除,会删除当前光标所在位置,也就是包括当前光标所在处的字符;向左删除,不会删除当前光标所在位置,也就是不包括当前光标所在处的字符。
| ||||||||||||||
D | 从光标位置删除到当前行的末尾 | ||||||||||||||
yy | yy与光标移动命令组合而成的命令表示从当前位置复制到移动位置
| ||||||||||||||
p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!(常用) | ||||||||||||||
> < >> << | 文本行移动命令
| ||||||||||||||
! | 过滤命令的格式是:!+光标移动命令+Linux命令,最后按Enter键。其功能是把当前行和光标移动命令指定的行之间的所有行由给定的Linux命令进行加工,替换原来的那部分正文。 | ||||||||||||||
J | 文本行合并命令,把当前行与下面一行合并成一行。若在J之前给出一个数字,如nJ,则表示把当前行及其后的n-1行合并成一行。 | ||||||||||||||
: | 切换到底线命令模式,以在最底一行输入命令。 |
1.2.2、输入模式
在输入模式下,用户可以自由输入文本内容。
在输入模式下,可以使用下面的按键来快速移动光标:
Ctrl+u | 将光标快速回退到刚插入字符串的第一个字符,并删除该字符串,重新开始插入 |
Ctrl+w | 将光标移到最后插入单词的首字符,并删除该单词(单词是以标点符号或空白符号分开的字母数字串) |
Ctrl+t | 对当前光标所在行进行缩进。 |
1.2.3、底线命令模式
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。所有的底线命令都可以使用Enter或者中断键予以中止。
在底线命令行模式下,经常有些命令需要指定作用范围,例如:检索指定模式字符串。可以使用下述字符指定行的位置:
. | 当前行,多数的命令默认地址是当前行。 |
n | 编辑缓冲区中的第n行,行号从1开始编排 |
$ | 缓冲区最后一行 |
% | 从第一行到最后一行。等价于1,$ |
+n | n表示相对当前行的位移。例如-3、.+3、+++,都表示向上移动3行;-5,表示向下移动5行。 |
指定命令作用范围的语法格式:
:n1,n2命令
例如:
:10,20d 删除10至20行之间的内容
:.,+5d 删除当前行和它下面的5行
检索指定模式字符串
检索字符串 |
| ||||||||||||||||||||||
当前行中查找字符 |
| ||||||||||||||||||||||
使光标靠近字符 |
| ||||||||||||||||||||||
置标记 |
| ||||||||||||||||||||||
全局(局部)替换 |
|
定线命令行模式常用命令
e命令 | 在vi中,%表示当前文件名,#表示上一个文件名 当时用e命令时,vi编辑器首先检查修改缓冲区后,文件是否保存过,如果没有保存则会发出警告信息,并终止该命令。
| ||||||||||
Ctrl+^ | 当在vi中编辑多个文件时,可以使用Ctrl+^来切换文件。等价于 :e #Enter键 | ||||||||||
r命令 | 把文本读入编辑缓冲区的任意指定位置。所读入文本必须至少长,可以是一个文件或命令的输出
| ||||||||||
w命令 | 将编辑缓冲区中的全部或则部分内容保存或另存为指定的文件。
| ||||||||||
q命令 | 退出命令
| ||||||||||
ZZ | 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出) | ||||||||||
ZQ | 不保存,强制退出。效果等同于 :q!。 | ||||||||||
! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息! |
更多推荐
所有评论(0)