Vim

记录一些常用的 vim 命令

帮助文档

  • vimtutor
    命令行直接运行,非vim编辑器内命令
  • :h
    vim内部命令

过渡阶段

  • :set mouse=a
    设置鼠标可区域选择,跟普通的编辑器一样可以进行拖选

基本操作

打开/切换文件

命令 功能
:e file_name:o file_name 打开文件
:args file_name 如果使用vim file1 file2 [filen]命令打开多个文件,就可以使用:args file_name命令在打开的文件之间切换
:buffers:ls:files 查看缓冲区中的文件列表
:bnext 切换到下一个缓冲区文件
:bpreviousbpre 切换到上一个缓冲区文件
:bfirst 切换到第一个缓冲区文件
:blast 切换到最后一个缓冲区文件
:bdelete file_name 删除缓冲区文件
:badd file_name 添加文件到缓冲区
<Ctrl> + z 回到shell(最小化vim)
fg(shell中命令) 在shell中输入fg即可回到最小化的vim中去
gf 跳转到当前光标下文件名对应的文件
<Ctrl> + ^ 跳转到上一个文件

退出/保存

命令 功能
:w 保存
:w! 强制保存,不退出vim
:q 退出
:q! 强制退出不保存
:wqZZ 保存并退出
:wq! 强制保存,并退出
:w file 将修改另存到file中,不退出vim
:e! 放弃所有修改,从上次保存文件开始再编辑命令历史

编辑

命令 功能
i/I 编辑
esc 退出编辑模式
u 撤销操作
<Ctrl> + r 重做(恢复被撤销的动作)
ccS 清空当前行并进入编辑模式
s 删除当前字符并进入编辑模式
r 替换当前字符(替换后不进入编辑模式)
R 持续替换字符(不进入编辑模式),替换一个光标自动移到下一个
[<Shift> +] v 可视化多选,<Shift> + v的话是行选
<ctrl> + v 可视化列选
. 重复上次操作
set filetype? 显示文件的filetype
<Ctrl> + a 加1
<crtl> + x 减1

排版

命令 功能
=- 格式化当前行代码
gg=G 格式化所有代码
:ce 居中
:le 居左
:re 局右
>> 向右缩进
<< 向左缩进

删除

命令 功能
x 删除当前字符
X 删除当前字符的前一个字符
dd 删除当前行
D /n$ 删除当前字符至行尾
d^ 删除当前字符至行首
dG 删除包含当前行及之后的全部行
cc 清空当前行
C 清空当前字符到行尾的字符

代码补全

命令 代码
<Ctrl> + p 往前搜索补全
<Ctrl> + n 往后搜索补全
<Ctrl> + e 取消补全
<Ctrl> + y 确定补全

移动

命令 功能
gg 跳转到首行
G 跳转到尾行
:nnG 跳转到第n行
o 在下一行插入
O 在上一行插入
wW 移动到下一个单词开头
bB 移动到上一个单词开头
eE 移动到下一个单词结尾
{ 下一段落
} 上一段落
M 跳转到文件内容的中部
H 跳转到文件内容的顶部
L 跳转到文件内容的底部
<Ctrl> + f 下一页
<Ctrl> + b 上一页
'0 返回上一次操作的位置
<Ctrl> + o 移动光标到上一个历史编辑位置
<Ctrl> + itab 移动光标到下一个历史编辑位置
gn 移动到选中元素结尾

复制/粘贴

命令 功能
y 复制
p 粘贴到下部
P 粘贴到上部
xX 剪切

高端点的操作

骚操作

命令 功能
vim -d file1 file2 对比文件不同之处

拖动功能

命令 功能
zz 将当前行定位到屏幕中间
zb 将当前行定位到屏幕底部
zt 将当前行定位到屏幕顶部

代码折叠

命令 功能
zf 创建折叠
zo 打开折叠
zc 关闭折叠
:mkview / :loadview 保存,载入折叠

窗口管理

命令 功能
:split [file_name]:sp [file_name] 水平分割
:vsplit [file_name]:vs [file_name] 垂直分割
<Ctrl> + w + h 将焦点移动到左边窗口
<Ctrl> + w + j 将焦点移动到下方窗口
<Ctrl> + w + k 将焦点移动到上方窗口
<Ctrl> + w + l 将焦点移动到右边窗口

更详细的教程:【vim】分割窗口、标签页与Quickfix窗口

Tab操作

命令 功能
:tabnew [++opt选项] [+cmd] 文件 创建指定文件的新tab
:tabc 关闭当前的tab
:tabo 关闭其他的所有tab
:tabs 查看所有打开的tab
:tabp 前一个tab
:tabn 后一个tab

转换文件编码和格式

命令 功能
:set fileformat unix dos mas 让换行符自由切换
:set fileencodings 检测打开文档编码的顺序,一般设置为utf-8、cp936
:set fileencoding 保存文档的编码,一般为utf-8
:set encoding vim本身界面的编码,一般和文档无关

搜索

命令 功能
f / F 当前行搜索,til,正向 / 反向
t / T 当前行搜索,until,正向 / 反向
;, 重复当前行搜索
/? 当前文件搜索,向上搜索 / 向下搜索
:grep -r / :!grep -r 跨文件搜索
n 下一个匹配内容
N 上一个匹配内容

替换指定字符

  • :s/target/replace[/g]

    • target:要被替换的内容
    • replace:替换的内容
    • 可选/g:表示替换当前行所有的需要被替换的内容,如不加这个参数则替换当前行第一个需要被替换的内容

    Example:

    • : s/a/b,将当前行的a替换为b
    • : s/a/b/g,将当前行所有的a替换为b
  • :n,$s/target/replace[/g]

    • n为数字表示从第n行开始到最后一行,当n.时表示从当前行开始
    • target:要被替换的内容
    • replace:替换的内容
    • 可选/g:表示替换每一行所有需要被替换的内容,如不添加则替换每一行的第一个需要被替换的内容

    Example:

    • : 2, $s/a/b:替换从第2行开始到最后一行的每一行的第一个ab
    • : 2, $s/a/b/g:替换从第2行开始到最后一行的每一行的所有ab
    • : ., $s/a/b:替换从当前行开始到最后一行的每一行的第一个ab

插件使用(在安装的前提下)

NERDTree

命令 功能
o 打开/关闭文件或目录
t 在新标签页中打开
T 在后台标签页打开
! 执行此文件
p 到上层目录
P 到根目录
K 到第一个节点
J 到最后一个节点
u 打开上层目录
m 显示文件系统菜单(添加、删除、移动操作)
? 帮助,再按一下关闭
q 关闭
r 刷新列表
i 水平分屏
s 垂直分屏

vim-commentary

快捷键 功能
gcc 注释当前行(普通模式下)
gc 注释当前选中内容(可视多选模式下)
gcap 注释当前所在段落
gcu 注释上一次注释的部分
gcgc 取消一组相邻的注释

One more thing

命令 功能
q: 查看在vim中使用的历史命令

参考文章

  1. vim-vide
  2. 【vim】分割窗口、标签页与Quickfix窗口
  3. vim 树形目录插件NERDTree安装及简单用法
  4. https://github.com/jaywcjlove/vim-web

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×