Linux系统:VI/VIM使用指南

目录

一、三种模式

二、VI/VIM的使用

1、命令模式下的常用指令

2、进入与退出插入模式的命令

3、底行命令模式的退出等操作

三、Vim的额外功能

1、命令模式下的区块选择

2、底行命令模式下的多文档编辑

3、底行命令模式下的多窗口功能

4、插入模式下的单词补全功能

扫描二维码关注公众号,回复: 4831405 查看本文章

一、三种模式

在使用VI/VIM编辑文件之前,我们需要了解Vim/Vi下的三种模式:

1、命令模式:用户对一个文件启动 Vim/Vi,便进入了命令模式(也称为一般模式)。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。在此模式下,可以通过命令对文件内容进行删除,复制,粘贴等行为。

2、插入模式:在命令模式下,输入i, I, o, O, a, A, r, R等任意命令,便会立即进入插入模式(也称之编辑模式),在这个模式下,我们才可以对文件进行详细的编辑,比如使用退格键,删除键,回车键等各式各样的文本编辑了。按 ESC 键回到命令模式。

3、底线命令模式:在命令模式下,输入字符【:?/】三个中的任意一个,就会来到底线命令模式下。在这个模式下,我们可以完成搜索、读取、存档、离开Vim/Vi等很多行为。按【ESC】键回到命令模式。

以图形来表示三种模式的关系:

二、VI/VIM的使用

1、命令模式下的常用指令

a)移动游标

h 、 向左方向鍵(←) 游标向左移动一个字符
j 、向下方向鍵(↓) 游标向下移动一个字符
k 、 向上方向鍵(↑) 游标向上移动一个字符
l 、 向右方向鍵(→) 游标向右移动一个字符
如果想要进行多次移动的话,比如向下移动 30 列,可以使用 "30j" 或 "30↓" 的组合按键, 也就是加上想要进行的次数,按下指令即可!
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 游标移动到下一行的行首
- 游标移动到上一行的行首
n<space> n 表示『数字』,例如 20 。按下数字后再按空格键,游标会向后移动n个字符的距离。例如 20<space> 则游标向右移动20个字符
0 或功能键[Home] 数字『 0 』:移动到这一行的行首
$ 或功能鍵[End] 移动到这一行的行尾
H 移动到当前屏幕的最上一行的行首
M 移动到当前屏幕的中间一行的行首
L 移动到当前屏幕的最下一行的行首
G 移动到这个文件的最后一行(常用)
nG

n 为数字。移动到这个文件的第n行。例如 20G 则会移动到这个文档的20第20行(可配合 :set nu)

相当于[:n]

gg 移动到这个文件的第一行,相当于1G (常用)
n<Enter> n 为数字。游标向下移动n行(常用)

b)搜索、替换

/word 向游标之下查询一个名为word的字串,回车后,就移至到其位置! (常用)
?word 向游标之上查询一个名为word的字串
n 这个n是英文按键。代表重复执行前一个搜寻的动作。表示下一个next
N 这个N与n的方向相反,表示上一个
:n1,n2s/word1/word2/g n1 与 n2 均表示数字。表示在第 n1 与 n2 行之间寻找word1字符串,并使用word2字符串进行替换(常用)
:1,$s/word1/word2/g 从第一行到最后一行搜寻word1字符串,使用word2字符串进行替换(常用) 相当于[:%s/word1/word2/g]
:1,$s/word1/word2/gc 从第一行到最后一行搜寻word1字符串,使用word2字符串进行替换!并且在取代前询问使用者来确认是否需要取代!(常用)  

常用:

  :n1,n2s/^/#/g        使用#连续注释

  :n1,n2s/^#//g       取消#的连续注释

  :n1,n2s/^/\/\//g     使用//连续注释

c)删除、复制与粘贴

x, X 在一行字符中,x表示向后删除一个字符(相当于del键),X为向前删除一个字符(相当于退格键) (常用)
nx n 为数字,连续向后删除n个字符。
dd 刪除游标所在的那一行(常用)
ndd n 为数字。删除游标所在的向下n行(常用)
:n1,n2d n1和n2都是数字,表示删除第n1行到第n2行的数据
d1G 刪除游标所在到第一行的所有行数据
dG 刪除游标所在到最后一行的所有行数据
d$ 刪除游标所在行,到该行的行尾
d0 0为数字 ,刪除游标所在行,到该行的行首
yy,Y 复制游标所在的那一行数据(常用)
nyy,nY n 为数字。复制游标所在的向下n行(常用)
y1G 复制游标所在行,到第一行的所有数据
yG 复制游标所在行,到最后一行的所有数据
y0 复制游标所在行,到行首的所有数据
y$ 复制游标所在行,到行尾的所有数据
p, P p表示将复制的数据粘贴到游标所在行的下一行,P表示将复制的数据粘贴到游标所在行的上一行 (常用)
J 将游标所在行与下一行结合成同一行
c 重复删除多行数据,例如向下刪除 10 列,[ 10cj ]
u 撤销前一个动作。(常用)
. 小数点,重复前一个动作

 

2、进入与退出插入模式的命令

a)进入插入模式

进入插入模式后, vi 界面的左下角处会出现 [--INSERT--] 或 [--REPLACE--] 的字样。此时才能在文件里面输入字符时。

i, I i 为从目前游标所在处插入, I 为在游标所在行的行首插入 (常用)
a, A a 为在游标所在处的下一个字符开始插入,A为在游标所在行的行尾插入(常用)
o, O o为英文字母。o为在游标所在的下一行插入新的一行,O为在游标所在行的上一行插入新行(常用)
r, R r只会替换游标所在处的那一个字符;R会一直取代游标所在处的字符(常用)

b)退出插入模式

[Esc] 退出插入模式,回到命令模式中(常用)

3、底行命令模式的退出等操作

a)底行命令模式的退出

:w 将编辑的文件写入磁盘中,即保存(常用)
:w! 如文件为只读时,强制写入到该文件。不过到底能不能写入,还是要看你的权限!
:q 离开 vi (常用)
:q! 强制退出Vi。不进行保存操作。
:wq 保存并退出。若为 :wq! 則表示强制存储并退出 (常用)
ZZ 如文件没有更新,则不保存离开,如有更新,就保存离开
:w [filename] 将编辑的文件存储为另一个文件,相当于另存为
:r [filename] 在编辑的文件中,读入另一个文件的数据。即将『filename』 这个文件的内容添加到游标之后。 
 :r  !命令 导入命令执行结果
:n1,n2 w [filename] 将第n1行到第n2行的数据保存到filename文件里
:! command 暂时离开 vi 到指令列模式下执行 command 的显示结果。例如『:! ls /home』

感叹号 [  !] 在vi中,通常具有强制的意思

b)VIM的行号设置

:set nu 显示行号
:set nonu 取消行号

三、Vim的额外功能

1、命令模式下的区块选择

v 字符选择,会将游标经过的地方选中
V 行选择,会将游标经过的行选中
[Ctrl]+v 列选择,可以用方形的方式选择数据
y 复制选中的数据
d 删除选中的数据
p 将复制的数据 粘贴到游标所在处

2、底行命令模式下的多文档编辑

可以在同一个终端中同时编辑多个文件

同时编辑多个文件的语法:Vim  filename1  filename2 ..........

底行命令模式下进行下列操作:

:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前Vim正在编辑的文件列表

注意 :切换编辑文件时一般需要加感叹号 [ ! ]

3、底行命令模式下的多窗口功能

同样在底行命令模式下,与多文档编辑不同的是,多窗口在同一个终端中分为多个窗口显示不同文件;而多文档编辑终端只显示一个文件,通过切换命令来达到多文档编辑的效果。

语法:[ :sp  filename ]

:sp [filename] 开启一个新窗口,指定 filename,新窗口就显示新文件的内容,不指定名称,就是同一个文件。
[ctrl]+w+ j / [ctrl]+w+↓ 游标移动到下方的窗口。
[ctrl]+w+ k / [ctrl]+w+↑ 游标移动到上方的窗口。
[ctrl]+w+ q 关闭游标所在的窗口

4、插入模式下的单词补全功能

当处于Vim插入模式时,我们输入某一个单词的首字母后,可以按以下组合按键

[ctrl]+x -> [ctrl]+n 以正在编辑的文件里的内容文字作为关键字进行补全
[ctrl]+x -> [ctrl]+f 以当前目录内的文件名作为关键字,进行补全
[ctrl]+x -> [ctrl]+o 以文件类型的内置语法进行补全

参考资料:https://blog.csdn.net/Michael__One/article/details/85114886

猜你喜欢

转载自blog.csdn.net/qq_39192827/article/details/86065402