Vim命令大全

news2025/1/11 15:09:51

文章目录

    • 简述:
      • 1. **命令模式(Command Mode)**
      • 2. **插入模式(Insert Mode)**
      • 3. **可视模式(Visual Mode)**
      • 4. **末行模式(Ex Mode)**
    • 详细使用案例:
      • 1. **文件操作类**
      • 2. **移动光标类**
      • 3. **文本插入与删除类**
      • 4. **复制与粘贴类**
      • 5. **搜索替换类**
      • 6. **可视选择与操作类**
      • 7. **窗口操作类**
      • 8. **撤销与重做类**
      • 9. **跳转到特定行号**
      • 10. **显示帮助信息**
      • 11. **文本替换与查找类**
      • 12. **折叠代码块**
      • 13. **标记和跳转**
      • 14. **列选择模式**
      • 15. **宏录制与回放**
      • 16. **多文件编辑**
      • 17. **快速定位**
      • 18. **视觉差异比较**

简述:

在Vim中,有三种主要的操作模式:命令模式(Command Mode)、插入模式(Insert Mode)和可视模式(Visual Mode)。以及一个特殊的末行模式(Ex Mode)。

1. 命令模式(Command Mode)

  • Vim启动时默认进入命令模式。如果你正在其他模式下操作,按下Esc键即可返回命令模式。

2. 插入模式(Insert Mode)

  • 若要从命令模式进入插入模式,可以使用以下命令:
    • i 在光标前开始插入
    • a 在光标后开始插入
    • I 在当前行的行首开始插入
    • A 在当前行的行尾开始插入
    • o 在当前行下方新开一行并插入
    • O 在当前行上方新开一行并插入

3. 可视模式(Visual Mode)

  • 从命令模式进入可视模式,可使用:
    • v 进入字符选择可视模式
    • V 进入行选择可视模式
    • <C-v><Ctrl+v> 进入块选择可视模式

4. 末行模式(Ex Mode)

  • 末行模式主要用于执行文件保存、退出、设置选项等操作。从命令模式进入末行模式,按:(冒号)即可。在末行模式下输入命令后回车执行,执行完毕后会回到命令模式。

例如,要执行:wq保存并退出文件,首先在命令模式下按:进入末行模式,然后输入wq并回车。

详细使用案例:

在Vim编辑器中,命令非常多且丰富,这里按功能分类列举10个基础且常用的命令及其实例:

1. 文件操作类

  • 打开文件

    vim filename.txt
    

    打开名为filename.txt的文件。

  • 保存文件

    :w
    

    保存当前正在编辑的文件。

  • 退出编辑器

    :q
    

    如果没有未保存的更改,退出Vim。
    若要强制退出(不保存更改):

    :q!
    

    若有更改并希望先保存后退出:

    :wq
    

2. 移动光标类

  • 向下移动一行

    j
    
  • 向上移动一行

    k
    
  • 向右移动一个字符

    l
    
  • 向左移动一个字符

    h
    
  • 移动到行首

    0 或 ^
    
  • 移动到行尾

    $
    

3. 文本插入与删除类

  • 插入模式下输入文本
    i 进入插入模式,然后可以像普通文本编辑器那样输入文本。

  • 在当前光标位置后插入文本

    iHello, world
    <ESC>
    

    输入"Hello, world"后按 <ESC> 返回正常模式。

  • 删除当前光标下的字符

    x
    
  • 删除从当前光标到行尾的所有字符

    d$
    

4. 复制与粘贴类

  • 复制一行

    yy
    
  • 粘贴到光标下方

    p
    

5. 搜索替换类

  • 向前搜索指定字符串

    /search_text
    
  • 全局替换

    :%s/old_text/new_text/g
    

6. 可视选择与操作类

  • 进入可视模式,选择一行

    V
    
  • 选中多行
    移动光标至开始行,按下 Shift + v 进入可视行块模式,移动光标到结束行。

  • 对选中的文本进行操作
    例如,选中文本后执行大写转换:

    gU
    

7. 窗口操作类

  • 分割窗口

    :sp filename.txt
    

    在垂直方向上分割窗口并打开新文件。

  • 切换窗口

    <C-w>h 或 <C-w>j 或 <C-w>k 或 <C-w>l
    

    分别表示向左、下、上、右切换窗口。

8. 撤销与重做类

  • 撤销操作

    u
    
  • 重做上次撤销的操作

    Ctrl + r
    
    

9. 跳转到特定行号

  • 跳转到第n行
    :n
    

10. 显示帮助信息

  • 打开内置帮助文档
    :help
    
    或者快速查找特定命令的帮助:
    :help command_name
    

11. 文本替换与查找类

  • 在当前行内查找并替换

    :s/old_text/new_text
    

    若要在整个文件中替换,使用全局标志 g:

    :%s/old_text/new_text/g
    
  • 递归搜索目录下的所有文件(需安装插件如grep.vim):

    :Grepper -type f -rg 'search_text'
    

12. 折叠代码块

  • 折叠当前层级的所有折叠区域

    za
    
  • 打开当前层级的所有折叠区域

    zA
    
  • 逐级向下展开折叠

    zr
    
  • 逐级向上折叠

    zm
    

13. 标记和跳转

  • 设置标记

    ma
    

    在当前光标位置设置名为’a’的标记。

  • 跳转到标记

    `'a
    

    跳转到标记’a’的位置。

14. 列选择模式

  • 进入列选择模式

    Ctrl + v
    
  • 进行列操作
    进入列选择模式后,移动光标选择多列,然后可以执行删除、复制、粘贴等操作。例如删除选中的列内容:

    d
    

15. 宏录制与回放

  • 开始录制宏

    qa
    

    开始记录到寄存器’a’的宏。

  • 停止录制并结束宏
    按下需要的操作键序列后,按 q 停止录制。

  • 播放宏

    @a
    

    回放存储在寄存器’a’的宏。

16. 多文件编辑

  • 打开多个文件

    vim file1.txt file2.txt
    
  • 在不同的缓冲区间切换

    :bn 或 :bp
    

    分别表示下一个文件缓冲区或上一个文件缓冲区。

17. 快速定位

  • 跳转到特定字符

    f<char>
    

    向前查找并跳转到指定字符。

  • 跳转到匹配括号

    %
    

    如果光标位于左括号,将跳转到对应的右括号;反之亦然。

18. 视觉差异比较

  • 通过vimdiff比较两个文件
    vimdiff file1.txt file2.txt
    

以上是Vim中更多的命令及其示例,实际上Vim的功能非常强大,提供了丰富的命令集和自定义扩展能力。建议深入阅读Vim官方文档以了解更全面的信息,并通过实践来熟练掌握这些功能。

python推荐学习汇总连接:
50个开发必备的Python经典脚本(1-10)

50个开发必备的Python经典脚本(11-20)

50个开发必备的Python经典脚本(21-30)

50个开发必备的Python经典脚本(31-40)

50个开发必备的Python经典脚本(41-50)
————————————————

​最后我们放松一下眼睛
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1393476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 状态机框架:The State Machine Framework (二)

传送门: Qt 状态机框架:The State Machine Framework (一) Qt 状态机框架:The State Machine Framework (二) 1、利用并行态避免态的组合爆炸 假设您想在单个状态机中对汽车的一组互斥属性进行建模。假设我们感兴趣的属性是干净与肮脏&#xff0c;以及移动与不移动。需要四个…

Linux 系统之部署 h5ai 目录列表程序

一、h5ai 介绍 1.1&#xff09;h5ai 简介 h5ai 是用于 HTTP Web 服务器的现代文件索引器&#xff0c;专注于您的文件。目录以吸引人的方式显示&#xff0c;浏览它们通过不同的视图、面包屑和树概述得到增强。最初 h5ai 是 HTML5 Apache Index 的首字母缩写&#xff0c;但现在它…

异步Merkle Tree

1. 引言 前序博客&#xff1a; 利用多核的Rust快速Merkle tree Anoushk Kharangate 2023年论文《Asynchronous Merkle Trees》&#xff0c;其对Merkle tree数据结构进行修改&#xff0c;使得可跨多线程异步计算。 开源代码实现见&#xff1a; https://github.com/anoushk1…

2024华数杯国际数学建模B题思路+代码+模型+论文

2024华数杯国际数学建模B题思路代码模型论文&#xff1a;1.17上午第一时间更新&#xff0c;详细内容见文末名片 问题B&#xff1a;光伏电 背景 中国的电力构成包括传统的能源发电&#xff08;如煤炭、石油和天然气&#xff09;、可再生能源发电 &#xff08;如水力发电、风能…

gin+gorm增删改查目录框架

从网上找资料,发现,很多都是直接的结构 路由&#xff0c;后端的controller层&#xff0c;还有model层&#xff0c;都是放在了同一个main.go文件中&#xff0c;如果写项目的话&#xff0c;还得自己去拆文件&#xff0c;拆代码&#xff0c;经过查询和自己总结&#xff0c;下面放…

ssh免密登录 ssh公钥分发 ssh密钥生成

在连接服务器时&#xff0c;我们会被要求输入用户名对应的密码&#xff0c;如下&#x1f447;&#xff1a; 如果我们要登录的服务器是常用服务器&#xff0c;那么每次登录输入密码就会比较麻烦。那么如何免密登录呢&#xff1f;那就需要使用到rsa公私钥认证了。 生成rsa密钥…

vue 指定区域可拖拽的限定拖拽区域的div(如仅弹窗标题可拖拽的弹窗)

<template><div class"container" ref"container"><div class"drag-box" v-drag><div class"win_head">弹窗标题</div><div class"win_content">弹窗内容</div></div><…

vivado导出时序报告为excel文件的方法

1、打开implementation下的report timing summary 2、选择要看的时钟右键点击report_timing 3、在新打开的timing窗口中&#xff0c;选择setup或者hold&#xff0c;选中一条路径右键&#xff0c;点击export to spreadsheet&#xff0c;此时就可以存为table.xlsx文件

【MySQL】权限控制

DCL-权限控制 查询权限 show grants for 用户名主机名;授予权限 grant 权限列表 on 数据库名.表名 to 用户名主机名;grant all on test.* to user%; %是通配符&#xff0c;表示任意主机。撤销权限 revoke 权限列表 on 数据库名.表名 from 用户名主机名;revoke all on test.*…

旅游平台day02

1. 用户注册 概述&#xff1a; 常见的注册方式&#xff1a;邮箱注册、手机号注册、昵称注册、或者以上几种同时支持 本项目仅仅支持手机号注册 需求&#xff1a; 项目启动后&#xff0c;访问regist.html进入注册页面 手机号校验 前后台都需要对手机号进行校验 前端校验&am…

HashMap学习和线程安全的HashMap

HashMap的底层数据结构&#xff1f; HashMap在JDK1.8里面的Node数组加链表加红黑树&#xff0c;当链表长度大于8且数组长度大于64&#xff0c;链表转化为红黑树。当红黑树节点数小于6&#xff0c;红黑树转化为链表。在JDK1.7中是数组加链表。 为什么要用红黑树&#xff1f; 当…

react 第一个项目

sudo npx create-react-app reactdemo01 npx node.js工具 create-react-app 核心包&#xff08;固定写法&#xff09;用于创建react项目 后跟项目名层 启动一个新的 React 项目 – React 中文文档 //项目的根组件 //App -> index.js ->/Users/king/Documents/react…

芯片新闻-Global Semiconductor Sales Increase 5.3% Year-to-Year in November

11 月标志着一年多以来市场同比增长的第一个月&#xff1b;全球芯片销量环比增长2.9% 华盛顿——一月。 2024 年 12 月 9 日——半导体行业协会 (SIA) 今天宣布&#xff0c;2023 年 11 月全球半导体行业销售额总计 480 亿美元&#xff0c;比 2022 年 11 月的 456 亿美元总额增…

rust跟我学七:获取外网IP地址

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎么获取到本机的外网IP地址。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址:[…

FPGA 原理图引脚标识细节

BGA引脚表示 1.1 FPGA此引脚要正确和清晰&#xff0c;会在“Package Pin”中用到次物理接口 1.2, MCU 只用管对应的GPIO逻辑接口就可以了 1.3&#xff0c;引脚名标识出bank, PS/PL, signal/differential 标识Bank电平 标识出对应Bank的电平&#xff0c;在电路设计中可以清晰…

C#调用Newtonsoft.Json将bool序列化为int

使用Newtonsoft.Json将数据对象序列化为Json字符串时&#xff0c;如果有布尔类型的属性值时&#xff0c;一般会将bool类型序列化为字符串&#xff0c;true值序列化为true&#xff0c;false值序列化为false。如下面的类型序列化后的结果如下&#xff1a; public class UserInfo…

量化研究员!你应该如何写一手好代码

即使是Quant Researcher&#xff0c; 写一手高质量的代码也是非常重要的。再好的思路&#xff0c;如果不能正确地实现&#xff0c;都是没有意义的。 写一手高质量的代码的意义&#xff0c;对Quant developer来讲就更是自不待言了。这篇笔记就介绍一些python best practice。 始…

npm install 无反应 npm run serve 无反应

说明情况&#xff1a;其实最开始我就是发现我跟着黑马的苍穹外卖的前端day2的环境搭建做的时候&#xff0c;到这一步出现了问题&#xff0c;无论我怎么 npm install 和 npm run serve 都没有像黑马一样有很多东西进行加载&#xff0c;因此我换了一种方法 1.在这个文件夹下cmd …

CSS 设置背景图片

文章目录 设置背景颜色设置背景图片背景图片偏移量计算原点背景图片尺寸设置背景图片位置设置背景图片重复方式设置背景范围设置背景图片是否跟随元素移动测试背景图片 本文概念部分参考&#xff1a;CSS背景background设置 设置背景颜色 background-color 设置背景颜色 设置…

【面试合集】说说你对 linux 用户管理的理解?相关的命令有哪些?

面试官&#xff1a;说说你对 linux 用户管理的理解&#xff1f;相关的命令有哪些&#xff1f; 一、是什么 Linux是一个多用户的系统&#xff0c;允许使用者在系统上通过规划不同类型、不同层级的用户&#xff0c;并公平地分配系统资源与工作环境 而与 Windows 系统最大的不同…