vim
summary
Vim 常用快捷键大全
Vim 是一个强大的文本编辑器,掌握基本快捷键能极大提升编辑效率。以下是常用的 Vim 快捷键,按功能分类整理。
📌 1. 模式切换
快捷键 | 作用 |
---|---|
i | 进入 插入模式(光标前插入) |
I | 进入 插入模式(光标移到行首再插入) |
a | 进入 插入模式(光标后插入) |
A | 进入 插入模式(光标移到行尾再插入) |
o | 在当前行下 新建一行 并进入插入模式 |
O | 在当前行上 新建一行 并进入插入模式 |
Esc / Ctrl + [ | 退出 插入模式,回到普通模式 |
v | 进入 可视模式(选择字符) |
V | 进入 可视模式(选择整行) |
Ctrl + v | 进入 列块可视模式(选列操作) |
:q | 退出 Vim |
:q! | 强制退出(不保存) |
:w | 保存文件 |
:wq / ZZ | 保存并退出 |
📌 2. 光标移动
快捷键 | 作用 |
---|---|
h | 左移一个字符 |
l | 右移一个字符 |
j | 下移一行 |
k | 上移一行 |
w | 移动到 下一个单词首字母 |
e | 移动到 当前/下一个单词末尾 |
b | 移动到 上一个单词首字母 |
0 | 移动到 行首 |
^ | 移动到 行首第一个非空字符 |
$ | 移动到 行尾 |
gg | 移动到 第一行 |
G | 移动到 最后一行 |
:n | 跳转到 第 n 行(如 :10 跳转到第 10 行) |
Ctrl + d | 向下翻半屏 |
Ctrl + u | 向上翻半屏 |
Ctrl + f | 向下翻一整页 |
Ctrl + b | 向上翻一整页 |
📌 3. 复制、剪切和粘贴
快捷键 | 作用 |
---|---|
yy (Y ) | 复制 当前行 |
dd | 剪切 当前行 |
x | 删除 当前字符(相当于剪切一个字符) |
D | 删除 从光标到行尾的内容 |
p | 粘贴 到光标后(或下一行) |
P | 粘贴 到光标前(或上一行) |
y{motion} | 复制指定范围(如 y$ 复制到行尾,yw 复制一个单词) |
d{motion} | 剪切指定范围(如 d$ 剪切到行尾,dw 剪切一个单词) |
:reg | 查看所有剪贴板内容 |
📌 4. 撤销、重做
快捷键 | 作用 |
---|---|
u | 撤销 上一步操作 |
Ctrl + r | 重做 上一步撤销 |
📌 5. 查找和替换
快捷键 | 作用 |
---|---|
/keyword | 向下查找 keyword |
?keyword | 向上查找 keyword |
n | 下一个匹配 |
N | 上一个匹配 |
:%s/old/new/g | 全局替换 old → new |
:%s/old/new/gc | 全局替换(逐个确认) |
📌 6. 代码缩进
快捷键 | 作用 |
---|---|
>> | 右缩进 当前行 |
<< | 左缩进 当前行 |
V + > | 选中多行后 右缩进 |
V + < | 选中多行后 左缩进 |
= | 自动格式化当前行 |
gg=G | 格式化整个文件 |
📌 7. 窗口和标签管理
快捷键 | 作用 |
---|---|
:sp | 水平分割 新窗口 |
:vsp | 垂直分割 新窗口 |
Ctrl + w + h | 跳到左侧窗口 |
Ctrl + w + l | 跳到右侧窗口 |
Ctrl + w + j | 跳到下面窗口 |
Ctrl + w + k | 跳到上面窗口 |
:tabnew | 新建标签页 |
gt | 下一个标签页 |
gT | 上一个标签页 |
📌 8. 其他快捷键
快捷键 | 作用 |
---|---|
. | 重复 上次命令 |
Ctrl + n | 自动补全 |
J | 合并 当前行和下一行 |
:! command | 执行 shell 命令(如 :!ls ) |
:w !sudo tee % | 以 root 权限保存文件 |
🚀 提高 Vim 效率的小技巧
启动 Vim 直接进入插入模式
1
vim +"startinsert"
启用行号
在 Vim 内输入::set number
启用语法高亮
:syntax on
高亮搜索结果
:set hlsearch
显示匹配括号
:set showmatch
🎯 总结
- 模式切换:
i
进入插入模式,Esc
退出 - 光标移动:
h/j/k/l
,w/e/b
单词移动,gg/G
头尾跳转 - 编辑操作:
yy/dd/p
复制剪切粘贴,u
撤销,Ctrl + r
重做 - 查找替换:
/word
搜索,:%s/old/new/g
替换 - 窗口管理:
:sp
/:vsp
分屏,Ctrl + w + hjkl
切换
Vim 需要不断练习才能熟练掌握,建议多使用 :help [command]
查看详细帮助,例如:
:help yank
:help visual
💡 熟练 Vim,可以大幅提高编辑效率! 🚀
代码补全
vim自带的代码补全 (7.0以上版本)
对于在vim中前面已经输入过的字符串,只要再次输入前几个字符,然后按Ctrl+n 即可自动补全。
Ctrl+p 补全前面申明过的变量或者函数名。
前面声明了结构体T,想在输入T.时弹出成员供选择,只需在用之前按一下:CTRL+F12
ctrl+x ctrl+o(智能补全)
ctrl+x ctrl+f(补全文件名)有待验证
批量注释、选择
快速删除
在Vim中删除整行,可以使用以下几种方法:
dd:删除当前行。
ndd:删除从当前行开始的n行。例如,3dd会删除当前行及其下两行,共三行。
D:删除从光标位置到行尾的内容。
d$:与D相同,删除从光标位置到行尾的内容。
d0:删除从光标位置到行首的内容。
:n,d:删除第n行。例如,:5d会删除第5行。
:n,md:删除从第n行到第m行的内容。例如,:5,10d会删除第5行到第10行的内容。
在执行这些命令后,被删除的行会被存储在Vim的剪贴板中,可以使用p(粘贴到光标下方)或P(粘贴到光标上方)来恢复这些内容。
请注意,Vim中的命令区分大小写,因此d和D是不同的命令。在使用这些命令时,确保你处于Vim的正常模式(按下Esc键可以返回正常模式)。
doubao
在 Vim 编辑器里,有多种方法可实现选择多行并删除的操作,下面为你详细介绍:
可视模式删除
可视模式是 Vim 里用于可视化选择文本的模式,有三种不同类型,即可视模式(字符选择)、可视行模式(整行选择)和可视块模式(矩形块选择),可根据需求选择合适的模式。
可视行模式(适合整行删除)
- 把光标移到要删除的首行。
- 按下
V
(大写的 V)进入可视行模式,此时当前行被高亮显示。 - 使用方向键(如
↓
或↑
)上下移动光标,来选择要删除的多行。 - 选择好要删除的行后,按下
d
键,所选的行就会被删除。
示例
假设你有如下文本:
line 1
line 2
line 3
line 4
line 5
若要删除第 2 行到第 4 行,操作步骤如下:
- 把光标移到第 2 行。
- 按下
V
进入可视行模式。 - 按两次
↓
键,此时第 2 行到第 4 行被高亮显示。 - 按下
d
键,所选的行就会被删除。
可视模式(适合非整行删除)
- 把光标移到要删除区域的起始位置。
- 按下
v
(小写的 v)进入可视模式。 - 使用方向键移动光标,选择要删除的文本区域。
- 选择好后,按下
d
键,所选文本会被删除。
行号范围删除
若你知道要删除的行号范围,可直接使用行号范围来删除多行。
命令格式
:起始行号,结束行号d
其中,起始行号
和 结束行号
是要删除的行的编号,d
代表删除操作。
示例
- 删除第 3 行到第 6 行:
:3,6d
- 删除当前行到第 10 行:
:.,10d
这里的 .
表示当前行。
- 删除从第 5 行到文件末尾的所有行:
:5,$d
其中 $
代表文件的最后一行。
快速删除指定行数
如果你想从当前行开始快速删除指定数量的行,可以使用 ndd
命令,其中 n
是要删除的行数。
示例
- 从当前行开始删除 3 行:
3dd
这些方法可以帮助你在 Vim 中高效地选择多行并删除。你可以根据实际情况选择最合适的方法。
文件比较
如何用 vim 文本编辑器比较两文件 - klchang - 博客园
|
|
主题、美化
设置vim 永久显示行号_vim 显示行号_electrocrazy的博客-CSDN博客
检索、跳转
- 使用
/
进行搜索:- 按下
/
后,输入要搜索的内容,然后按 Enter 键。例如:/search_term
- 按下
n
跳转到下一个匹配项,按下N
跳转到上一个匹配项。
- 按下
vim翻页
vim翻半页
ctr-d
:向后翻半页ctr-u
:向前翻半页
vim整整页
ctr+f
:向后翻整页ctr+b
:向前翻整页
vim跳转
vim跳首行
g+g
:1
第二种方式需要输入:
先按shift+:
再输入1
vim跳尾行
shift+g
:$
第二种方式需要输入:
先按shift+:
再输入$
如何在Vim/Vi中使用搜索
https://www.myfreax.com/vim-search/#:~:text=Vim允许您使用 %2F (正,不是整个单词来查找。
撤销、回退
批量替换
在 Vim 中进行批量替换可以使用 :substitute 命令。以下是一个简单的示例:
|
|
解释一下:
%s: 表示在整个文件范围内进行替换。
old_text: 要查找的文本。
new_text: 要替换为的文本。
g: 表示全局替换,即每一行上所有匹配的文本都会被替换。
如果你只想替换每行的第一个匹配,可以省略 g:
:%s/old_text/new_text
如果你只想替换特定范围内的文本,可以在 : 命令中指定行范围。例如,替换从第 10 行到第 20 行的文本:
:10,20s/old_text/new_text/g
如果你要进行确认,可以在命令中添加 c 选项,这样每次替换时都会询问是否替换:
:%s/old_text/new_text/gc
这只是 Vim 替换的基础用法,Vim 提供了强大的正则表达式和其他选项,可以适应更复杂的替换需求。如果你有特定的替换模式或要求,可以查阅 Vim 文档或在 Vim 中使用 :help :substitute 进行详细了解。
其他文件操作
行号
取消显示
:set nonumber
查看隐藏符号
cat -A
:set list
:set nolist
:set invlist
FAQ
中文乱码
在 Ubuntu 中使用 vim
编辑文件时,如果中文显示乱码,通常是因为以下原因之一:
🚨 原因总结:
- 终端字符集(locale)不支持 UTF-8
- Vim 没有设置合适的编码
- 文件本身编码不是 UTF-8
- 使用的是
vim.tiny
,功能太简化,UTF-8 支持不完整
✅ 解决步骤如下:
✅ 1. 检查终端环境支持 UTF-8
在终端中运行:
|
|
你应该看到像这样的输出:
LANG=en_US.UTF-8
LC_ALL=
...
如果不是 UTF-8
,你可以通过以下方式修改:
|
|
然后重启终端或系统。
✅ 2. 检查 Vim 是否设置了正确编码
打开 .vimrc
配置文件(如果没有就创建):
|
|
添加以下内容:
set encoding=utf-8
set fileencodings=utf-8,gbk,gb2312,cp936
set termencoding=utf-8
这样 Vim 会:
- 使用 UTF-8 显示界面
- 优先尝试 UTF-8 打开文件,其次尝试 GBK 等中文编码
- 适配终端编码
✅ 3. 确保使用的是完整版本的 Vim
如果你用的是 vim.tiny
(功能简化,不支持中文好好显示),建议安装完整版:
|
|
或者 GUI 版本(带剪贴板支持):
|
|
✅ 4. 确认你的文件确实是 UTF-8 编码
用 file
命令检查编码:
|
|
输出示例:
文件名.txt: UTF-8 Unicode text
如果不是 UTF-8,可以用 iconv
转码:
|
|
💡小贴士:临时设置编码方式
你打开文件后发现乱码,可以用 Vim 命令行输入:
:set fileencoding=utf-8
:e!
或者尝试:
:e ++enc=gbk
:set fileencoding=utf-8 # 重新编码
:wq