Linux VI/VIM 10 条高频命令
引言
Linux 自带的 vi/vim 编辑器好比 Windows 的文本编辑器,但其功能可比 windows 的文本编辑器强大得多。但 vi/vim 入门难度不小,一是使用方式和普通文本编辑器不同,习惯了 windows 操作的童靴一开始会觉得很别扭,二是 vi/vim 的命令非常多,用法也很灵活,所以,更熟练掌握 vi/vim 绝非易事,几乎可以用年为单位。
其实,如果你不是 vi/vim 的狂热者,只是为了满足日常工作需要,那么掌握一些高频的 vi/vim 命令及用法即可,没必要去记忆大量的命令。其实,vi/vim 的命令不是靠大脑记忆,而是肌肉记忆,什么意思呢,就是熟能生巧,没什么奥妙可言。
以下总结出 10 条 日常工作中 Linux vi/vim 使用非常频繁的命令和使用技巧,希望能够对各位童鞋有所帮助。
vi/vim 10 条高频命令
- 删除命令
工作中一般用 vi/vim 编写配置文件,经常会删除一些配置,当然在插入模式下可以通过光标一个字符一个字符的删除,如果删除内容比较少到还好,内容太多效率就太低了。vi/vim 提供了专门的删除命令,可以满足各种删除需要。
按 Esc 按键将 vi/vim 切换到命令模式
• 在光标所在行键盘输入 dd 命令,可以直接删除该行(删一行)
• 在光标所在行键盘输入 3dd 命令,可以从当前行向下删除 3 行(删多行)
• 在光标所在行键盘输入 dG 命令,可以删除光标所在行及其下所有行
按冒号 : 按键将 vi/vim 切换到编辑模式
• 如果想要删除所有内容,可以先输入 gg 命令回到首行, 然后输入 .,$d 表示从当前行到末行全部删除 - 撤销命令
万一删错了,你不会再重新写一遍吧,就算重写你也未必记得住删掉的内容,这时可以撤销删除的操作,恢复删除前的状态
按 Esc 按键将 vi/vim 切换到命令模式
• 键盘输入 u 命令就可以撤销最近一次的操作,可以使用多次来恢复原有的操作
• 键盘输入 ctrl + r 命令可以恢复对使用 u 命令的操作,意思就是如果你撤销太多了,可以用这个命令来取消撤销
也就是说 u 命令和 ctrl + r 是一对相反的命令,如果执行一次 u 命令,又执行一次 ctrl + r 命令,就好比你退一步后又前进一步,等于啥也没有干,原地不动。 - 复制/粘贴命令
想必 windows 的 ctrl+c/v 是程序员每天使用最频繁的快捷键了, 但是在 vi/vim 中这对快捷键可就不管用了。
按 Esc 按键将 vi/vim 切换到命令模式
• 键盘输入 yy 命令就是复制光标所在行的内容到 vi/vim 的缓冲区(相当于 windows 的剪贴板),然后输入 p 命令就可以将复制内容粘贴到光标的下一行。如果你想黏贴到光标的上一行,那么就是输入大写 P 命令即可。(复制/粘贴一行)
• 键盘输入 3yy 命令就是复制光标所在行以及往下 2 行内容(复制/粘贴多行)
• 键盘输入 y^ 命令就是复制光标所在行到行首之间的内容
• 键盘输入 y$ 命令就是复制光标所在行到行尾之间的内容
除了复制/粘贴命令,应该还有剪切才对呀,那 vi/vim 中如何剪切呢? 很简单,就是 dd 命令先删除一行,然后 p 命令就会将删除的内容粘贴在光标的下一行,这就是剪切了呀。 - 查找/替换命令
工作中经常遇到想要修改某个配置项,但是配置文件很大,如果一行一行找,恐怕你受得了,你的眼睛也受不了,这时你需要快速查找命令,帮你快速找到想要修改的配置项。
另外,如果遇到配置文件中有很多地方需要统一修改,那么一个个修改就太麻烦了,这时你需要查找/替换命令来一次搞定。
按冒号 : 按键将 vi/vim 切换到编辑模式
• 键盘输入 /hello,表示自上而下查找 hello 这个字符串,找到后光标会停留在该行,多次输入会按照自上而下的顺序继续查找有 hello 字符串的行(也可以键盘输入 n 命令表示 next 定位到下一个)
• 键盘输入 ?hello,表示自下而上查找 hello 这个字符串,找到后光标会停留在该行,多次输入会按照自下而上的顺序继续查找有 hello 字符串的行(也可以键盘输入 n 命令表示 next 定位到下一个)
• 键盘输入 s/old/new 表示用 new 字符串去替换光标所在行中首次出现的 old 字符串(替换一行一个字符串)
• 键盘输入 s/old/new/g 表示用 new 字符串去替换光标所在行中所有出现的 old 字符串(替换一行所有字符串)
• 键盘输入 %s/old/new/g 表示用 new 字符串去替换文件中所有出现的 old 字符串(替换所有字符串) - 文件设置行号
工作中经常需要查看文件,给文件设置行号可以方便文件的查看和修改
按冒号 : 按键将 vi/vim 切换到编辑模式
• 键盘输入 set nu 可以给文件设置行号
• 键盘输入 set nonu 可以取消文件行号 - 光标回到行首/行尾
工作中经常需要在配置文件后添加一些内容,比如经常要在 /etc/profile 文件最后添加环境变量,如果能够快速定位到文件最后一行,那将是一件令人愉快的事情。
有两种方式可以实现光标回到行首/行尾,如下:
方式一:按 Esc 按键将 vi/vim 切换到命令模式(推荐)
• 键盘输入 gg 命令,光标定位回到行首
• 键盘输入 G 命令,光标定位回到行尾
方式二:按冒号 : 按键将 vi/vim 切换到编辑模式
• 输入数字 0 然后按回车键,光标自动回到行首(定位行首)
• 输入字符 $ 然后按回车键,光标自动回到行尾(定位行尾) - 翻页(屏)
如果浏览的文件过大,这时候就需要用到翻页命令了
按 Esc 按键将 vi/vim 切换到命令模式
• 键盘输入 ctrl + f 命令表示向下翻一页(屏)
• 键盘输入 ctrl + b 命令表示向上翻一页(屏)
• 键盘输入 ctrl + d 命令表示向下翻半页(屏)
• 键盘输入 ctrl + u 命令表示向上翻半页(屏)
• 键盘输入 ctrl + e 命令表示向下滑动屏幕
• 键盘输入 ctrl + y 命令表示向上滑动屏幕 - 插入执行外部命令的结果
工作中我们经常会修改 /etc/profile 文件,而改得最多的就是添加某个软件的安装路径,比如 hadoop。而一般的做法就是先查找 hadoop 的安装路径,然后复制到剪贴板上,再打开 profile 文件定位到行尾添加配置。
其实,以上步骤可以在 vi/vim 中一步搞定,因为在 vi/vim 中也可以执行 Linux 的命令。
按冒号 : 按键将 vi/vim 切换到编辑模式
• 输入 !pwd 就可以执行 Linux 的 pwd 命令返回当前目录,输入 !hostname 就可以获得主机名。很快你就会发现,命令显示的返回结果并不会直接插入到文件中(执行外部命令)
• 输入 r!pwd 就可以将命令的返回结果插入到当前光标位置(插入外部命令执行结果)
掌握了这个用法,写配置文件就会更方便快捷啦。 - 多文件操作
工作中可能你需要操作多个配置文件,一般的做法是修改完一个文件,然后再打开下一个。但是,如果遇到多个配置文件之间可能需要相互切换,而 vi/vim 正好支持在一个窗口中打开多个文件。
[root@hdp-01 ~]# vi file1 file2 file3
这样就可以一次性打开三个文件,默认当前是显示第一个文件
按冒号 : 按键将 vi/vim 切换到编辑模式
• 输入 n 可以切换到下一个文件
• 输入 N 可以切换到上一个文件
通过 n/N 就可以实现上下文件的任意切换啦。
如果我想在一个屏幕上同时显示多个文件呢,如下:
[root@hdp-01 ~]# vi -o file1 file2 file3
打开文件加一个参数 -o 就搞定了哈,然后可以使用 ctrl + w 然后按上下键在上下窗口间切换 - 导入 shell 命令执行结果
工作中经常修改配置文件,可能需要添加一些 shell 命令执行结果,如下:
eg::r! hostname - 版本选择
“工欲善其事,必先利其器”。在 Vi/Vim 版本的选择上,原则是“能用 Vim 就不要使用 Vi;能用最新版就不要守着旧版本”。
Vim 提供的功能和特性要比 Vi 多得多,如语法加亮着色功能等。就使用效果及效率来说,编辑同样的文件,使用 Vim 更胜一筹;就版本来说,新版的往往会修复旧版的一些缺陷及不足。
这就要求我们在可能的情况下一定要使用最新版的 Vim,如下方式即可查看版本号
[root@hdp-01 ~]# vi
[root@hdp-01 ~]# vim
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现