Vim是我们在Linux日常工作中不可或缺的文本编辑器。它强大的功能和高效的编辑方式可以极大提升工作效率。本文将全面解析Vim的各种操作指令,从基础操作到高级技巧。
一、Vim模式解析
Vim是一个模式化 编辑器,理解不同模式是掌握Vim的关键:
普通模式(Normal mode) :默认模式,用于导航和操作文本插入模式(Insert mode) :用于输入文本(按i
进入)可视模式(Visual mode) :用于选择文本(按v
进入)命令行模式(Command-line mode) :执行命令(按:
进入)
二、基础移动指令
1. 字符级移动
指令 功能 h
左移一个字符 j
下移一行 k
上移一行 l
右移一个字符
2. 单词级移动
指令 功能 w
移动到下一个单词开头 b
移动到上一个单词开头 e
移动到当前单词末尾 W
移动到下一个空白分隔词开头 B
移动到上一个空白分隔词开头
3. 行级移动
指令 功能 0
移动到行首 ^
移动到行首第一个非空白字符 $
移动到行尾 gg
移动到文件第一行 G
移动到文件最后一行 :[n]
跳转到第n行(如:10
)
三、编辑操作指令
1. 基本编辑
指令 功能 i
在光标前插入 a
在光标后插入 I
在行首插入 A
在行尾插入 o
在当前行下方新建一行 O
在当前行上方新建一行 x
删除当前字符 dd
删除当前行 yy
复制当前行 p
粘贴到光标后 P
粘贴到光标前 u
撤销上一步操作 Ctrl+r
重做
2. 高级编辑
指令 功能 cw
修改从光标到单词结尾 ci"
修改引号内的内容 ct[char]
修改直到指定字符前的内容 >>
向右缩进当前行 <<
向左缩进当前行 guu
当前行转为小写 gUU
当前行转为大写
四、搜索与替换
1. 搜索
指令 功能 /pattern
向前搜索pattern ?pattern
向后搜索pattern n
跳转到下一个匹配项 N
跳转到上一个匹配项 *
搜索当前光标下的单词
2. 替换
指令 功能 :s/old/new
替换当前行第一个old为new :s/old/new/g
替换当前行所有old为new :%s/old/new/g
替换全文所有old为new :%s/old/new/gc
替换全文所有old为new(需确认)
五、窗口与分屏操作
1. 窗口分割
指令 功能 :sp [file]
水平分割窗口(可指定文件) :vsp [file]
垂直分割窗口(可指定文件) Ctrl+w w
在窗口间循环切换 Ctrl+w h/j/k/l
切换到左/下/上/右窗口 Ctrl+w c
关闭当前窗口
2. 标签页操作
指令 功能 :tabnew
新建标签页 gt
切换到下一个标签页 gT
切换到上一个标签页 :tabm [n]
移动当前标签页到第n位置
六、寄存器与宏
1. 寄存器使用
Vim有多个寄存器用于存储文本:
指令 功能 "ayy
复制当前行到寄存器a "ap
粘贴寄存器a的内容 "+y
复制到系统剪贴板 "+p
从系统剪贴板粘贴
2. 宏录制
指令 功能 qa
开始录制宏到寄存器a q
停止录制 @a
执行寄存器a中的宏 @@
重复执行上一次执行的宏
七、高级技巧
1. 文本对象操作
Vim的强大之处在于可以操作文本对象:
指令 功能 diw
删除当前单词 daw
删除当前单词及空格 ci(
修改括号内的内容 yit
复制XML/HTML标签内的内容
2. 批量操作
指令 功能 :g/pattern/d
删除所有包含pattern的行 :v/pattern/d
删除所有不包含pattern的行 :10,20s/^/#/
在10-20行行首添加#注释
3. 外部命令集成
指令 功能 :!command
执行shell命令 :r !command
插入命令输出到当前光标位置 :w !sudo tee %
保存只读文件(需要sudo权限)
八、Vim配置技巧
在~/.vimrc
中添加以下常用配置:
" 显示行号
set number" 语法高亮
syntax on" 自动缩进
set autoindent" 显示命令
set showcmd" 搜索时忽略大小写
set ignorecase" 高亮搜索
set hlsearch" 设置Tab为4个空格
set tabstop=4
set shiftwidth=4
set expandtab" 启用鼠标支持
set mouse=a
九、实用插件推荐
Vundle :插件管理器NERDTree :文件浏览器CtrlP :快速文件查找vim-airline :状态栏美化vim-fugitive :Git集成YouCompleteMe :代码补全
十、学习资源
内置教程 :终端输入vimtutor
帮助系统 :在Vim中输入:help
在线资源 : Vim官方文档:https://www.vim.org/docs.php Vim Adventures:https://vim-adventures.com/ Open Vim:https://www.openvim.com/
结语
Vim的学习曲线虽然陡峭,但一旦掌握,它将为您带来前所未有的编辑效率。建议从基础指令开始,逐步掌握更高级的功能。记住,Vim的精髓在于"编辑思考",而不是单纯的按键记忆。