【Vim】vim的简单使用

发布于:2025-04-21 ⋅ 阅读:(16) ⋅ 点赞:(0)

1. vi的模式

  • 一般命令模式:以vi打开一个文件就直接进入一般命令模式了(默认模式)
  • 编辑模式
    • 按下i/I/o/O/a/A/r/R进入编辑模式,等界面下方出现INSERT或REPLACE时才可进行编辑
    • 按【Esc】退出编辑模式
  • 命令行模式:输入: / ? 任何一个,即可将光标移动到最下面一行,可以进行读取、保存、批量替换字符、退出vi、显示行号等操作

2. 按键使用说明

2.1 一般命令模式

光标移动

ctrl+f / PageDown : 向下移动一页;f:forward
ctrl_b / PageUp : 向上移动一页;b:back
ctrl+d : 向下移动半页;d:down
ctrl+u : 向上移动半页;u:up

+ : 光标移动到非空格符下一行
- : 光标移动到非空格符的上一行
n[space键] : n表示数字。例如按下10再按空格键,光标向右移动到这一行的10个字符

0 / Home : 移动到这一行的最前面
$ / End : 移动到这一行的末尾

H : 光标移动到屏幕最上方一行的第一个字符处;H:high
M : 光标移动到屏幕中央一行的第一个字符处;M:mid
L : 光标移动到屏幕最下方一行的第一个字符处;L:low

G : 光标移动到这个文件的最后一行
nG : n为数字,移动到这个文件的第n行

gg : 移动到这个文件的第一行,相当于1G
n[Enter] : n为数字,光标下移n行

替换和查找

/<string_name> : 向光标之下查找string_name的字符串
?<string_name> : 向光标之上查找string_name的字符串
n : 按键n,表示重复前一个查找的操作(next)。例如刚刚在执行/process查找process字符串,按下n就会继续向下查找
N : 与n相反,反向进行前一个查找操作。例如刚刚在执行/process查找process字符串,按下n就会继续向上查找

:<n1>,<n2>s/<string1>/<string2>/g : n1,n2为数字,在第n1行和第n2行查找字符串string1,并将其替换为string2
:1,$s/<string1>/<string2>/g : 从第一行到最后一行查找string1字符串,并将其替换为string2
:1,$s/<string1>/<string2>/gc : 从第一行到最后一行查找string1字符串,并将其替换为string2,在替换前提示用户确认

删除/复制/粘贴

x : 向后删除一个字符,相当于[del]键
X : 向前删除一个字符,相当于[backspace]退格键

nx : n为数字,连续向后删除n个字符
dd : 删除/剪切光标所在的一整行
ndd : n为数字,删除/剪切光标所在的向下n行

d1G : 删除/剪切光标所在到第一行的所有数据
dG : 删除/剪切光标所在到最后一行的所有数据

d$ : 删除/剪切光标所在处到该行的最后一个字符
d0 : 数字0,删除/剪切光标所在处到该行的最前面一个字符

yy : 复制光标所在的那一行
nyy : n为数字,复制光标所在的向下n行
y1G : 复制光标所在行到第一行的所有数据
yG : 复制光标所在行到最后一行的所有数据
y0 : 复制光标所在的字符到该行行首的所有字符
y$ : 复制光标所在字符到该行行尾的所有字符

p : 将已复制的数据粘贴在光标下一行
P : 将已复制的数据粘贴到光标上一行

J : 将光标所在行与下一行的数据结合成一行
c : 重复删除多个数据。例如向下删除10行:10cj
u : 恢复前一个操作
ctrl+r : 重做上一个操作
. : 重复前一个操作

2.2 编辑模式

插入/替换

i / I : 进入插入模式。i:从当前光标所在处插入。I:从当前所在行的第一个非空格符处开始插入。
a / A : 进入插入模式。a:从当前光标所在的下一个字符处开始插入。A:从当前所在行的最后一个字符处开始插入。
o / O : 进入插入模式。o:在当前光标所在的下一行处插入新的一行。O:当前光标所在行的上一行插入一行
r / R : 进入替换模式。r:只替换光标所在字符一次。R:一直替换光标所在的文件,直至按下[Esc]

2.3 命令行模式

保存/退出

:w : 将编辑数据写入硬盘
:w! : 若文件为只读文件,强制写入该文件。具体的写入情况与操作者对该文件的权限有关
:q : 退出vi
:q! : 若修改过文件,但不想保存,则强制退出
:wq : 保存后退出
ZZ : 若文件没有修改则不保存退出;若文件修改过则保存后退出
:w [filename] : 将编辑的数据保存成另一个文件
:r [filename] : 在编辑的数据中,读入另一个文件的数据,即将filename这个文件内容加到光标所在行后
:n1,n2 w [filename] : 将n1到n2的内存保存为filename这个文件
:! [command] : 暂时退出vi到命令行模式下执行command。例如 :! ls /root/

环境修改

:set nu : 显示行号,设置之后,会在每行的前面显示行号
:set nonu : 取消行号

3. vim的缓存

在使用vim编辑时,vim会在被编辑文件所在目录下,建立一个名为.filename.swp的文件,如果因一些原因导致编辑的内容未保存,则这个文件就可发挥恢复功能。

由于有缓存的存在,vim会主动判断当前文件是否有问题,如果有问题则会提示用户。

4. vim可视区块

可视区块,就是以区块为单位进行操作。

v : 字符选择,将光标经过的地方反白选择
V : 行选择,将光标经过的行反白选择
ctrl+v : 可视区块,以矩形的方式选择数据
y : 复制反白的地方
d : 删除反白的地方
p : 将复制的区块内容粘贴在光标所在处

5. vim多文件编辑

可以使用vim后接多个文件名,同时打开多个文件。

:n : 编辑下一个文件
:N : 编辑上一个文件
:files : 列出当前这个vim开启的所有文件

6. vim多窗口功能

在vim命令行环境下,使用sp命令可以打开多个窗口:

:sp [filename] : 打开一个新窗口。若后接filename则表示在新窗口创建一个新文件;直接sp,则表示两个窗口都显示当前文件
ctrl+w+j / ctrl+w+↓ : 同时按下ctrl+w,放开按键,然后按下j或↓,则光标可移动到下方窗口
ctrl+w+k / ctrl+w+↑

7. vim关键词补全

ctrl+x -> ctrl+n : 将目前正在编辑的词作为关键词,予以补齐
ctrl+x -> ctrl+f : 将当前目录内的文件名作为关键词,予以补齐
ctrl+x -> ctrl+o : 以扩展名作为语法补充,以vim内置的关键词,予以补齐

网站公告

今日签到

点亮在社区的每一天
去签到