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

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命令的批量处理能力。

相关文章:

  • EtherCAT 转 CANopen 网关与伺服器在配置软件上的配置步骤
  • 如何使用java把文件转成十六进制字符串
  • mybatisplus.BaseMapper#selectPage 使用方法
  • GO 语言中的flag包--易懂解释
  • 逆向工程:破解某金融App加密协议——在安全与法律的钢丝绳上行走
  • 常用数组方法、字符串方法、数组 ↔ 字符串 的转换、TS类型提示 (大全)
  • i++与++i的区别
  • B2B供应链交易平台多商户电商商城系统开发批发采购销售有哪些功能?发展现状如何?
  • 第14篇:数据库中间件的分布式配置与动态路由规则热加载机制
  • 使用 pytdx,`TdxHq_API` 接口下载数据的 AI 编程指引提示词
  • C++17 std::string_view:性能与便捷的完美结合
  • 5g LDPC编译码-LDPC编码
  • 解决启动SpringBoot是报错Command line is too long的问题
  • 玄机 日志分析-Tomcat日志分析 WriteUp
  • ES6从入门到精通:前言
  • Python实现prophet 理论及参数优化
  • postgresql|数据库|只读用户的创建和删除(备忘)
  • Manus 框架与 COKE 框架解析及完整 Demo
  • 从走线到互连:优化高速信号路径设计的快速指南
  • 复发白血病异基因造血干细胞移植后疗效的改进策略
  • 做愛表情网站/腾讯广告代理商加盟
  • 重庆网站建设电话/营销策划方案范文1500
  • 手机怎么样做网站/seo外推
  • 网站流量一般多少合适/seo关键词排名优化手机
  • html网页模板下载html模板免费/佛山网站建设十年乐云seo
  • 邢台专业网站建设/微信5000人接推广费用