命令基础
VIM基础
一、 正常模式 (Normal Mode)
这是 Vim 启动后的默认模式,所有的按键都被映射为控制指令。此模式主导光标移动、文本的复制删除、视口控制以及模式切换。
1. 光标移动与基础跳转
- 基础方向(h/j/k/l):
1
2
3
4
5
6^
k 提示: h 的键位于左边,每次按下就会向左移动。
< h l > l 的键位于右边,每次按下就会向右移动。
j j 键看起来很象一支尖端方向朝下的箭头。
v - 词级跳跃:
w:移动到下一个单词的起始处。b:移动到上一个单词的起始处。
- 行与文件级跳转:
^:跳转至当前行的行头(首个非空字符)。$:跳转至当前行的行尾。gg:跳转至文件/文章开头。G:跳转至文件/文章结尾。<数字>gg:例如52gg,精确跳转至第 52 行。[[:跳转到当前文件开头(通常用于代码块匹配)。]]:跳转至当前文件结尾。
2. 文本删除、置入与替换
许多改变文本的命令都由 操作符 + 动作 (Motion) 构成。
删除操作符 (
d):x:删除光标当前所在位置的单个字符。dw:从光标当前位置删除直到下一个单词起始处。de:从光标当前位置删除到单词末尾(包含最后一个字符)。d^:删除光标当前位置至行头的所有内容。d$:删除光标当前位置直至行末的所有内容。dd:删除光标所在的整行。dG:删除从当前光标位置直至文档结尾的所有内容。
置入与粘贴 (
p/P):p:将最后一次删除或复制的内容,置入/粘贴到光标之后(或下一行)。常配合dd剪切整行使用。P:将内容置入/粘贴到光标之前(或上一行)。
替换 (
r):r<字符>:仅替换光标所在位置的一个字符,替换后自动保持在正常模式。
3. 数据操控与自增减
Ctrl + a:将光标所在的数字加 1(支持寻找行内首个数字,支持 0x 十六进制)。如输入10再按Ctrl + a则直接加 10。Ctrl + x:将光标所在的数字减 1。
4. 查找匹配与路径追踪
/查找内容:正向查找目标字符串。?查找内容:反向(向上)查找目标字符串。n:按照原搜索方向,继续寻找下一个匹配项。N:反转方向,寻找上一个匹配项。Ctrl + ]:跳转到光标所在函数的定义处(需配合 ctags)。Ctrl + t:从函数定义处跳回,完成调用栈的回溯。
5. 视口翻页、分屏与进程管理
滚动与翻页:
Ctrl + f/Ctrl + b:向下 / 向上翻一整页。Ctrl + d/Ctrl + u:向下 / 向上翻半页(代码阅读最佳实践)。Ctrl + e/Ctrl + y:视口向下 / 向上滚动一行(光标停留原处微调)。
跳转历史追溯:
Ctrl + o:跳回上一个光标历史位置(时光倒流)。Ctrl + i(或 Tab):跳到下一个光标历史位置。
分屏管理 (
Ctrl + w前缀):Ctrl + w后接v/s:垂直 / 水平分割窗口。Ctrl + w后接h/j/k/l或w:在窗口间切换光标焦点。Ctrl + w后接q:关闭当前分屏。Ctrl + w后接=:均等化所有分屏大小。
快捷保存退出与系统挂起:
ZZ(大写):快速保存并退出(无需输入冒号进入末行模式,等同于:wq或:x)。Ctrl + z:挂起当前 Vim 进程退回 Shell。在终端敲击fg即可恢复。
二、 插入模式 (Insert Mode)
此模式专用于文本输入。在正常模式下输入特定触发键进入,按 Esc 或 Ctrl + c 退出。
1. 进入编辑状态的触发键
i(Insert):在光标前插入,进入编辑模式。a(Append):在光标后追加,进入编辑模式。
2. 插入模式下的极速编辑 (Ctrl 组合键)
在疯狂敲击代码时,手无需离开主键盘区即可完成删除和补全:
Ctrl + h:删除光标前的一个字符(等同于 Backspace)。Ctrl + w:删除光标前的一个单词(极速纠错)。Ctrl + u:删除光标当前位置到行首的所有内容。Ctrl + p/Ctrl + n:自动补全(Previous/Next)。基于当前缓冲区及关联文件弹出变量名/函数名下拉列表。Ctrl + c:退出插入模式返回正常模式(等效于 Esc)。
三、 末行模式 (Command-line Mode)
在正常模式下输入 :、/ 或 ? 触发。这是 Vim 的底层宏观控制台,用于执行全局操作、系统交互和环境配置。
1. 缓冲区保存与文件句柄管理
:w:将当前缓冲区内容写入磁盘。:w <文件路径>/:saveas <文件路径>:将当前内容另存为指定文件。:q:正常退出当前窗口(若有未保存修改会被拦截)。:q!:强制退出,丢弃所有未保存的修改。:wq/:wq!:保存并退出 / 强制保存并退出。:x:安全保存并退出(仅当文件被修改过时才执行写入,保护文件 mtime 时间戳)。:e <文件路径>:不离开当前 Vim 进程,直接打开新文件进行编辑。:w !sudo tee %:(极客提权技巧)在忘记使用 sudo 打开需 root 权限的文件时,通过调用系统tee强制覆盖当前文件并保存。
2. 正则表达式与全局替换
标准语法::[范围]s/目标正则/替换内容/[修饰符]
:%s/old/new/g:将全文所有行的old全部替换为new。:%s/old/new/gc:全文替换,但在每次修改前弹窗高亮询问(y/n/a/q/l/x),确保代码重构的安全性。:10,50s/foo/bar/g:限定范围操作,仅在第 10 行至 50 行内进行批量替换。
3. 系统级 Shell 交互
通过 ! 符号突破 Vim 边界,直接调用底层 OS 命令。
:!ls -l:临时切回控制台执行ls -l,按回车返回 Vim 编辑现场。:r <文件名>:读取指定文件的全部内容,插入到光标所在行的下方。:r !<系统命令>:执行外部命令,并将回显结果直接写入到当前文件中(如:r !ip addr或:r !uuidgen)。
4. 运行环境与底层状态控制
动态修改当前 Vim 会话的运行参数(写入 .vimrc 可永久生效)。
:set nu/:set nonu:开启 / 关闭行号显示。:set list:显示不可见控制字符(制表符显示为^I,换行显示为$),排查空格/Tab 混用报错的利器。:set ff=unix:转换文件格式。强制将 Windows 风格的换行符(CRLF)转换为 Linux 风格(LF),解决跨平台脚本运行时的^M报错。:set syntax=python:强制覆盖当前文件的语法高亮渲染规则为 Python。
5. 范围批量操作
:.,$d:范围删除。删除从当前所在行(.)直到文档最后一行($)的所有内容。:10,20y:范围复制。将第 10 到 20 行的代码一次性提取到寄存器中。
读写命令
echo命令
echo 'i love u' > a.txt,如果文件没有则创建,如果存在文件就覆盖echo 'i love u' >> a.txt,如果文件没有则创建,如果存在文件就追加
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小chen妙妙屋!
评论






