vi/vim打开文件无响应是因处于命令模式,需按i/a/o进入编辑模式;保存失败e212是权限不足,应sudo启动或用:w !sudo tee %;搜索需注意大小写和高亮,行号用:set number显示、42g跳转;误删可用u撤销或:e!重载,粘贴前需:set paste防缩进错乱。

vi/vim 打开文件就卡住,光标不动,按啥都没反应
这是新手最常懵的瞬间:输 vi filename 进去,屏幕没报错也没提示,键盘像失灵。不是卡了,是它默认在「命令模式」——所有按键都被当指令处理,比如你敲 a、i、o 这些才是进编辑模式的入口。
- 按
i:在当前光标前插入文字(最常用) - 按
a:在当前光标后追加文字 - 按
o:在当前行下方新开一行并进入插入模式
如果误按了其他字母(比如 x 删除字符、:q 退出),别慌,先按 Esc 回到命令模式,再试。记住:没按 Esc 就乱输,很容易删掉几行还不自知。
保存退出总失败:提示 “E212: Can’t open file for writing”
这个错误基本等于“你没权限写这个文件”。常见于编辑 /etc/hosts、/etc/nginx/nginx.conf 这类系统配置时,普通用户没写权限,但 vim 不会提前拦你,直到你敲 :wq 才报错。
- 立刻补救:输入
:w !sudo tee % > /dev/null回车,再输密码,就能强制保存(%表示当前文件名) - 更稳妥的做法:一开始就用
sudo vi /etc/hosts启动,避免中途权限尴尬 - 注意:
:q!是不保存强制退出,:wq!是强制覆盖保存(仅当文件只读但你有权限改权限时才安全)
别信网上抄来的 :wq! sudo —— 那根本不是合法 vim 命令,纯属误导。
想快速跳到某一行或搜关键词,但 / 搜索和行号跳转老不准
vim 的搜索默认区分大小写,且不会高亮,容易以为没搜到;行号跳转也常被忽略开启状态。
- 打开行号显示:命令模式下输
:set number(缩写:set nu),之后左侧行号一目了然 - 跳到第 42 行:直接输
42G(注意是大写 G,小写 g 无效) - 搜索 “ERROR”:输
/ERROR回车,按n往下找,N往上找;加\c可忽略大小写,如/error\c - 如果搜索后发现没高亮,加
:set hlsearch;临时关闭就:nohlsearch
搜完别忘了 :nohlsearch,否则下次移动光标时,匹配词还突兀地亮着,干扰视线。
误删整行或粘贴内容格式全乱,怎么撤回和粘贴不换行
vim 的撤销(u)只能撤上一步操作,但“删一整行”这种动作可能包含多个子动作(比如先移动再删),u 有时不够用;粘贴时自动缩进、自动换行更是让日志或代码段面目全非。
- 彻底撤销整行删除:按
u;如果删了多行又继续编辑过,用Ctrl + r(重做)反向操作反而容易错,不如直接:e!丢弃全部未保存修改,重新来 - 从系统剪贴板粘贴(避免缩进错乱):在插入模式下按
Shift + Insert(X11 环境)或"+p(需 vim 支持 clipboard,终端里可用vim -v确认) - 禁用自动缩进粘贴:先输
:set paste,再按i进入插入模式粘贴,完事输:set nopaste恢复正常编辑
很多脚本里复制的 JSON 或 YAML,一旦没开 paste 就直接粘贴,缩进全塌,修复比重写还费劲。










