vi 保存退出_vi/vim使用方法小结

本文详细介绍Vim编辑器的基本操作、模式切换及命令模式、末行模式下的实用技巧,适用于初学者快速掌握Linux下的文本编辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎关注AE君的科技屋

致读者

Happy vim 

bfa4e3400d2f9a959ee3d32969a4c702.png

    本文主要帮助vi/vim新手熟悉vi/vim编辑器,快速查阅相关操作,实现在Linux下进行文本编辑工作。   

    全文共3000余字,现提供目录如下,供读者有选择地参考。

                           AE君

vi/vim简介

    vi出自单词"visual",由加州大学伯克利分校,Bill Joy研究开发,是Linux系统中最经典的文本编辑器。vim则是在vi的基础上改进和增加了很多特性。vi/vim只能编辑字符,不能对字体、段落进行排版;既可以新建文件、也可以编辑文件;没有菜单,只有命令,且命令繁多。下面基于功能更强大的vim,对繁多的命令做一些整理。

基本操作

模式切换

命令模式下的操作

末行模式下的操作

67a5da23da3c46bfd206d17deab0bd61.png

一 基本操作

01 启动vim

    在Linux终端命令行中直接输入“vim”,即可打开vim编辑器。

1ee848f2495a7999deb3c7ed474d4ecb.png

02 退出vim

    在末行模式(稍后会介绍)下,输入q即可退出vim。如果由于没有保存修改过的文本等其他原因,输入q没有退出,可以在q后添加'!',强制退出。退出vim后回到命令行。

a26fa290d1e6279d176a12c3e37d502d.png

03 新建文件

方法A 启动vim时命名

    如果当前文件目录下没有所需的文件,可以在命令行中输入“vim + [目录(可写可不写)]文件名”。注意文件名的后缀,例如输入“filename.cpp”,会创建一个C++源文件,进行文件编辑的时候,会对其进行相应的适配,例如添加文字颜色。

033c5b936b15724f370dfaf2676abb09.png

    当前目录下,原本没有hello_world.cpp这个文件,我们使用vim新建一个hello_world.cpp文件,并进入vim进行文件编辑。

11fdee46a472268aaff585da042ead61.png

    退出vim后,成功地创建了新的文件hello_world.cpp。

7d8714fbd7e71df29f8c7f34e49af4d9.png

方法B 启动vim后命名

    当然,我们也可以直接进入vim,编辑文件后保存命名再退出。编辑好文件之后,末行模式输入"w+filename",即可保存文件并对文件进行命名。如命名为try.txt。

cf45f44062c66f76ada87bf589f15dcb.png

    保存命名成功。

c359284b97f809d84b42ab7aa48bbee4.png

    目录中出现我们之前创建的文件try.txt。

5fbcb4412d916f8de87b9cf93ce9e300.png

04 打开文件

    对已经存在的文件可以在终端输入"vim filename"用vim打开文件进行编辑。

684ad642ac2cdf5e5aa758b8cc1f318a.png

05 保存文件

    编辑完成后,末行模式下输入"wq",保存并退出。

1920f53caeb7eb537b8a80d92defd872.png

    再次打开vim或直接使用命令行查看,可以看到文件编辑后保存成功。

3102235fda63026928a05828fc5235c7.png67a5da23da3c46bfd206d17deab0bd61.png

二 模式切换

    vim共有三种模式:命令模式、插入模式以及末行模式(翻译不尽相同)。启动vim后,首先进入的是命令模式。在命令模式下,按I键(insert)可进入插入模式,按Shift+;(即:)可进入末行模式。在插入模式和末行模式下,按Esc键即可退回到命令模式。

8d05fa5745429dad69b233bec047a532.png67a5da23da3c46bfd206d17deab0bd61.png

三 命令模式下的操作

注意

    以下内容中的输入以键盘上的按键印刷为准,如A指按A键,不表示输入大写字母A,如要输入大写字母,会提示按Shift键,请读者悉知。

01 模式简介

    在命令模式下,从键盘上输入的任何字符都被当做编辑命令来解释。此模式下,切忌进行常规编辑操作,比如添加、修改字符。 命令模式比较适合整体浏览,进行剪切、复制、粘贴等排版操作。下面介绍一些命令模式中常用的命令。

02 光标移动

    若键盘带有方向键,则方向键就可以控制光标移动。实际上,更常用H、J、K、L四个普遍具有的键来实现光标的移动。这样,手不离键盘即可完成编辑操作。

J 控制光标下移一行

K 控制光标上移一行

H 控制光标左移一个字符

L 控制光标右移一个字符

a044e9c9ba38ddb1b4e4517f9a4f5555.png

    若是在H、J、K、L之前添加数字,则可以进行多行/多字符移动。例如,输入"3 L"表示向右移动3个字符。

    除此之外,还有一些其他的快捷操作方法。

Ctrl+B或Page Up 向上移动一屏

Ctrl+F或Page Down 向下移动一屏

数字0 跳至本行字符起始位置

Shift+4($) 跳至本行字符末尾位置

Shift+6(^) 跳至本行首个非空字符

W 跳至下一个单词或标点的起始位置

Shift+W 跳至下一个单词的起始位置,忽略标点

B 跳至上一个单词或标点的起始位置

Shift+B 跳至上一个单词的起始位置,忽略标点

数字n+Shift+G 跳至文件第n行

ps:先按数字,再同时按Shift+G。其他输入类似,不再赘述。

Shift+G 跳至文件最后一行

03 复制 

    使用y(yank,抽出)相关命令,将内容复制一份存放在vim缓冲区。y相关命令如下:

 YY 复制当前整行内容

数字n+YY 复制从当前行开始的n行内容

YW 复制当前字符到下一个单词或标点起始位置的内容

数字n+YW 复制当前字符到下n个单词或标点起始位置的内容

Y+0 复制当前字符到当前行起始位置的内容

Y+Shift+4($) 复制当前字符到当前行末尾位置的内容

Y+Shift+6(^) 复制当前字符到当前行下一个非空字符的内容

Y+Shift+G 复制当前行到文件末尾位置的内容

Y+数字n+Shift+G 复制当前行到文章第n行的内容

    如果要复制第m行到第n行之间的内容,则需要在末行模式输入"m, ny"

04 粘贴

    当vim的缓冲区非空(有复制或剪切的内容)时,按P(paste)键把缓冲区内容粘贴在当前行下方。

05 删除与剪切

    删除使用x和d(delete)相关命令实现删除操作。将删除的内容(内容删除后存放在vim的缓冲区)粘贴(按P键)在文件某一位置即实现剪切操作。

 X 删除当前字符

数字n+X 删除从当前字符开始的n个字符

DD 删除当前行内容

数字n+DD 删除当前行开始的n行内容

DW 删除当前字符到下一个单词或标点起始位置的内容

数字n+DW 删除当前字符到下n个单词或标点起始位置的内容

D+Shift+4($) 删除当前字符到当前行末尾位置的内容

D+0 删除当前字符到当前行起始位置的内容

D+Shift+6(^) 删除当前字符到当前行下一个非空字符之间的内容

D+Shift+G 删除当前行到文件末尾位置的内容

D+数字n+G 删除当前行到第n行之间的内容

06撤销与重做

    使用u相关命令,可以实现对此前进行的操作的撤销。

 U 取消最近的一次操作请输入文字

Shift+U 取消此前所有的操作

    撤销后,可使用Ctrl+R键实现重做(redo)。

07 搜索与替换

    这里介绍一些可以在命令模式下进行的搜索操作,替换操作主要在末行模式下进行,会在后文介绍。

F+字符a 将光标定位到当前行内字符a的位置,按;键重复操作

/+文本内容+Enter 全文自上向下从光标位置开始搜索文本内容并将光标定位到文本内容起始位置,按N键重复操作

Shift+/(?)+文本内容+Enter 全文自下向上从光标位置开始搜索文本内容并将光标定位到文本内容起始位置,按N键重复操作

08 合并行

    单纯在行末删除行末字符并不能与下一行合并。

Shift+J 清除光标所处的行与下一行之间的换行,行尾没有空格则自动添加一个空格

数字n+Shift+J 合并n行

09 恢复文件

    在编辑某一个文件时,目录下会生成一个形如".filename.swap"的文件。例如,在使用vim编辑"helloworld.cpp"文件时,使用另一终端查看文件目录下的文件,就会出现".hello_world.cpp.swp"文件。

1392fc75f1ac4b82d628aa3693dee77a.png

    强制关闭正在编辑"hello_world.cpp"的终端(意外断电等其他情况类似)后,再次用vim打开"hello_world.cpp",出现如图所示界面。

4615cd5ca771db077a8e7fe644de8f7f.png

根据提示:

O 只读打开,不改变文件内容

E 继续编辑文件,不恢复.swp文件保存的内容

R 恢复上次编辑以来未保存的文件内容

D 删除.swp文件

Q 退出vim,回到命令提示符

A 忽略这个编辑行为,回到命令提示符

    例如,按R键选择恢复之前未保存的内容,并按Enter键确认后,文档恢复到了强制关闭前的状态。退出之前修改却未保存的"Change"得以恢复。也可直接在终端中输入"vim -r filename"来恢复未保存的内容。

ad63752c0947c2330f23aad08f9e51af.png

10 进入插入模式

    当需要添加、修改文件内容时,需要从命令模式进入插入模式。进入命令行的方式除了按I键外还有很多。

O 在当前行的下方插入一行

Shift+O 在当前行的上方插入一行

I 在光标前插入(insert)

Shift+I 在当前行的起始位置插入

 A 在光标后插入(attach)

Shift+A 在当前行的末尾位置插入

S 用输入的文本替换光标所在字符

Shift+S 用输入的文本替换光标所在行

67a5da23da3c46bfd206d17deab0bd61.png

五 末行模式下的操作

注意

    末行模式下,依旧可以使用上方向键调出上一条命令,Tab键补全命令等终端命令中的功能。

01 模式简介

    末行模式下,屏幕底部会显示":"符号作为提示符,输入相关命令后按Enter键执行,按Esc键回到命令模式。功能丰富。

02 保存与退出

w 保存文件

w+filename 文件重命名为filename

wq! 保存并退出

wq!+filename 文件重命名为filename并保存退出

q!强制退出

x 同wq!

03 搜索与替换 

    vim常使用ex命令来执行搜索和替换操作。ex命令共有4部分组成:

1. 确定操作作用的范围的符号。 '%'表示全文范围,'m, n'表示第m到第n行,'$'表示最后一行。缺省表示范围为当前行。

2. 具体的操作。's'表示替换操作。

3. 搜索和替换的文本 '/text1/text2'表示用text2替换text1。

4. 全局操作符号'/g',表示对搜索到的每一行的每一个实例进行替换。缺省则会只替换每一行第一个符合条件的实例。

举个例子:

    末行模式下输入"5,$ s/a/ replace /g"。替换前如图所示。

1c5e34cf1588cad5a8770a0540141556.png

    替换后如图。由图知,前四行中的字符'a'没有被替换,仅是第5行至末行的字符'a'被替换为字符串" replace "。

0d55190bf2b51265d7562ce2bb0aeab9.png

    如果替换范围较大,可以在原ex命令后添加字符'c',如"5,$ s/a/ replace /gc"。替换时,每个替换需要用户确认。

59c79eee3137661862691bea4565f1fa.png

    如图所示,用户有多种交互方式:

y 执行替换

n 跳过此次替换请输入文字

a 执行此次替换和之后的所有替换

q 或Esc 停止替换

l 执行此次替换并退出替换

Ctrl+E 向下滚动,用于查看替换处的文本

Ctrl+Y 向上滚动,用于查看替换处的文本

04 多文件编辑

(1) vim打开多文件

    有时可能需要对多个文件进行编辑,如文件间内容的拷贝。在终端输入"vim file1 file2 ..."即可用vim打开多个文件,方便此后的编辑操作。

(2) 多文件切换

    进入vim后,进入末行模式输入"n"执行后即可切换到下一文件,输入"N"执行后即可切换回上一文件。

注意

    切换文件前,需要对当前文件进行保存。如果放弃保存,需要在"n"或"N"后加'!',表示强制切换。

    还可输入"buffer 文件编号"来切换文件,文件编号查看方法见下一节。

(3) 多文件查看

    在末行模式下输入"buffers",执行后以查看正在编辑的文件列表,列表中含有文件编号。

(4) 文件间复制

    只需要在文件1中使用y相关命令,再切换到文件2使用P键粘贴即可。

    若全文复制,甚至不需要打开多文件。只需要在终端用vim打开文件2后,在末行模式下输入"r!cat file1"或"r file1",即可将file1全文复制到file2。

优快云:https://blog.youkuaiyun.com/qq_44739676/article/details/107116206

6a1968c0d6c3c2e4fd8d9ddd219d8262.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值