Vim 使用笔记

文件操作

快捷键说明
:q关闭文件
:qa关闭全部文件
:w保存修改
:wq / :x保存修改并且关闭文件
ZZ保存文件并且退出
:q! / ZQ直接退出不保存修改

退出输入模式

快捷键说明
Esc / <C-[>退出输入模式
<C-C>退出输入模式并中止当前命令

编辑

修改

快捷键说明
a在光标后附加文本
A从行尾开始附加文本
i在光标前插入文本
o在当前行的下一行插入新行
O在当前行的上一行插入新行
s删除当前字符并进入输入模式
S删除当前行并进入输入模式
C删除光标后的所有内容并进入输入模式
r替换一个字符
R进入替换模式
u撤销更改
<C-R>重做更改

剪贴板

快捷键说明
x删除当前字符
dd删除当前行(剪切)
yy复制当前行
p粘贴
P在光标前粘贴
"*p / "+p从系统剪贴板粘贴
"*y / "+y复制到系统剪贴板

可视模式

快捷键说明
v进入可视模式
V进入可视行模式
<C-V>进入可视块模式

在可视模式下

快捷键说明
d / x删除选中的文本
s替换选中的文本
y复制选中的文本

查看操作符或其他你可以执行的操作。

查找和替换

快捷键说明
:%s/foo/bar/g将文档中的所有 foo 替换为 bar

导航

方向移动

快捷键说明
h j k l左下上右(箭头键)
<C-U> / <C-D>向上/下滚动半页
<C-B> / <C-F>向上/下翻页

单词

快捷键说明
b / w前一个/下一个单词
ge / e前一个/下一个单词结尾

快捷键说明
0 (零)移动到行首
^移动到行首第一个非空字符
$移动到行尾

字符

快捷键说明
fc向前移动到字符 c
Fc向后移动到字符 c

文档

快捷键说明
gg移动到文档的第一行
G移动到文档的最后一行
:{number}移动到第 {number}
{number}G移动到第 {number}
{number}j向下移动 {number}
{number}k向上移动 {number}

窗口

快捷键说明
zz将当前行居中
zt将当前行移动到屏幕顶部
zb将当前行移动到屏幕底部
H移动到屏幕顶部
M移动到屏幕中间
L移动到屏幕底部

搜索

快捷键说明
n下一个匹配的搜索模式
N上一个匹配
*查找光标下的整个单词的下一个匹配
#查找光标下的整个单词的上一个匹配

操作符

使用方式

操作符可以让你对一定范围内的文本(由“动作”定义)进行操作,这些操作在普通模式下执行。

操作符动作
dw
操作符动作

操作符列表

快捷键说明
d删除
y复制
c修改(删除并插入)
>向右缩进
<向左缩进
=自动缩进
g~切换大小写
gU转换为大写
gu转换为小写
!通过外部程序过滤

查看 :help operator 获取更多信息。

示例

将操作符与动作结合使用。

快捷键说明
dd删除当前行
dw删除到下一个单词
db删除到单词的开头
2dd删除两行
dip删除文本对象(段落内部)
(在可视模式下)d删除选中的内容

查看 :help motion.txt 获取更多信息。

文本对象

使用方式

文本对象允许你对文本块(对象)内或周围的文本进行操作(使用操作符)。

操作符范围文本对象
vip
Operator[i]nside or [a]roundText object

文本对象列表

快捷键说明
p段落
w单词
s句子
[ ( { <一个 [](){}
' " `一个引号字符串
b一个括号块((
B一个大括号块({
t一个 XML 标签块

示例

快捷键说明
vip选择段落
vipipipip选择更多
yip复制段落内部
yap复制段落(包括换行符)
dip删除段落内部
cip修改段落内部

查看操作符以了解更多可以执行的操作。

对比

快捷键说明
gvimdiff file1 file2 [file3]在图形界面中比较文件差异

其他

标签页

快捷键说明
:tabedit [file]在新标签页中编辑文件
:tabfind [file]如果文件存在,在新标签页中打开
:tabclose关闭当前标签页
:tabs列出所有标签页
:tabfirst跳转到第一个标签页
:tablast跳转到最后一个标签页
:tabn跳转到下一个标签页
:tabp跳转到上一个标签页

折叠 (Folds)

快捷键说明
zo / zO打开折叠
zc / zC关闭折叠
za / zA切换折叠状态(打开/关闭)
zv打开当前行的折叠
zM关闭所有折叠
zR打开所有折叠
zm增加折叠层级(折叠更多内容)
zr减少折叠层级(展开更多内容)
zx更新折叠状态

大写字母的命令是递归的,例如 zO 是递归打开折叠。

导航 (Navigation)

快捷键说明
%跳转到最近的匹配符 {[()]}
[( [{ [<跳转到前一个 ( { <
])跳转到下一个匹配符
[m跳转到前一个方法的起始位置
[M跳转到前一个方法的结束位置

跳转 (Jumping)

快捷键说明
<C-O>返回到上一个位置
<C-I>前进到下一个位置
gf跳转到光标下的文件

计数器 (Counters)

快捷键说明
<C-A>增加数字
<C-X>减少数字

窗口 (Windows)

快捷键说明
z{height}<Cr>将窗口调整到 {height} 行的高度

标签 (Tags)

快捷键说明
:tag Classname跳转到 Classname 的第一个定义
<C-]>跳转到定义处
g]查看所有定义
<C-T>返回到上一个标签
<C-O> <C-I>前后跳转
:tselect Classname查找 Classname 的定义
:tjump Classname查找 Classname 的定义并自动选择第一个

大小写 (Case)

快捷键说明
~切换大小写(例如:Case => cASE)
gU转换为大写
gu转换为小写
gUU将当前行转换为大写(也可以用 gUgU
guu将当前行转换为小写(也可以用 gugu

这些操作可以在可视模式或普通模式下执行。

标记 (Marks)

| 快捷键 | 说明 | | — | — | | `^ | 光标在插入模式下的最后位置 | | `. | 当前缓冲区中最后一次更改的位置 | | `" | 最后一次退出当前缓冲区的位置 | | `0 | 最后编辑的文件中的位置 | | '' | 返回到当前缓冲区中跳转前的行 | | ` ` | 返回到当前缓冲区中跳转前的位置 | | [ | 返回到上次更改或复制的文本的开始位置 | | ] | 返回到上次更改或复制的文本的结束位置 | | < | 返回到上次可视模式选择的开始位置 | | > | 返回到上次可视模式选择的结束位置 | | `ma` | 将当前位置标记为 `a` | | a | 跳转到标记 a 的位置 | | ‘a | 跳转到标记 a 所在行的开头 | | d’a | 删除当前行到标记 a 所在行之间的内容 | | da| 删除当前位置到标记 `a` 之间的内容 | | `c'a` | 更改当前行到标记 `a` 所在行之间的内容 | |ya | 复制当前位置到标记 a 之间的内容 | | :marks | 列出所有当前标记 | | :delm a | 删除标记 a | | :delm a-d | 删除标记 a, b, c, d | | :delm abc | 删除标记 a, b, c` |

其他 (Misc)

快捷键说明
.重复上一个命令
]p根据当前缩进级别粘贴内容
:set ff=unix将 Windows 的行尾格式转换为 Unix 格式

命令行 (Command line)

快捷键说明
<C-R><C-W>将当前单词插入命令行
<C-R>"从 “ 寄存器中粘贴内容
<C-X><C-F>在插入模式下自动完成路径

文本对齐 (Text alignment)

:center [width]  # 居中对齐指定宽度
:right [width]   # 右对齐指定宽度
:left            # 左对齐

参见 :help formatting

计算器 (Calculator)

快捷键说明
<C-R>=128/2显示计算结果:如‘64’

在插入模式下执行。

以错误状态退出 (Exiting with an error)

:cq
:cquit

功能类似于 :qa,但会抛出一个错误。适用于中止 Git 命令等情况。

拼写检查 (Spell checking)

快捷键说明
:set spell spelllang=en_us启用美式英语拼写检查
]s移动到光标后下一个拼写错误的单词
[s移动到光标前上一个拼写错误的单词
z=为光标下或光标后的单词建议拼写
zg将单词添加到拼写列表
zw将单词标记为错误拼写
zu / C-X (插入模式)从拼写文件中为光标下的错误单词建议替代词

参见 :help spell

相关链接


回到顶部

Copyright © 2017-2024 1px.run 像素教程 Distributed by an MIT license.

Site updated at 2024-12-20 08:28