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

MacBook 终端中使用 vim命令

在 MacBook 终端中使用 vim 编辑器时,以下是一些常用命令和操作指南:


1. 基本操作

启动 vim
vim 文件名  # 打开或创建文件
退出 vim
  • 保存并退出
    • Esc,然后输入 :wq,按 Enter
  • 不保存退出
    • Esc,然后输入 :q!,按 Enter
  • 仅保存不退出
    • Esc,然后输入 :w,按 Enter

2. 模式切换

  • 命令模式(默认)
    • Esc 进入命令模式,可以执行保存、退出等操作。
  • 插入模式(编辑文本)
    • i 进入插入模式(光标前插入)。
    • a 进入插入模式(光标后插入)。
    • o 在当前行下方插入新行并进入插入模式。
    • O 在当前行上方插入新行并进入插入模式。

3. 光标移动

  • 基本移动
    • h:左移。
    • j:下移。
    • k:上移。
    • l:右移。
  • 快速移动
    • 0:移动到行首。
    • $:移动到行尾。
    • gg:移动到文件开头。
    • G:移动到文件末尾。
    • :行号:跳转到指定行(如 :10 跳转到第 10 行)。

4. 文本编辑

  • 删除
    • x:删除光标处的字符。
    • dd:删除当前行。
    • dw:删除从光标到单词末尾。
  • 复制与粘贴
    • yy:复制当前行。
    • p:粘贴到光标后。
    • P:粘贴到光标前。
  • 撤销与重做
    • u:撤销上一次操作。
    • Ctrl + r:重做撤销的操作。

5. 搜索与替换

  • 搜索
    • /关键词:向下搜索(如 /hello)。
    • ?关键词:向上搜索。
    • n 跳转到下一个匹配项,N 跳转到上一个匹配项。
  • 替换
    • :%s/旧文本/新文本/g:全局替换(如 :%s/foo/bar/g)。
    • :%s/旧文本/新文本/gc:全局替换并确认。

6. 多文件操作

  • 打开多个文件
    vim 文件1 文件2  # 同时打开多个文件
    
  • 切换文件
    • :n:切换到下一个文件。
    • :N:切换到上一个文件。
    • :ls:列出所有打开的文件。
    • :b 编号:切换到指定编号的文件(如 :b 2)。

7. 分屏操作

  • 水平分屏
    • :sp 文件名:水平分屏打开文件。
  • 垂直分屏
    • :vsp 文件名:垂直分屏打开文件。
  • 切换分屏
    • Ctrl + w + h/j/k/l:切换到左/下/上/右分屏。
    • Ctrl + w + w:循环切换分屏。

8. 其他实用命令

  • 显示行号
    • :set number:显示行号。
    • :set nonumber:隐藏行号。
  • 保存并退出所有文件
    • :xa:保存所有文件并退出。
  • 重新加载文件
    • :e!:放弃更改并重新加载文件。

总结

操作命令说明
保存并退出:wqZZ保存更改并退出
强制退出(不保存):q!放弃更改并退出
插入模式ia进入插入模式
删除当前行dd删除当前行
复制当前行yy复制当前行
粘贴pP粘贴到光标后或前
搜索/关键词向下搜索
全局替换:%s/旧/新/g替换所有匹配项
分屏:sp:vsp水平或垂直分屏

掌握这些命令后,你就能高效使用 vim 编辑文件了!如果需要更深入学习,可以查看 vim 的内置教程:

vimtutor  # 在终端运行 vim 教程
http://www.lryc.cn/news/544266.html

相关文章:

  • VoIP之SBC(会话边界控制器)
  • threejs:document.createElement创建标签后css设置失效
  • 安装2018版本的petalinux曲折经历
  • return和print
  • springboot411-基于Java的自助客房服务系统(源码+数据库+纯前后端分离+部署讲解等)
  • 跨平台文件互传工具
  • final 关键字在不同上下文中的用法及其名称
  • Elasticsearch:使用阿里云 AI 服务进行嵌入和重新排名
  • 【愚公系列】《鸿蒙原生应用开发从零基础到多实战》004-TypeScript 中的泛型
  • IP属地是通过卫星定位的吗?如何保护用户隐私
  • 【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置)
  • php序列化与反序列化
  • 视频级虚拟试衣技术在淘宝的产品化实践
  • 音视频-WAV格式
  • c++ std::array使用笔记
  • 第39天:安全开发-JavaEE应用SpringBoot框架Actuator监控泄漏Swagger自动化
  • 浏览器JS打不上断点,一点就跳到其他文件里。浏览器控制台 js打断点,指定的位置打不上断点,一打就跳到其他地方了。
  • conda环境管理 kernel注册到jupyter notebook
  • 【SpringBoot】【log】 自定义logback日志配置
  • 15.7 LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统
  • 计算机网络基础:揭开网络世界的神秘面纱
  • 工会考试知识点分享
  • az devops login报错:Failed to authenticate using the supplied token.
  • Halcon图像预处理算子 sobel算子、傅里叶变换算子、卷积算子
  • Java Web应用中获取客户端的真实IP地址
  • 洛谷————P11559 【MX-X7-T0】[LSOT-3] 嗯欧哎
  • 2020年SCI1区TOP:异质综合学习和动态多群体粒子群算法HCLDMS-PSO,深度解析+性能实测
  • FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台
  • 【windows driver】 开发环境简明安装教程
  • 强制完整性级别(MIL)和用户账户控制(UAC)的联系与区别