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

vim 的基本使用

介绍

vim 是一个强大的文本编辑器,是 vi 的增强版,广泛用于 Linux 和UNIX 系统中,因为它不仅仅有文本编辑功能还可以进行复杂的文本操作。

模式和切换

vim 有三种主要模式:

  1. 普通模式(Normal Mode):你可以在这个模式下进行光标移动、删除、复制、粘贴等操作。
  2. 插入模式(Insert Mode):在这个模式下,你可以像普通文本编辑器一样输入内容。
  3. 命令模式(Command Mode):你可以在这个模式下输入命令来保存文件、退出等。

模式切换:

  • 普通模式 切换到 插入模式:按 i(插入光标前)、I(行首插入)、a(光标后插入)、A(行尾插入)等。
  • 插入模式 切换回 普通模式:按 Esc 键。
  • 普通模式 切换到 命令模式:按 : 键。

vim 启动

# 打开文件:
vim filename# 打开指定文件
vim example.txt# 直接使用
vim
# 启动并打开一个空文件

vim 中编辑

  1. 进入插入模式

在普通模式下,按下 i 进入插入模式。此时可以输入文本。

常见的插入模式快捷键:

  • i:光标前插入
  • I:行首插入
  • a:光标后插入
  • A:行尾插入
  • o:在当前行下方新建一行并插入
  • O:在当前行上方新建一行并插入
  1. 返回到普通模式

在插入模式下,按 Esc 键返回到普通模式。

常用操作

  1. 移动光标
    在普通模式下,光标移动是 Vim 的核心功能之一。你可以用以下键来精确控制光标:
    • h:向左移动一个字符
    • j:向下移动一行
    • k:向上移动一行
    • l:向右移动一个字符
      更快速的移动:
    • w:移动到下一个单词的开头
    • b:移动到当前单词的开头
    • e:移动到当前单词的结尾
    • 0:移动到当前行的行首
    • $:移动到当前行的行尾
    • gg:移动到文件的开头
    • G:移动到文件的结尾
  2. 复制、剪切和粘贴
    • yy:复制当前行
    • 2yy:复制当前行及其下方的 1 行(2 行)
    • dd:删除当前行
    • 2dd:删除当前行及其下方的 1 行(2 行)
    • p:在光标后粘贴(在行内粘贴)
    • P:在光标前粘贴(在行首粘贴)
  3. 保存和退出
    # 保存文件
    :w
    # 退出 vim
    :q
    # 保存并退出
    :wq
    # 强制退出不保存
    :q!
    
  4. 搜索和替换
# 向前搜索:/ 然后输入搜索的关键字 按回车
/keyword
# n 查找下一个匹配项 N 查找上一个匹配项# 向后搜索:? 然后输入搜索关键字 按回车
?keyword# 替换文件中的一个单词
:%s/old/new/g
# 将 old 全部替换为 new
# %:表示整个文件
# g:表示替换行中所有项(不加 g 只替换每行第一个匹配项)# 仅替换当前行:
:s/old/new/g# 替换并确认每个替换:
:%s/old/new/gc
  1. 其他命令
  • 撤销操作
    • u:撤销上一个操作。
    • Ctrl + r:恢复撤销的操作。
  • 重做操作
    • Ctrl + r:重做操作。
  • 查看文件信息
    • :set number:显示行号。
    • :set nonumber:隐藏行号。
  • 跳转到特定行
    • :123:跳转到第 123 行。
http://www.xdnf.cn/news/10380.html

相关文章:

  • 华为深度学习面试手撕题:手写nn.Conv2d()函数
  • C++: STL简介与string类核心技术解析及其模拟实现
  • vue3动态路由的实现以及目录权限的设置
  • Eclipse 修改字符集
  • [Godot] 如何导出安卓 APK 并在手机上调试
  • 【金融基础学习】债券市场与债券价值分析
  • ck-editor5的研究 (3):初步使用 CKEditor5 的事件系统和API
  • Mac电脑上本地安装 MySQL并配置开启自启完整流程
  • 历史数据分析——广州港
  • 计算机网络(5)——数据链路层
  • 【数据结构】图的存储(十字链表)
  • 微调大模型:什么时候该做,什么时候不该做?
  • 鸿蒙OS基于UniApp的WebRTC视频会议系统实践:从0到1的HarmonyOS适配之路#三方框架 #Uniapp
  • 【火山引擎 大模型批量处理数据教程-详细】
  • 基于千帆大模型的AI体检报告解读系统实战:使用OSS与PDFBox实现PDF内容识别
  • WEBSTORM前端 —— 第3章:移动 Web —— 第3节:移动适配
  • Rust 学习笔记:发布一个 crate 到 crates.io
  • Python 序列的修改、散列和切 片(Vector类第5版:格式化)
  • qwen3解读
  • Java BigInteger类详解与应用
  • C语言之编译器集合
  • 蓝桥杯java2021年十二届国赛大学A组真题答案整理
  • 基于Sqoop的MySQL-Hive全量/增量同步解决方案(支持多表批量处理
  • 设计模式——单例设计模式(创建型)
  • 131. 分割回文串-两种回溯思路
  • C++手撕 shared_ptr
  • Paimon 建表常用属性分析
  • simulink mask的使用技巧
  • Windows下编译zlib
  • LangGraph 快速入门