当前位置: 首页 > news >正文

vim常见操作

Vim 开发常用操作指南

目录

  • 模式切换
  • 光标移动
  • 编辑操作
  • 搜索和替换
  • 文件操作
  • 数字前缀
  • Visual模式
  • 撤销和重做
  • 编程常用
  • 高效组合技巧
  • 实用建议

模式切换

基本模式

命令 功能
Normal 默认模式,用于导航和命令
i 进入 Insert 模式(在光标前插入)
a 进入 Insert 模式(在光标后插入)
o 新建下一行并进入 Insert 模式
O 新建上一行并进入 Insert 模式
v 进入 Visual 模式(字符选择)
V 进入 Visual Line 模式(行选择)
Ctrl+v 进入 Visual Block 模式(块选择)
: 进入 Command 模式
ESC 返回 Normal 模式

光标移动

基本移动

命令 功能
h, j, k, l 左,下,上,右
w 下一个单词开头
b 上一个单词开头
e 当前单词结尾
0 行首
^ 行首第一个非空字符
$ 行尾
gg 文件开头
G 文件结尾

快速跳转

命令 功能
f{char} 跳转到行内下一个指定字符
F{char} 跳转到行内上一个指定字符
t{char} 跳转到行内下一个指定字符前
; 重复上次 f/F/t 搜索
, 反向重复上次 f/F/t 搜索
% 跳转到匹配的括号

行跳转

命令 功能
{number}G 跳转到指定行号
:{number} 跳转到指定行号
Ctrl+g 显示当前位置信息

编辑操作

删除

命令 功能
x 删除当前字符
dd 删除当前行
d{motion} 删除到指定位置
dw 删除到下一个单词
d$ 删除到行尾
d0 删除到行首
{number}dd 删除多行

复制和粘贴

命令 功能
yy 复制当前行
y{motion} 复制到指定位置
yw 复制单词
y$ 复制到行尾
p 在光标后粘贴
P 在光标前粘贴

替换和修改

命令 功能
r{char} 替换当前字符
R 进入替换模式
c{motion} 修改到指定位置
cw 修改单词
cc 修改整行
C 修改到行尾
s 删除字符并进入插入模式
S 删除行并进入插入模式

搜索和替换

搜索

命令 功能
/{pattern} 向前搜索
?{pattern} 向后搜索
n 下一个搜索结果
N 上一个搜索结果
* 搜索当前光标下的单词
# 反向搜索当前光标下的单词

替换

命令 功能
:s/old/new/ 替换当前行第一个匹配
:s/old/new/g 替换当前行所有匹配
:%s/old/new/g 替换全文所有匹配
:%s/old/new/gc 替换全文所有匹配(需确认)
:1,10s/old/new/g 替换1-10行的匹配

💾 文件操作

保存和退出

命令 功能
:w 保存
:q 退出
:wq 保存并退出
:q! 强制退出(不保存)
:x 保存并退出(如果有修改)
ZZ 保存并退出
ZQ 强制退出

文件管理

命令 功能
:e {file} 打开文件
:w {file} 另存为
:r {file} 读取文件内容到当前位置
:!{command} 执行外部命令

数字前缀

Vim的强大功能:几乎所有命令都可以加数字前缀

命令 功能
5j 向下移动5行
3dd 删除3行
2yy 复制2行
10x 删除10个字符
4w 向前移动4个单词

Visual模式

在 Visual 模式下的操作

命令 功能
d 删除选中内容
y 复制选中内容
c 修改选中内容
> 增加缩进
< 减少缩进
u 转换为小写
U 转换为大写

撤销和重做

命令 功能
u 撤销
Ctrl+r 重做
. 重复上次操作

编程常用

缩进

命令 功能
>> 增加当前行缩进
<< 减少当前行缩进
={motion} 自动缩进到指定位置
gg=G 自动缩进整个文件

注释(需要配置或插件)

命令 功能
gcc 切换当前行注释状态
gc{motion} 注释指定范围

括号匹配

命令 功能
% 跳转到匹配的括号
]] 下一个函数
[[ 上一个函数

高效组合技巧

常用组合

命令 功能 说明
ciw 修改整个单词 change in word
ci" 修改引号内内容 change in quotes
ci( 修改括号内内容 change in parentheses
di{ 删除大括号内内容 delete in braces
ya} 复制大括号及其内容 yank around braces

快速编辑

命令 功能
A 移动到行尾并进入插入模式
I 移动到行首并进入插入模式
o 在下一行插入
O 在上一行插入

实用建议

学习策略

  1. 从基础开始:先熟练掌握 hjkl 移动和基本编辑
  2. 逐步进阶:每天学习1-2个新命令
  3. 多练习:在实际编程中使用,形成肌肉记忆
  4. 避免方向键:强迫自己使用 hjkl
  5. 利用数字前缀:这是Vim效率的关键

Vim核心思想:动词+对象

Vim的强大之处在于动词+对象的组合:

动词 对象 组合 功能
d (删除) w (单词) dw 删除单词
c (修改) i" (引号内) ci" 修改引号内容
y (复制) ap (段落) yap 复制段落
v (选择) i{ (大括号内) vi{ 选择大括号内容

常用对象

  • w - 单词
  • s - 句子
  • p - 段落
  • " - 双引号内
  • ' - 单引号内
  • () - 小括号内/含括号
  • {} - 大括号内/含括号
  • [] - 方括号内/含括号
  • t - XML/HTML标签内

动作修饰符

  • i - 内部(inside)
  • a - 周围(around,包含边界)

示例

  • ci( - 修改括号内容(不包含括号)
  • ca( - 修改括号及内容(包含括号)

🎓 进阶练习

日常练习建议

  1. 禁用方向键:在配置中禁用,强制使用hjkl
  2. 每日一技:每天专门练习一个新命令
  3. 实际项目:在真实代码中使用Vim
  4. 速度测试:使用 vimtutor 或在线Vim练习网站

http://www.sczhlp.com/news/9944/

相关文章:

  • 可能是校内题单题解(20250811)
  • 无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测完美实现
  • FWT 快速沃尔什变换
  • GAS_Aura-Movement Input
  • 字符串常用方法
  • Linux常用工具
  • 8/11
  • 项目调试
  • C++小白修仙记_LeetCode刷题_算数运算
  • CF1774G Segment Covering
  • 高亮部分文字
  • 使用Python将中文语音翻译成英语音频 - 详解
  • wqs 二分学习笔记
  • 用位运算快速分解整数:从 LeetCode 2438 题谈起
  • 2025-08-11 闲话
  • 2025 暑假集训 Day7
  • SQL优化必备脚本:Oracle获取绑定变量的字面SQL文本
  • Nature Genetics | 解码免疫细胞动态遗传调控机制及其与疾病的关联
  • [PaperReading] Helix: A Vision-Language-Action Model for Generalist Humanoid Control
  • OI集训 Day26
  • RESTful 风格(详细介绍 + 案例实现)
  • 在WSL2中配置ADB隧道实现高效安卓渗透测试
  • 8月11日
  • 【Vulnhub】symfonos: 4 2 总结
  • 如何用 AI 智能体开启副业之路?零基础入门指南
  • 休息一天
  • 2025.08.11 杭电8
  • 提升LangChain开发效率:10个被忽视的高效组件,让AI应用性能翻倍
  • 更不是SaaS终结者
  • MD5加密算法详解:原理、实现与应用