linux中vi和vim命令
linux中vi和vim命令详细介绍
在 Linux 中,vi 是一款经典的文本编辑器,而 vim 是其增强版本(vi iMproved),支持更多高级功能(如语法高亮、代码补全、多窗口等)。以下是两者常用的操作命令:
一、基本模式
1.
命令模式(Normal Mode)
刚进入 vi/vim 时默认处于命令模式,用于导航、编辑、执行命令。
- 移动光标:
h(左)、j(下)、k(上)、l(右)0或^:跳转到行首;$:跳转到行尾w/W:向后跳一个单词(W忽略标点);b/B:向前跳一个单词G:跳转到文件末尾;gg或1G:跳转到文件开头nG:跳转到第n行(如10G到第 10 行)Ctrl + f:向下翻页;Ctrl + b:向上翻页
- 文本操作:
x:删除光标处字符;nx:删除连续n个字符dd:删除当前行;ndd:删除从当前行开始的n行d + 移动命令:删除从光标到目标位置的内容(如d$删除到行尾,dw删除单词)y(复制)、p(粘贴):用法类似d,如yy复制当前行,np粘贴n次u:撤销操作;Ctrl + r:重做撤销的操作r:替换光标处字符(输入r + 新字符);R:进入替换模式(按Esc退出)
- 可视化模式:
v:进入字符可视化模式,选中光标移动过的字符Shift + v:进入行可视化模式,选中整行Ctrl + v:进入块可视化模式,选中矩形区域
2.
插入模式(Insert Mode)
从命令模式输入以下命令进入插入模式,用于输入文本:
i:在光标前插入;I:在行首插入a:在光标后追加;A:在行尾追加o:在当前行下方新建一行插入;O:在当前行上方新建一行插入ESC:退出插入模式,返回命令模式
3.
底行模式(Command Line Mode)
在命令模式输入 : 进入底行模式,用于执行文件操作、搜索、设置等:
- 文件操作:
:w:保存文件(:w 文件名另存为新文件):q:退出(未修改时可用,若修改过需:q!强制退出不保存):wq或:x:保存并退出:e 文件名:打开新文件编辑:r 文件名:将另一个文件的内容插入到当前文件光标处
- 搜索与替换:
:/关键词:向下搜索关键词(?关键词向上搜索):n:跳转到下一个搜索结果;:N:跳转到上一个:%s/旧内容/新内容/g:全局替换(%表示全文,g表示每行替换所有匹配项):s/旧内容/新内容:仅替换当前行第一个匹配项
- 其他设置:
:set nu:显示行号;:set nonu:取消行号:set syntax=on:开启语法高亮(vim支持,vi不支持):set tabstop=4:设置制表符宽度为 4 个空格
二、实用技巧(vim 扩展功能)
- 多窗口操作(
vim特有)::split 文件名或Ctrl + w + s:水平分割窗口:vsplit 文件名或Ctrl + w + v:垂直分割窗口Ctrl + w + h/j/k/l:在窗口间切换(对应左 / 下 / 上 / 右)
- 代码补全(
vim支持):- 在插入模式下,输入部分代码后按
Ctrl + p或Ctrl + n触发关键词补全。
- 在插入模式下,输入部分代码后按
- 宏录制:
qa:开始录制宏到寄存器a- 执行需要录制的操作
q:停止录制@a:回放寄存器a中的宏
三、vi 与 vim 的区别
| 特性 | vi | vim |
|---|---|---|
| 语法高亮 | 不支持 | 支持(需配置或默认开启) |
| 插件系统 | 不支持 | 支持(通过 ~/.vimrc 配置) |
| 多窗口编辑 | 不支持 | 支持 |
| 正则表达式功能 | 基础 | 更强大(兼容 Perl 风格) |
| 撤销历史 | 仅当前会话 | 可保存到文件(持久化) |
四、常用场景示例
- 编辑文件:bash
文件名.txt912 文件名.txt
- 快速删除 / 复制多行:
- 命令模式下输入
5dd删除 5 行,5yy复制 5 行,再用p粘贴。
- 命令模式下输入
- 替换全文关键词:vim
soldgc # 每次替换前询问(加 `` 确认)912:%s/old/new/gc # 每次替换前询问(加 `c` 确认)
掌握这些基本命令后,可通过 vimtutor 命令(vim 内置教程)进一步学习进阶用法。vi/vim 是 Linux 下高效的文本编辑工具,熟练使用后能大幅提升代码编写和文本处理效率。