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

Vim 列操作命令完整学习笔记

Vim 列操作命令完整学习笔记

目录

文章目录

  • Vim 列操作命令完整学习笔记
    • 目录
    • 1. 核心概念
    • 2. 垂直块选择模式(Visual Block Mode)
      • 2.1 进入和基础操作
      • 2.2 选择范围控制
      • 2.3 快速选择技巧
    • 3. 列操作基础命令
      • 3.1 删除和复制操作
      • 3.2 插入和追加操作
      • 3.3 替换操作
    • 4. 列缩进和格式化
      • 4.1 缩进操作
      • 4.2 对齐操作
    • 5. 批量编辑命令(norm命令)
      • 5.1 基础批量操作
      • 5.2 插入和追加批量操作
      • 5.3 删除和替换批量操作
      • 5.4 缩进批量操作
    • 6. 高级列操作技巧
      • 6.1 多列同时操作
      • 6.2 不规则区域处理
      • 6.3 数据对齐技巧
    • 7. 实际应用场景
      • 7.1 代码编辑场景
      • 7.2 数据处理场景
      • 7.3 文档编辑场景
    • 8. 命令速查表
    • 9. 实用技巧和最佳实践
      • 高效工作流程
      • 常用快捷键配置
      • 复杂场景处理
      • 性能优化技巧
      • 错误避免指南
    • 10. 学习建议
      • 循序渐进的学习路径
      • 实践建议
      • 进阶学习方向


1. 核心概念

Vim 的列操作是其独有的强大功能,主要通过 垂直块选择模式(Visual Block Mode)norm命令 实现。

核心特点:

  • 矩形选择:可以选择文本的矩形区域,而不是整行
  • 批量编辑:对多行的相同列位置同时进行操作
  • 精确控制:可以精确到字符级别的列操作

两种主要方式:

  • 可视块模式Ctrl-v 进入,直观的矩形选择
  • norm命令:norm 命令,批量执行相同操作

2. 垂直块选择模式(Visual Block Mode)

2.1 进入和基础操作

  • Ctrl-v - 进入垂直块选择模式
  • v - 进入普通可视模式(字符选择)
  • V - 进入行可视模式(整行选择)
  • Esc - 退出可视模式

💡 模式区别Ctrl-v 选择矩形区域,v 选择字符流,V 选择整行

2.2 选择范围控制

  • Ctrl-v + j/k - 垂直扩展选择(上下移动)
  • Ctrl-v + h/l - 水平扩展选择(左右移动)
  • Ctrl-v + w - 选择到下一个单词边界
  • Ctrl-v + 0 - 从光标位置选择到行首
  • Ctrl-v + $ - 从光标位置选择到行尾

2.3 快速选择技巧

  • Ctrl-v + 55G - 从当前行到第55行选中一列
  • gg + Ctrl-v + 20G - 从第一行到第20行选中列
  • Ctrl-v + G - 从当前行到文件末尾选中列
  • Ctrl-v + } - 选择到下一个段落
  • Ctrl-v + { - 选择到上一个段落

3. 列操作基础命令

3.1 删除和复制操作

  • Ctrl-v + d - 删除选中的列区域
  • Ctrl-v + y - 复制选中的列区域
  • Ctrl-v + x - 删除选中的列字符
  • Ctrl-v + p - 粘贴到选中的列区域
  • Ctrl-v + P - 在选中列前粘贴

3.2 插入和追加操作

  • Ctrl-v + I + <text> + Esc - 在选中列前插入文本
  • Ctrl-v + A + <text> + Esc - 在选中列后追加文本
  • Ctrl-v + c + <text> + Esc - 替换选中列内容

📝 重要提示:插入和追加操作必须按 Esc 键才能生效到所有行

3.3 替换操作

  • Ctrl-v + r<char> - 将选中列替换为指定字符
  • Ctrl-v + R - 进入替换模式,替换选中区域
  • Ctrl-v + s + <text> + Esc - 替换选中区域为新文本

4. 列缩进和格式化

4.1 缩进操作

  • Ctrl-v + > - 将选中列向右缩进
  • Ctrl-v + < - 将选中列向左缩进
  • Ctrl-v + 3> - 将选中列向右缩进3个层级
  • Ctrl-v + 3< - 将选中列向左缩进3个层级

4.2 对齐操作

  • Ctrl-v + = - 自动缩进选中的代码块
  • Ctrl-v + gq - 格式化选中的文本

5. 批量编辑命令(norm命令)

5.1 基础批量操作

  • :10,30norm I# - 在第10-30行行首插入 #
  • :10,30norm A; - 在第10-30行行尾添加 ;
  • :1,$norm I// - 给整个文件每行开头加注释 //
  • :1,$norm A // todo - 给所有行末尾加注释 // todo

5.2 插入和追加批量操作

:10,30norm I#           " 每行开头插入 #
:10,30norm A;           " 每行末尾添加 ;
:1,$norm I// " 全文件行首加注释
:1,$norm A " comment    " 全文件行尾加注释
:.,$norm I    " 从当前行到末尾,每行开头加4个空格

5.3 删除和替换批量操作

:10,30norm ^xx          " 每行开头删除两个字符
:10,30norm $x           " 每行末尾删除一个字符
:10,30norm 0R-          " 每行首字符替换为 -
:10,30norm rX           " 每行当前位置字符替换为 X
:g/pattern/norm I#      " 匹配行开头插入 #

5.4 缩进批量操作

:1,$norm >>             " 整个文件向右缩进
:1,$norm <<             " 整个文件向左缩进
:10,30norm 0i    " 第10-30行开头插入4个空格
:10,30norm 0i<Tab>      " 第10-30行开头插入Tab

6. 高级列操作技巧

6.1 多列同时操作

" 选择多个不连续的列
Ctrl-v 选择第一列 → y 复制
移动到其他位置 → Ctrl-v 选择 → p 粘贴" 交替列操作
:g/^/norm 0i列A         " 每行开头插入"列A"
:g/^/norm A列B          " 每行末尾插入"列B"

6.2 不规则区域处理

" 处理不等长行
Ctrl-v + $ 选择到行尾   " 自动适应不同行长度
Ctrl-v + A 统一追加     " 在不等长行末尾统一追加" 跳过某些行
:g!/pattern/norm I#     " 不匹配pattern的行插入#
:v/pattern/norm I#      " 等价于上面的命令

6.3 数据对齐技巧

" CSV数据对齐
:%s/,/,\t/g             " 逗号后加Tab
Ctrl-v 选择列 → = 对齐" 代码注释对齐
Ctrl-v 选择注释列       " 选择所有注释
A                       " 追加模式
输入空格调整对齐位置    " 手动对齐

7. 实际应用场景

7.1 代码编辑场景

批量注释/取消注释:

" 添加注释
Ctrl-v 选择多行开头 → I → // → Esc
:10,30norm I//          " 命令行方式" 删除注释
Ctrl-v 选择注释符号 → d
:g/^\/\//norm 0xx       " 删除开头的//

批量缩进调整:

" 代码块缩进
Ctrl-v 选择代码块 → > → > → >   " 连续缩进
:10,30norm >>>                  " 缩进3级" 函数参数对齐
Ctrl-v 选择参数列 → A → 空格调整对齐

7.2 数据处理场景

CSV/TSV文件编辑:

" 添加列标题
1norm I"ID",            " 第一行开头加ID列
:2,$norm I"",           " 数据行开头加空值" 列数据转换
Ctrl-v 选择价格列 → c → $0.00 → Esc   " 统一货币格式

表格数据整理:

" 表格边框添加
:g/^/norm I|            " 每行开头加|
:g/^/norm A|            " 每行末尾加|" 数据填充
Ctrl-v 选择空列 → c → N/A → Esc       " 填充空值

7.3 文档编辑场景

列表格式化:

" 有序列表
:g/^/norm I1. " 开头加序号(需要手动调整)
:1,$norm 0R1. " 第一行用1.替换开头" 无序列表
:g/^/norm I- " 开头加破折号
:g/^/norm I• " 开头加项目符号

文档结构调整:

" 章节编号
:g/^#/norm A " (Draft)   " 给所有标题加Draft标记
:g/^##/norm I2.          " 给二级标题加编号

8. 命令速查表

命令功能备注
Ctrl-v进入垂直块选择模式(Visual Block Mode)开始选择一个矩形区域的文本,按列选取
v(视觉模式)进入普通的可视模式,按字符选择按行或字符选择
Ctrl-v+j/k在垂直模式下上下扩展选择区域用于扩展选中的列范围
Ctrl-v+w在垂直模式下选择到下一个单词边界按列选择单词边界
Ctrl-v+0从当前光标位置到行首选择在列选择模式下选择到行首
Ctrl-v+$从当前光标位置到行尾选择在列选择模式下选择到行尾
命令 / 命令组合功能备注说明详细示例
Ctrl-v + d删除选中的列区域(块模式下)删除垂直区域内的内容在 Visual Block Mode 下,选中某一列(如C列),按d删除该列内容。
Ctrl-v + y复制选中的列区域(块模式下)复制垂直区域内的内容在 Visual Block Mode 下,选中某一列(如C列),按y复制该列内容。
Ctrl-v + p粘贴到选中的列区域将复制的列粘贴到选中的列范围内复制C列后,选中目标列(如E列),按p粘贴到E列
Ctrl-v + I <text> + Esc插入文本到选中列前方每行的对应列插入<text>选中多行某列后按I输入文本A,再按Esc,所有行的该列前插入文本A
Ctrl-v + A <text> + Esc追加文本到选中列后方每行的对应列后追加<text>选中多行某列后按A输入-结束,再按Esc,所有行该列末尾追加-结束
Ctrl-v + x删除选中的列字符删除块选中区域的字符选中C列后按x删除所选列的字符。
Ctrl-v + r<char>替换选中列为指定字符rX替换为字符X选中C列后按rX,将该列所有字符替换为X
Ctrl-v + >将选中列向右缩进缩进块区域选中多行某列,按>整体右移缩进,缩进个TAB,按n + >。
Ctrl-v + <将选中列向左缩进缩进块区域选中多行某列,按<整体左移缩进,缩进个TAB,按n + <。
Ctrl-v + 55G从当前行到第55行选中一列快速选中某列的垂直区域在当前列按Ctrl-v,再输入55G,选中当前列到第 55 行。
gg + Ctrl-v + 20G从第一行到第20行选中列批量选择顶部行的一列首先按gg到第一行,再进入 Visual Block,按20G选中第 1~20 行的一列。
:10,30norm I#在第10~30行行首插入#非视觉模式下的批量编辑,适合注释或缩进:norm命令对第 10 到 30 行每一行开头插入#:10,30norm I#
Ctrl-v + r<char>替换选中列内容替换选中的字符为指定的字符在 Visual Block Mode 下,选中某一列,按rX,将选中的字符替换为X
命令功能示例说明
:10,30norm I#每行行首插入#批量注释第 10~30 行(相当于每行开头输入#
:10,30norm A // todo每行行尾追加 // todo在第 10~30 行末尾追加注释// todo
:1,$norm I// 给整个文件行首加// 快速批量注释整个文件(1,$表示全文件)
:1,$norm A;给所有行末加分号;常用于 C、JavaScript 等需要行尾分号的语言
:10,30norm ^xx每行开头删除两个字符^表示行首,x删除字符
:10,30norm $x每行行尾删除一个字符$到行尾,x删除一个字符
:10,30norm 0R-每行首用-替换当前字符0到行首,R进入替换模式,替换成-
:10,30norm rX替换每行当前光标处字符为X将光标处字符批量替换为X
:1,$norm >>批量缩进整个文件执行>>,即 Vim 内建缩进
:1,$norm <<批量取消缩进整个文件执行<<,即 Vim 内建取消缩进

9. 实用技巧和最佳实践

高效工作流程

  1. 预览选择:使用 Ctrl-v 先选择确认范围
  2. 小范围测试:在小范围内测试操作效果
  3. 撤销保护:记住 u 可以撤销操作
  4. 组合使用:结合其他Vim命令提高效率

常用快捷键配置

" .vimrc 中的实用配置
" 快速列选择
nnoremap <leader>v <C-v>" 快速列操作
vnoremap <leader>i I
vnoremap <leader>a A" 快速注释
nnoremap <leader>c :norm I// <CR>
nnoremap <leader>u :norm 0xxx<CR>" 列对齐
vnoremap <leader>= =

复杂场景处理

" 处理混合数据格式
:g/pattern1/norm I[TODO] " 特定行加标记
:v/pattern1/norm I[DONE] " 其他行加标记" 条件列操作
:g/^function/norm A {    " 函数行末尾加大括号
:g/^}/norm o             " 右括号后加空行" 多步骤列编辑
Ctrl-v 选择 → y → 移动 → Ctrl-v 选择 → p → 编辑

性能优化技巧

  1. 大文件处理:分批处理,避免一次选择过多行
  2. 复杂操作:使用宏录制重复的列操作
  3. 正则表达式:结合 :g 命令进行条件列操作
  4. 寄存器利用:使用命名寄存器保存多个列数据

错误避免指南

  • 选择范围确认:操作前确认选择的列范围正确
  • 模式区分:理解块模式、字符模式、行模式的区别
  • Esc键重要性:插入操作后必须按Esc才能生效
  • 备份重要数据:复杂操作前先备份文件

10. 学习建议

循序渐进的学习路径

  1. 第一阶段:掌握基础块选择

    • 熟练使用 Ctrl-v 进入块模式
    • 练习基本的选择和移动操作
  2. 第二阶段:学习基础列操作

    • 掌握删除、复制、粘贴列操作
    • 练习插入和追加文本到列
  3. 第三阶段:学习norm命令

    • 理解 :norm 命令的批量操作原理
    • 练习行范围和模式匹配的组合
  4. 第四阶段:应用到实际场景

    • 在代码编辑中使用列操作
    • 处理数据文件和表格
  5. 第五阶段:高级技巧应用

    • 组合多种操作解决复杂问题
    • 自定义快捷键提高效率

实践建议

  1. 创建练习文件:准备各种格式的测试文件
  2. 日常应用:在实际工作中寻找列操作的机会
  3. 记录心得:记录常用的操作模式和技巧
  4. 分享交流:与其他Vim用户交流列操作经验

进阶学习方向

" 宏录制结合列操作
qa                      " 开始录制宏
Ctrl-v 选择 → 编辑操作   " 录制列操作
q                       " 停止录制
@a                      " 重复执行" 插件增强
" 推荐插件:vim-multiple-cursors, vim-visual-multi
" 提供更强大的多光标编辑功能

📝 核心提示:Vim的列操作是其最独特的功能之一,熟练掌握后能够大幅提高处理结构化文本的效率。关键在于理解块选择的概念和norm命令的批量处理能力。

http://www.xdnf.cn/news/13203.html

相关文章:

  • 力扣热题100之二叉树的层序遍历
  • 云原生核心技术 (2/12): Docker 入门指南——什么是容器?为什么它比虚拟机更香?
  • 大语言模型如何处理长文本?常用文本分割技术详解
  • PostgreSQL 的扩展pg_surgery
  • 基于区块链的供应链溯源系统:构建与实践
  • Git将本地文件推送到GitHub仓库
  • 51单片机读取PCF8563时钟芯片
  • 2025 高考:AI 都在哪些地方发挥了作用
  • 行为设计模式之Memento(备忘录)
  • 守护数字世界:网络安全核心技术与实践策略
  • VSCODE配置ESP-IDF芯片选择遇见的问题
  • 赛尔发布SHARE 5系列航测相机,外业更高效,建模更优质
  • 代码随想录刷题day31
  • 从基础到实战-rmpt to webrtc
  • WiFi通信应用开发【保姆级】实现ESP8266模块数据上传到云端!!!
  • matlab 各种智能优化算法
  • 26考研 专业课 百度网盘夸克网盘
  • C++_红黑树
  • Easy系列PLC变频器控制功能块(ST源代码)
  • 积累-Vue.js 开发实用指南:ElementUI 与核心技巧
  • AI驱动下的商品详情API:2025年电商平台的智能化数据交互新趋势
  • Qt5 框架 CMake 探秘
  • 编译原理 学习 2025年6月10日11:17:54
  • 笔记——学习HTTP协议
  • 第二篇:Agent2Agent (A2A) 协议——A2A 架构、组件和通信动态
  • 百度之星2021——BD202104 萌新
  • JavaScript闭包-作用域链的魔法
  • KubeSphere 容器平台高可用:环境搭建与可视化操作指南
  • YOLO电力物目标检测训练
  • Spring Boot + Vue 前后端分离项目解决跨域问题详解