1.vim介绍
vim 是一个功能非常强大的全屏幕文本编辑器,在 Linux 中,vim 编辑器被广泛使用。因为其功能丰富,尤其受程序员喜爱。
vim 也是一个类似于 vi 的著名的功能强大、高度可定制的 文本编辑器 ,在 vi 的基础上改进和增加了很多特性。
vim 和 vi 一样,是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,并且糅合了一些新的特性在 vim 中。例如语法高亮、可视化操作,这些不仅可以在终端运行,也可以也可以运行于 x window、 mac os、windows 。
区分编辑器和 IDE :
可能我们之前就是在 vs2022 写代码,在这类IDE(集成开发环境) 中,一个软件就可以涵盖所有功能,包括编辑,编辑,调试等等;而我们的 vim 是编辑器,单纯是写代码的。如果要编译则需要用到 gcc,g++,调试需要用到 gdb 。工具之间互相独立,虽然 vim 可以对功能进行整合。但是还是要拎清概念:vim 是一款编辑器。
vim 拥有的模式一共有 12种模式,但我们 真正常用的只有三种 :命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode) 。所以我们今天在将 vim 基本操作时,主要围绕这三种模式进行讲解:
先了解一下这三种模式:
- 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 。命令模式的功能很丰富,使操作便捷。
- 插入模式(Insert mode)
只有在Insert mode下,才可以做 文字输入 ,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
- 底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。如果要查看你的所有模式方法为打开vim,底行模式直接输入 :help vim-modes
vim 默认打开为 命令模式 ,命令模式下,是无法进行输入操作的。在命令模式下,可以实现对各种模式的切换,比如:
命令模式 切换至 插入模式 :按 i / a / o 进入插入模式,三种方法都具有不同的效果。
命令模式 切换至 底行模式 : shift : 两个键同时按住进入模式。进入模式后,在 vim 左下角出现了 : q 直接退出 ;w 保存,q 退出, wq :保存退出。
任意模式 切换至 命令模式 :按ESC ,直接切换至命令模式。
2.vim安装
- 打开终端(Terminal)。
- 运行以下命令以更新软件包列表: sudo apt update
- 运行以下命令以安装 Vim: sudo apt install vim
- 在安装过程中,你可能需要输入管理员密码来确认安装。
- 安装完成后,你可以在终端中运行 vim 命令来启动 Vim 编辑器
3.vim编辑器的进入
1.新增(append)
按 a :光标往后跳转一个字符,从跳转后位置开始输入
按 A:光标跳转至行最后一个字符,从跳转后位置开始输入
2.插入(inset)
按 i :从光标当前位置前面开始输入
按 I :从光标所在行的第一个非空白字符前开始输入
3.开始(open)
按 o :从光标所在行上另起新的一行,从行首开始输入按 O :从光标所在行上另起新的一行,从行首开始输入
4.命令模式的命令
下面,我们对常用命令做出一些整理(下面出现的 n 均代表数字) :
复制粘贴剪切 :
- yy / nyy :复制光标所在行或者复制包含当前行在内的 n 行
- p / np :粘贴一行或多行相同内容到当前光标所在行之下
- dd / ndd :对当前行或者当前行在内的 n 行的内容进行剪切,移动光标到目标行进行 p 粘贴(只剪切,不粘贴相当于就是删除)
撤销 :
- u :撤销上一步操作
- ctrl + r :对撤销进行撤销
撤销只能对于本次操作内,退出保存再次操作时,是无法撤销的。
光标定位:
对全局文档:
- shift g :将光标定位到文档结尾
- gg :将光标定位到文档开头
- n shift g : 将光标定位到文档指定行
对局部长文本行(例如若干行100字符长度,行内快速定位):
- shift $ :将光标定位到当前文档行的结尾
- shift ^ :将光标定位到当前文档行的开头
- w / b :按照单词为单位,进行后 / 前移动(单词定义:对于长串字符组成的非单词也认为是单词)
- nw / nb :默认单词数从 0 开始,进行后 / 前移动 n 个单词间距
文本编辑 :
- shift ~ :对文本行进行快速大小写切换,小写转大写,大写转小写。按住不动默认一直切换,直到文本行末尾
- r 字符 / nr 字符 :替换光标所在的字符或者对于 n 个字符文本行进行批量化替换;如果 n 超过文本行长度,则不会进行替换
- shift r :进入替换模式,该模式输入什么则对光标位置完成对等的替换,按退格键删除就是复原
- x / nx :对文本行内进行向后删除或者对光标开始 n 个字符进行向后删除,按住不动默认一直删除,简单概括:行内删除,左侧–>右侧
- shift x / shift nx :行内删除,右侧–>左侧
搜索字符串:
- /str:移至下一个包含str的行
- ?str:移至上一个包含str的行
- /:往下继续查找
- ?:往上继续查找
- n:同一地方重复查找
- N:在相反方向重复查找
- /str/+n:移至下一个包含str的行的第n行
- ?str?+n:移至上一个包含str的行 的第n行
5.底行模式的命令
命令模式按 shift :进入底行模式。
调出 / 隐藏行号:
- set nu :显示行号
- set nonu :隐藏行号
文件的保存和退出 :
- w :保存
- q :退出
- wq :保存并退出
- w! :在写保护文件情况下无法保存,强制保存。 ! 代表强制
- q! :强制退出
- wq! :强制保存并退出
强制的前提是 有权限 ,没权限照样不能强制。 ! 适用于强行修改写保护文件或配置文件等操作。
不退出 vim 执行 shell 命令 :
底行模式中,可以通过 !command 来完成不退出 vim ,执行 shell 指令,例如我们执行 ls -l 指令:
执行命令之后,会跳转到终端,这时按下 Enter 键返回vim。
字符串的替换:
%s/str1/str2/g,可以对数据进行批量替换,g 代表全局,例如: %s/hello/HELLO/g ,是对全局中,将 hello 替换为 HELLO
分屏 :
- 在底行模式下使用vs file :创建一个 file 文件,这样就可以分屏。
- 如果想要知道我们当前处于哪个屏幕,只要明确一点:在 vim 中,光标在哪里,我们就是在编写哪个文件
- 通过 ctrl + ww 我们就可以切换到不同界面,分屏可以支持多个。