窗口
shell
:tabnew 新建窗口
g t 下一个窗口
g T 上一个窗口
# 调整高度
:resize/res 60/+5/-5 调整窗口高度
# 宽度
:vertical resize 80
命令
shell
; 重复上一个动作
:!! 重复上一条命令
:shell 运行shell
# run shell commands
## 1
C-z vim 后台运行
fg 调回vim
## 2
:!<cmd>
移动
行内移动
shell
h 左移一位
l 右移一位
0 行首
$ 行尾
^ 当前行的第一个非空白符位置
fx 移动当当前行的下一个x处
Fx 移动当当前行的上一个x处
tx 移动到x的左边一个位置
w 往后移动一个词
b 往前移动一个词
) 移动到下一个句子
( 移动到上一个句子
文件内移动
shell
<C-F> 向下移动一屏
<C-B> 向上移动一屏
G 移动到文件末尾
nG 移动到第n行
gg 文件首
H 移动光标到屏幕上部
M 移动光标到屏幕中部
L 移动光标到屏幕底部
* 移动到光标所在字符串的下个位置
# 移动到光标所在字符串的上个位置
/s 向后搜索字符串s
?s 向前搜索字符串s
ma 打标签,标签名为a
`a 跳转到标签a
`. 跳转到上次编辑的地方
滚动
shell
ctrl+b 向下滚动一页
ctrl+f 向上滚动一页
ctrl+u 向上滚动半页
ctrl+d 向下滚动半页
注意 ctrl+b 和 tmux 快捷键冲突
编辑
复制
shell
yy 拷贝当前行
{n}yy 拷贝 n 行
y$ 拷贝到行尾
y^ 拷贝到行首
yiw 拷贝词
# 复制一个当前单次
byw b: 到单次首; y: yank; w: for word
# 复制一定行数范围的文本
{no1}Gy{no2}
剪切/删除
shell
dd 剪切当前行
{n}dd 剪切 n 行
d$ 剪切到行尾
删除指定行
shell
# pattern 删除
:g/{pattern}/d # 删除所有包含 pattern 的行
:g!/{pattern}/d # 删除所有不包含 pattern 的行
# g! 等价与 v
:v/{pattern}/d # 删除所有不包含 pattern 的行
# 多个 pattern
:v/{pattern}\|{pattern}\|{pattern}/d # \| 或
# 示例
:g/profile/d
:g/^\s*$/d
:g!/^\s*"/d
:v/error\|warn\|fail/d
粘贴
shell
P 光标前插入
p 光标后插入
## command mode 粘贴内容
C-r" ": default register
使用系统粘贴命令导致的 indent 异常
shell
:set paste # 切换到粘贴模式
# 粘贴完后, 切换回来
:set nopaste
编辑
shell
i 从光标位置输入
查找替换
文件内查找
shell
# change to command mode
/{pattern}
# 下一个/上一个
n next
N previous
跨文件查找
shell
:vimgrep /{pattern}/g [file]
# :cd # 先设置当前工作路径
# :vimgrep /foobar/g ** # 查找所有文件
:cn[f] 下一个匹配[文件]
:cp[f] 上一个匹配[文件]
:cr/cla 回到开始/结束
:copen 打开匹配列表
统计有多少匹配
shell
:%s/{pattern}//gn
替换
shell
:%s/foo/bar/g
:5,10s/foo/bar/gc # with confirm
多行编辑
输入
shell
1. Enter Command Mode
2. Ctrl + V, Select Target Lines
3. Shift + I, Enter Normal Mode
4. Enter Texts
5. Esc, Done
删除
shell
1. Enter Command Mode
2. Ctrl + V, Select Rectangle Area
3. D, Delete Texts
多行注释
注释
shell
Esc
Ctrl + v
Shift + i (I)
# select multi lines
# input comments
Esc
取消注释
shell
Esc
Ctrl + v
# select
d / x
插件
NERDTree
目录
shell
# 目录
## NERDTree
r 刷新光标所在的目录
C 将根路径设置为光标所在的目录
u 设置上级目录为根路径
cd 设置当前工作路径
m 文件操作:复制、删除、移动、创建等
P 大写,跳转到当前根路径
p 小写,跳转到光标所在的上一级路径
x 收起当前打开的目录
X 收起所有打开的目录
打开文件
shell
o 在已有窗口中打开文件、目录或书签,并跳到该窗口
go 在已有窗口 中打开文件、目录或书签,但不跳到该窗口
t 在新 Tab 中打开选中文件/书签,并跳到新 Tab
T 在新 Tab 中打开选中文件/书签,但不跳到新 Tab
i 水平切分已有窗口并打开文件,并跳到该窗口
gi 水平切分已有窗口并打开文件,但不跳到该窗口
s 垂直切分已有窗口并打开文件,并跳到该窗口
gs 垂直切分已有窗口并打开文件,但不跳到该窗口