文章目录
- 插入模式
- 光标移动
- 拷贝/粘贴/删除/撤销
- 块操作
- 分屏
- 代码缩进
- 命令组合使用
- 其他
- PowerVim
前言:本文内容大部分摘抄自酷壳和博客园 – CoolShell – 陈皓 博客园 – 易先讯
插入模式
a
→ 在光标后插入o
→ 在当前行后插入一个新行O
→ 在当前行前插入一个新行cw
→ 替换从光标所在位置后到一个单词结尾的字符
光标移动
0
→ 数字零,到行头$
→ 到本行行尾gg
→ 到第一行G
→ 到最后一行:N
→ 到第N行w
→ 到下一个单词的开头e
→ 到下一个单词的结尾%
: 匹配括号移动,包括(
,{
,[
(实用)*
和#
: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个) (实用)- /pattern:向下查找匹配指定模式的文本,按 n 查找下一个匹配项,按 N 查找上一个匹配项 (实用)
fa
→ 到下一个为a的字符处,你也可以 fs 到下一个为 s 的字符
拷贝/粘贴/删除/撤销
-
dd
→ 删除当前行,并把删除的行存到剪贴板里 -
ndd:剪切从光标所在行开始的 n 行
-
d$:剪切从光标所在位置到行末的文本
-
dG:剪切从光标所在行到文件末尾的文本
-
v 进入可视模式,移动光标选择文本,然后按 d 剪切选中的文本 (实用)
可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等
-
yy
→ 拷贝当前行当行于ddP
-
y 的其他操作通 dd
-
p
→ 粘贴剪贴板 -
x
→ 删当前光标所在的一个字符 -
u
→ 撤销操作 -
Ctrl+r
→ 撤销 “撤销操作”,相当于保持不变
块操作
块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]
0
→ 到行头<C-v>
→ 开始块操作<C-d>
→ 向下移动 (你也可以使用 hjkl 来移动光标,或是使用%,或是别的)I-- [ESC]
→ I 是插入,插入“--
”,按ESC键来为每一行生效,可以在行内的任意位置生效。A-- [ESC]
→ 在每一行的行后插入
分屏
:split
→ 创建分屏 (:vsplit
创建垂直分屏)<C-w><dir>
: dir就是方向,可以是hjkl
或是 ←↓↑→ 中的一个,其用来切换分屏。
代码缩进
- ctrl+v 加入可视化操作,选择代码块,然后:
J
→ 把所有的行连接起来(变成一行)<
或>
→ 左右缩进=
→ 自动给缩进
命令组合使用
你一定要记住光标的移动,因为很多命令都可以和这些移动光标的命令连动。很多命令都可以如下来干:
例如 0y$
命令意味着:
0
→ 先到行头y
→ 从这里开始拷贝$
→ 拷贝到本行最后一个字符
你可可以输入 ye
,从当前位置拷贝到本单词的最后一个字符。
你也可以输入 y2/foo
来拷贝2个 “foo” 之间的字符串。
其他
.
→ (小数点) 可以重复上一次的命令- N → 重复某个命令N次
gU
(变大写)gu
(变小写)
PowerVim
原生的 vim 比较难用,我们需要对其进行配置,但 Vim 的配置项多且较为复杂,因此在这里我推荐代码随想录的 PowerVim,可以对 Vim 进行一键配置。
PowerVim – GitHub
PowerVim – Gitee
PowerVim 相关快捷键如下
正常模式下的快捷键(非插入模式)
- ;n // 打开文件目录树显示在屏幕左侧
- ;m // 打开当前函数和变量目录树显示在屏幕右侧
- ;h // 光标移动到左窗口
- ;l // 光标移动到右窗口
- ;k // 光标移动到上窗口
- ;j // 光标移动到下窗口 以上四个快捷键特别是打开多个窗口情况下。使用这个快捷键组合非常实用
- ;w // 保存文件
- ;u // 向上翻半屏
- ;d // 向下翻半屏
- ;1 // 光标快速移动到行首
- ;2 // 光标快速移动到行末
- ;a // 快速切换.h和cpp文件,写C++的时候很方便
- ;e // 打开一个新文件
- ;z // 切回shell交互命令,输入fg在切回vim,非常实用
- ;s // 水平分屏,并打开文件目录选取想打开的文件,如果想新建文件,;e 就好
- ;v // 竖直分屏,并打开文件目录选取想打开的文件,如果想新建文件,;e 就好
- ;fw // 查找项目内关键字,前提是你的系统已经按照了ACK
- ;ff // 查找项目内文件名
- ;gt // 跳转到变量或者函数定义的地方,前提是安装ctags,并且在在PowerVim输入 ;tg命令 Jump to the definition of the keyword where the cursor is located, but make sure you have make ctags
- ;gr // 跳回,对应着;gt
- ;tg // 对当前目录打ctag
- ;y // 保存当前选中的目录到系统剪切板,前提是vim支持系统剪切板的寄存器
- ;gg // 按顺序光标跳转各个窗口
- ;t // 在输入一个字符,则按照这个字符整体对齐
以下快捷键是不用;的,直接在 非插入模式 下输入
- tb // 插入表格
- e // 快速删除光标所在的词
- tabc // 关闭当前tab,可以用:tabnew来打开一个新的tab Close tab, of course you should :tabnew a file first.
- F1 // 编译并运行C++文件,自己写的C++例子的时候一键编译。前提手动在当前目录建一个bin文件夹,这是用来存放编译产生的执行文件
- F1 // 编译Java文件
- F2 // 运行Java编译的class文件,一般如果要编译并运行Java文件 按F1编译,在按F2运行
- gc // 快速注释选中的块(是visual模式下选中的块)
- gcc // 快速当前行
- { // 光标向上移动一个代码块
- } // 光标向下移动一个代码块
- di( // 删除括号里的内容
- di{ // 删除花括号里的内容