vim #
bash
vim:
-R readonly
-m no modify (disable write)
-n no swap file (memory only)
vim -R FILE (view FILE)
vim -d FILE1 FILE2 (vimdiff FILE1 FILE2)
Normal模式 #
跳转 #
bash
# 跳转到第一行/最后一行
gg/G
# 跳转到下一行/上一行
j/k
# 跳转到下三行
3j
# 跳转到下一行(屏幕行,非缓冲行)
gj
# 跳转到下三行(屏幕行,非缓冲行)
3gj
缩进 #
bash
# 当前行自动缩进
==
# 接下来5行自动缩进
5==
# 当前行到最后一行自动缩进
=G
# 全局自动缩进(可分为两部分独立执行,即先`gg`定位到第一行,再执行`=G`)
gg=G
指令 #
replace #
bash
# 替换一次
:s/aaa/bbb/
# 1到100行替换
:1,100s/aaa/bbb/g
# 全局替换
:%s/aaa/bbb/g
write #
bash
# 保存文件
:w[rite]
# 另存为(`:w %` 等同于 `:w`,%表示当前文件路径)
:w target-file
# 保存文件(忽略只读属性)
:w!
# 保存后退出
:wq
# 以root身份进行保存
:w !sudo tee %
# 以另一用户身份保存到指定文件
:w !sudo -u bob tee target-file
# 查看当前有哪些变更未保存(即文件内容与缓冲内容进行比较,diff命令中的`-`参数表示从标准输入中读取内容)
:w !diff % -
# 其他复杂用法(write指令本质上就是输出当前缓冲内容到文件或标准输出)
:w !grep -i apple | awk '{print $2}' | tee target-file
edit #
bash
# 重新加载当前文件内容
:e[dit]
cd, pwd #
bash
# 变更当前工作目录
:cd target-dir
# 变更当前工作目录为用户主目录
:cd
# 显示当前工作目录
:pwd
vimgrep #
bash
# 查找内容
:vimgrep /pattern/[g][j] files...
# g Search one, not all
# j No jump if matches
# 打开帮助文档
:help vimgrep
# 快速跳转下一处/上一处
:cn[ext]
:cp[revious]
# 显示结果列表
:cl[ist]
# 打开快速跳转列表
:cw[indow]
快捷键 #
bash
# 删除前一个单词(仅Insert模式下)(相当于Normal模式下的`db`)
ctrl-w
# 删除前一个字符(仅Insert模式下)
ctrl-h
# 删除当前行光标前所有字符(仅Insert模式下)(相当于Normal模式下的`d0`)
ctrl-u
# 删除当前行光标后所有字符(仅Insert模式下)(相当于Normal模式下的`d$`)
ctrl-k
# 光标后退/前进:
ctrl-o
ctrl-i
# 选择左/右窗口
ctrl-w, l
ctrl-w, h
# 选择另一个窗口
ctrl-w, w
# 折叠/取消折叠行
z, c
z, o
# 跳转下/上一个差异(仅Diff模式下)
], c
[, c
# 获取/放置光标所在行的差异(仅Diff模式下)
d, o
d, p
# 更新差异视图(仅Diff模式下)
:diffu
:diffupdate
设置 #
bash
# 设置是否将tab缩进转换为空格
:set [no]expandtab
# 显示/隐藏行号
:set [no]nu[mber]
# 打开/关闭搜索高亮
:set [no]hlsearch
# 打开/关闭粘贴模式
:set [no]paste
Tips #
搜索选中的内容 #
- 按v进入视图模式选择文本,按y复制内容或按x剪切内容。
- 在Normal模式下输入/,再输入ctrl-r,最后输入双引号,注意不是单引号,将剪贴板中的内容填到/后面,这样就可以搜索了。