当前位置: 首页 > 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.dtcms.com/a/322463.html

相关文章:

  • 分享一个基于Spark的眼科疾病临床数据可视化分析与应用研究Hadoop基于Vue和Echarts的眼科疾病统计数据交互式可视化系统的设计与实现
  • 麦当秀|MINDSHOW:在线AI PPT设计工具
  • linux 操作ppt
  • OceanBase架构设计
  • 7、docker |其余命令
  • 机器学习——08 特征降维
  • Android MVP架构详解:从理论到实践
  • (第三篇)spring cloud之Zookeeper注册中心
  • 观远BI 工具驱动零售消费行业精益增长的实践路径
  • 从反射到方法句柄:深入探索Java动态编程的终极解决方案
  • 【3D图像技术分析与实现】如何进行基于3DGS的城市道路重建?
  • 疯狂星期四文案网第34天运营日记
  • 计算机网络:如何将/22的CIDR地址块划分为4个子网
  • CosyVoice 语音合成模型性能优化实战:从 CPU 瓶颈到 GPU 加速的完整解决方案
  • Nginx 性能优化与动态内容处理
  • LeetCode 面试经典 150_数组/字符串_分发糖果(15_135_C++_困难)(贪心算法)
  • 关于开发语言的一些效率 从堆栈角度理解一部分c java go python
  • nginx的安装
  • QML 鼠标穿透
  • 目标检测数据集 - 人脸佩戴检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • 105-基于Flask的珍爱网相亲数据可视化分析系统
  • 深度学习图像分类数据集—七种虾病虫害分类
  • 制作 VSCode 插件
  • 2025华数杯B题一等奖方案:网络切片无线资源管理全解析(附Python/MATLAB代码)
  • 「iOS」————分类与扩展
  • Baumer高防护相机如何通过YoloV8深度学习模型实现火星陨石坑的检测识别(C#代码UI界面版)
  • rem:CSS中的相对长度单位
  • 从灵感枯竭到批量产出:无忧秘书创作平台如何重构内容生产者的工作流程?全环节赋能分析
  • Java基础-TCP通信单服务器接受多客户端
  • Pytorch模型复现笔记-FPN特征金字塔讲解+架构搭建(可直接copy运行)+冒烟测试