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

原生Vim操作大全

Vim模式

  1. ​普通模式(Normal mode)​​ - 默认模式,用于导航和操作文本
  2. ​插入模式(Insert mode)​​ - 用于输入文本
  3. ​可视模式(Visual mode)​​ - 用于选择文本
  4. ​命令行模式(Command-line mode)​​ - 用于执行命令

模式切换

  1. 普通模式 -> 插入模式

    • i - 在光标前进入插入模式
    • I - 在行首进入插入模式
    • a - 在光标后进入插入模式
    • A - 在行尾进入插入模式
    • o - 在当前行下方新建一行并进入插入模式
    • O - 在当前行上方新建一行并进入插入模式
    • c - 删除选中字符并插入
    • cc - 删除当前行并插入
    • C - 删除到行尾并插入
    • s - 删除当前/选中字符并插入,删除当前字符并进入插入模式时等价于cl
    • S - 等价于cc
  2. 普通模式 -> 可视模式

    • v - 进入字符可视模式
    • V - 进入行可视模式
    • Ctrl+v - 进入块可视模式
  3. 普通模式 -> 命令行模式

    • : - 进入命令行模式
    • 执行外部命令(原生)
      • :!<cmd> - 执行shell命令
      • :r !<cmd> - 插入命令输出
      • :r <file> - 插入文件内容
    • 选项设置(原生)
      • :set all - 查看所有选项
      • :set <option> - 开启选项
      • :set no<option> - 关闭选项
      • :set <option>? - 查看选项值
      • :set <option>=<value> - 设置选项值
  4. 其余模式 -> 普通模式

    • ESC- 返回普通模式

移动操作

基本移动

  • j - 下移
  • J - 将两行文本连接成一行
  • k - 上移
  • l - 右移
  • h - 左移
  • w - 移动到下一个词开头
  • W - 移动到下一词开头(以空格划分词)
  • e - 移动到下一个词末尾
  • E - 移动到下一个词末尾(以空格划分词)
  • b - 移动到上一个词开头
  • B - 移动到上一个词开头(以空格划分词)

行内移动

  • 0 - 移动到行首
  • $ - 移动到行尾
  • ^ - 移动到行首第一个非空白字符
  • % - 移动到配对的字符处
  • f<char> - 移动到当前行下一个<char>字符
  • F<char> - 移动到当前行上一个<char>字符
  • t<char> - 移动到当前行下一个<char>字符前
  • T<char> - 移动到当前行上一个<char>字符后
  • ; - 重复上次f/F/t/T命令
  • , - 反向重复上次f/F/t/T命令
  • 折行内移动
    • gj - 移动折行视觉上的下一行
    • gk - 移动到折行视觉上的上一行
    • g0 - 移动到折行视觉上的开头
    • g$ - 移动到折行视觉上的末尾
    • g^ - 移动到折行视觉上的第一个非空字符

跨行移动

  • gg - 移动到文件开头
  • g, - 移动到最近一次编辑位置(原生)
  • G - 移动到文件末尾
  • <num>G - 移动到指定行号,是:<num>的快捷键
  • H - 移动到屏幕顶部
  • M - 移动到屏幕中间
  • L - 移动到屏幕底部
  • } - 移动到下一个段落
  • { - 移动到上一个段落
  • ]] - 移动到下一个函数/代码块
  • [[ - 移动到上一个函数/代码块

视图调整

  • Ctrl+y - 向上一行
  • Ctrl+e - 向下一行
  • Ctrl+f - 向下翻页
  • Ctrl+b - 向上翻页
  • Ctrl+u - 向上半页
  • Ctrl+d - 向下半页
  • zz - 聚焦光标

标记定位

  • m<letter> - 设置标记
  • '<letter> - 跳转到标记行首
  • :marks - 查看当前文件所有标记
  • :delmarks <letter> - 删除对应标记

编辑操作

文本缩进

  • >> - 普通模式下向右缩进当前行
  • > - 可视模式下向右缩进当前行
  • << - 普通模式下向左缩进当前行
  • < - 可视模式下向左缩进当前行

文本折叠(原生)

  • zf - 对选中行创建折叠
  • zd - 删除选中行的折叠
  • zo - 打开折叠
  • zc - 关闭折叠
  • zj - 移动到下一个折叠
  • zk - 移动到上一个折叠
  • :mkview - 保存折叠
  • :loadview - 加载折叠

文本剪切

  • x - 剪切当前字符,等价于dl
  • X - 剪切前一个字符
  • d - 剪切选定内容
  • dd - 普通模式下剪切当前行
  • D - 剪切到当前行结尾

复制粘贴

  • y - 复制选中内容
  • yy - 普通模式下复制整行
  • Y - 等价于yy(历史原因不是复制到行尾)
  • p - 在光标后粘贴
  • P - 在光标前粘贴
  • "<reg>y - 复制到指定寄存器
  • "<reg>p - 从指定寄存器粘贴

重复、撤销&重做

  • . - 重复上次编辑操作
  • u - 撤销
  • Ctrl+r - 重做

查找替换

  • /<pattern> - 向下查找<pattern>
  • ?<pattern> - 向上查找<pattern>
  • n - 重复上次查找
  • N - 反向重复上次查找
  • u/U - 切换选中的文本为小写/大写
  • ~ - 切换当前字符大小写
  • 替换命令,其中分隔符可以是/.|
    • :s|old|new - 替换当前行第一个匹配
    • :s|old|new|g - 替换当前行所有匹配
    • :'<,'>s|old|new|g - 替换当前选中行所有匹配
    • :'<,'>s|old|new|gc - 交互式替换当前选中行匹配
    • :%s|old|new|g - 替换整个文件所有匹配
    • :%s|old|new|gc - 交互式替换整个文件匹配

批量操作

组合命令

  1. 重复操作:<num> + <operation>
    • 3j - 向下移动3行
    • 5dd - 删除5行
    • 10x - 删除10个字符
    • 2p - 粘贴2次
  2. 文本对象操作:<operator> + <number> +<i/a> + <文本对象>,其中常见的文本对象有单词w,句子s,段落p,引号"/',括号()/[]/{}/<>,标签t
    • daw - 删除一个单词(包括周围空格)
    • d2w - 删除两个单词
    • di( - 删除括号内内容
    • ci" - 修改引号内内容
    • yit - 复制HTML标签内容

宏&寄存器

  • q<reg> - 开始录制到寄存器
  • q - 停止录制
  • @<reg> - 执行寄存器中的宏
  • @@ - 重复上次执行的宏
  • "<reg> - 指定寄存器
  • :reg - 查看寄存器内容
  • :reg <reg> - 查看特定寄存器内容

文件操作

信息统计

  • Ctrl+g - 显示光标位置状态(原生)

保存退出

  • :w - 保存文件
  • :w <file> - 另存为
  • :x - 保存并退出,是:wq的快捷键
  • :q - 退出
  • :q! - 强制退出不保存

文件跳转

  • :e - 创建缓存文件(原生)
    • tab - 提示与补全当前目录下的文件(夹),左右选择当前目录下的文件,上下选择上/下一级目录
    • :ls - 查看缓存文件
    • :b+<编号> - 切换缓存文件
    • :bp/bn - 上下切换缓存文件
    • :bd - 删除当前缓存文件
    • :<编号>+bd - 删除对应编号缓存文件
  • Ctrl+o - 跳转到上一个文件中
  • Ctrl+i - 跳转到下一个文件中
  • gd - 跳转到局部定义
  • gD - 跳转到全局定义
  • Ctrl+z - 挂起vim,返回终端中(通过在终端中用fg命令返回)
    • 当有多个任务被挂起,通过jobs在终端查看任务编号n
    • 通过fg %n返回

窗口分割(原生)

  • :vs - 垂直分割窗口
  • :sp - 水平分割窗口
  • Ctrl+w h/j/k/l - 在窗口间移动
  • Ctrl+w w - 切换到下一个窗口
  • Ctrl+w c - 关闭当前窗口
  • Ctrl+w o - 关闭其他窗口
  • Ctrl+w r - 交换窗口位置
  • 窗口宽度/高度调整
    • Ctrl+w > - 增加窗口宽度
    • Ctrl+w < - 减少窗口宽度
    • Ctrl+w + - 增加窗口高度
    • Ctrl+w - - 减少窗口高度
  • 窗口宽度/高度最大化/回归默认
    • Ctrl+w | - 最大化当前窗口宽度
    • Ctrl+w _ - 最大化当前窗口高度
    • Ctrl+w = - 均衡窗口大小

标签页管理(原生)

  • :tabe <file> - 新建标签页
  • :tabc - 关闭当前标签页
  • :tabo - 关闭其他标签页
  • gt - 下一个标签页
  • gT - 上一个标签页
  • ngt - 切换到第n个标签页
  • :a - 全选所有标签页

Vim配置

打开文件时,所有配置都会在默认配置的基础上执行。而在配置文件中用:so的时候,则是在当前配置的基础上执行。

基本配置

" 设置行号 
set number" 设置<leader>
nnoremap <Space> <Nop>
let mapleader = " "" 在视觉行移动
nnoremap j gj
nnoremap k gk
nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^" 让复制粘贴使用系统剪切板
vnoremap y "+y
vnoremap x "+x
nnoremap p "+p
nnoremap <leader>p ""p" 全选 
nnoremap <C-a> ggVG" 保存
nnoremap <C-s> :w<CR>" 窗口间移动
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l " 取消高亮
nnoremap <silent><Esc> :nohl<CR>" 消除^M
nnoremap <C-m> :%s.\r..g<CR>
http://www.lryc.cn/news/615577.html

相关文章:

  • 大模型“涌现”背后的暗线——规模、数据、目标函数的三重协奏
  • 算法_python_学习记录_02
  • linux 操作ppt
  • Uipath Studio中邮件自动化
  • HTML全景效果实现
  • Android 开发问题:The specified child already has a parent.
  • 202506 电子学会青少年等级考试机器人五级器人理论真题
  • NX二次开发——面有关的函数
  • C++的结构体指针
  • 密集遮挡场景识别率↑31%!陌讯轻量化部署方案在智慧零售的实战解析
  • Linux文件操作详解:一切皆文件
  • app功能测试工具
  • 智慧水务漏检率↓75%:陌讯水下视觉监测方案实战解析
  • 动态规划(相同地方不同状态)
  • Web前端之Vue框架
  • 【牛客刷题】小红的区间删除
  • MM-2025 | 浙大vivo需求驱动的具身导航!CogDDN:具有基于决策优化和双过程思维的认知驱动导航方法
  • 客服Agent革命:智能客服系统的技术实现与效果评估
  • PyQt5技术栈简述
  • 如何搭建ELK
  • 【Spring Boot 快速入门】八、登录认证(二)统一拦截
  • 环路补偿知识
  • 算法_python_学习记录_01
  • 比较useCallback、useMemo 和 React.memo
  • leetcode 11. 盛最多水的容器 -java
  • 欢迎走进《励曼旋耕》
  • HarvardX TinyML小笔记1(番外2:神经网络)
  • 物联网之常见网络配置
  • UE破碎Chaos分配模型内部面材质
  • 编程速递:2025 年巴西 Embarcadero 会议,期待您的到来