Vi/Vim最独特的地方在于它的模态编辑——不同模式下相同的按键有不同的功能。这是新手最需要适应的概念。1. 正常模式(Normal Mode)
特点:这是Vim的默认模式,大部分命令在此模式下执行2. 插入模式(Insert Mode)
3. 命令行模式(Command Mode)
基础操作:从零开始使用Vim
#启动Vimvim filename.txt #编辑指定文件vim #启动Vim但不打开文件#在Vim中退出:q #退出(如果文件未修改):q! #强制退出,不保存修改:wq #保存并退出:x #保存并退出(同:wq)ZZ #正常模式下,保存并退出
插入文本:进入编辑状态
i # 在光标前插入a # 在光标后插入I # 在行首插入A # 在行尾插入o # 在当前行下方插入新行O # 在当前行上方插入新行
移动光标:高效导航
# 基本移动h # 向左移动j # 向下移动k # 向上移动l # 向右移动# 按单词移动w # 移动到下一个单词开头e # 移动到当前单词结尾b # 移动到上一个单词开头# 行内移动0 # 移动到行首^ # 移动到行首第一个非空白字符$ # 移动到行尾# 文档内移动gg # 移动到文档开头G # 移动到文档末尾:n # 跳转到第n行,如:50跳转到第50行Ctrl+f # 向下翻页Ctrl+b # 向上翻页
编辑操作:复制、粘贴、删除
# 删除操作x # 删除光标处的字符dd # 删除当前行dw # 删除一个单词d$ # 删除从光标到行尾d0 # 删除从光标到行首# 复制操作yy # 复制当前行yw # 复制一个单词y$ # 复制从光标到行尾# 粘贴操作p # 在光标后粘贴P # 在光标前粘贴# 撤销与重做u # 撤销上一次操作Ctrl+r # 重做(恢复撤销的操作)
进阶操作:提升编辑效率
搜索与替换
# 搜索/pattern # 向下搜索pattern?pattern # 向上搜索patternn # 跳转到下一个匹配项N # 跳转到上一个匹配项# 替换:%s/old/new/g # 全局替换所有old为new:%s/old/new/gc # 全局替换,每次替换前确认:5,10s/old/new/g # 替换第5到10行的old为new
可视模式:选择文本块
v # 进入字符可视模式(按字符选择)V # 进入行可视模式(按行选择)Ctrl+v # 进入块可视模式(按矩形块选择)# 在可视模式下,可以使用移动命令扩展选择区域# 选择后可以执行y(复制)、d(删除)等操作
多文件编辑
# 打开多个文件vim file1.txt file2.txt # 同时打开多个文件# 在文件间切换:n # 切换到下一个文件:N # 切换到上一个文件:files # 查看打开的文件列表# 分屏编辑:sp filename # 水平分割窗口并打开文件:vsp filename # 垂直分割窗口并打开文件Ctrl+w w # 在窗口间切换Ctrl+w h/j/k/l # 向左/下/上/右切换窗口:q # 关闭当前窗口
Vim配置与插件:个性化你的编辑器
基本配置(~/.vimrc)
" 开启语法高亮syntax on" 显示行号set number" 显示相对行号(方便使用跳转命令)set relativenumber" 高亮当前行set cursorline" 设置缩进set tabstop=4 " Tab键宽度为4个空格set shiftwidth=4 " 自动缩进宽度为4个空格set expandtab " 将Tab转换为空格" 搜索时忽略大小写set ignorecase" 输入搜索模式时,实时高亮匹配项set incsearch" 显示匹配的括号set showmatch" 启用鼠标支持(可选)set mouse=a
常用插件推荐
虽然Vim本身功能强大,但插件可以进一步提升效率:Vundle 或 vim-plug:插件管理器NERDTree:文件浏览器ctrlp.vim:文件模糊查找vim-airline:状态栏美化YouCompleteMe:代码补全
实用技巧与工作流
测试工程师的Vim使用场景
#1. 快速查看和编辑配置文件vim /etc/nginx/nginx.conf#2. 查看和分析日志文件vim /var/log/app/error.log#3. 编辑脚本文件vim automation_script.sh#4. 快速编辑多个文件vim test_case1.txt test_case2.txt test_case3.txt
高效编辑技巧
# 批量注释/取消注释1. 进入可视块模式:Ctrl+v2. 选择要注释的行3. 按I(大写i)进入插入模式4. 输入注释符号(如#)5. 按Esc,所有选中行都会被注释# 重复上次操作. #重复上一次修改操作# 执行外部命令:!ls #执行ls命令并查看结果:!python script.py #执行Python脚本#读写文件内容:r filename #将文件内容插入到光标下方:w newfile.txt #将当前内容另存为新文件
Vim内置教程
Vim自带了一个非常好的交互式教程,强烈建议新手使用:vimtutor #在终端中运行vimtutor开始学习# 这个教程大约需要30分钟完成,涵盖了Vim的大部分基础操作。
Vim与其他工具结合
与Shell命令结合
# 将命令输出插入到Vim中:r !date # 插入当前日期:r !ls -la # 插入当前目录文件列表# 将Vim中的文本传递给Shell命令:%!sort # 对全文进行排序:5,10!grep "error" # 对5-10行执行grep
差异查看与合并
vim -d file1.txt file2.txt # 比较两个文件的差异vimdiff file1.txt file2.txt # 同上,可视化差异比较
在diff模式下,可以使用:]c:跳转到下一个差异点[c:跳转到上一个差异点do:将另一个文件的修改应用到当前文件dp:将当前文件的修改应用到另一个文件
总结
Vi/Vim的学习曲线虽然陡峭,但一旦掌握,它将极大提升你在Linux环境下的工作效率。对于测试工程师来说,不必追求精通Vim的所有高级功能,但应该掌握基础编辑、搜索替换、多文件操作等核心技能。记住:Vim就像一门乐器,需要持续练习。从今天开始,尝试用Vim完成所有的文本编辑任务,几周后你就会发现自己已经离不开它了!练习建议:打开vimtutor,每天花15分钟练习,坚持一周,你会发现自己的编辑效率有了质的飞跃。