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

【Linux/Ubuntu】VIM指令大全

Vim 是一款功能强大的文本编辑器,掌握其常用操作指令可以极大提高编辑效率。以下是分类整理的常用 Vim 操作指令:

一、进入与退出 Vim

  • vim 文件名:打开或新建文件并进入 Vim
  • :q:退出(未修改文件)
  • :q!:强制退出(不保存修改)
  • :w:保存文件
  • :wq:x:保存并退出
  • ZZ:保存并退出(命令模式下)

二、模式切换

  • i:在当前光标前插入
  • I:在当前行首插入
  • a:在当前光标后插入
  • A:在当前行尾插入
  • o:在当前行下方新建一行并插入
  • O:在当前行上方新建一行并插入
  • s:删除当前字符并插入
  • S:删除当前行并插入
  • Esc:从插入模式返回命令模式

三、光标移动(命令模式)

  • h:左移一个字符
  • j:下移一行
  • k:上移一行
  • l:右移一个字符
  • 0:移至行首
  • $:移至行尾
  • ^:移至行首第一个非空白字符
  • w:移至下一个单词开头
  • W:移至下一个单词开头(忽略标点)
  • e:移至当前单词结尾
  • E:移至当前单词结尾(忽略标点)
  • b:移至前一个单词开头
  • B:移至前一个单词开头(忽略标点)
  • gg:移至文件开头
  • G:移至文件结尾
  • nG:n:移至第 n 行
  • Ctrl + f:向下翻一页
  • Ctrl + b:向上翻一页
  • Ctrl + d:向下翻半页
  • Ctrl + u:向上翻半页

四、删除操作(命令模式)

  • x:删除当前字符
  • X:删除当前字符的前一个字符
  • dd:删除当前行
  • ndd:删除从当前行开始的 n 行
  • d0:删除从光标位置到行首的内容
  • d$:删除从光标位置到行尾的内容
  • dw:删除从光标位置到下一个单词开头的内容
  • dW:删除从光标位置到下一个单词开头的内容(忽略标点)
  • de:删除从光标位置到当前单词结尾的内容
  • dB:删除从光标位置到前一个单词开头的内容(忽略标点)
  • dgg:删除从当前行到文件开头的内容
  • dG:删除从当前行到文件结尾的内容

五、复制与粘贴(命令模式)

  • yy:复制当前行
  • nyy:复制从当前行开始的 n 行
  • p:在当前行下方粘贴
  • P:在当前行上方粘贴
  • yw:复制从光标位置到下一个单词开头的内容
  • y0:复制从光标位置到行首的内容
  • y$:复制从光标位置到行尾的内容
  • ygg:复制从当前行到文件开头的内容
  • yG:复制从当前行到文件结尾的内容

六、撤销与重做(命令模式)

  • u:撤销上一次操作
  • Ctrl + r:重做上一次被撤销的操作

七、查找与替换(命令模式)

  • /pattern:从当前位置向下查找 pattern
  • ?pattern:从当前位置向上查找 pattern
  • n:继续查找下一个匹配项
  • N:继续查找上一个匹配项
  • :nohl:取消高亮显示查找结果
  • :s/old/new:替换当前行第一个 old 为 new
  • :s/old/new/g:替换当前行所有 old 为 new
  • :%s/old/new:替换所有行第一个 old 为 new
  • :%s/old/new/g:替换所有行所有 old 为 new
  • :%s/old/new/gc:替换所有行所有 old 为 new,每次替换前确认

八、其他常用操作

  • .:重复上一次操作
  • ZZ:保存并退出
  • :set nu:显示行号
  • :set nonu:隐藏行号
  • :set hlsearch:开启搜索高亮
  • :set nohlsearch:关闭搜索高亮
  • :set autoindent:开启自动缩进
  • :set paste:进入粘贴模式(避免粘贴时格式错乱)
  • :set nopaste:退出粘贴模式
  • :w 新文件名:另存为新文件
  • :r 文件名:将指定文件内容插入到当前位置
  • v:进入可视模式(按字符选择)
  • V:进入可视行模式(按行选择)
  • Ctrl + v:进入可视块模式(按块选择)

这些是 Vim 中最常用的操作指令,熟练掌握它们可以满足大部分文本编辑需求。随着使用深入,还可以探索更多高级功能和自定义配置。

http://www.lryc.cn/news/599673.html

相关文章:

  • 如何搭建Linux环境下的flink本地集群
  • 为什么选择EasyGBS?
  • 《解锁前端数据持久化与高效查询:IndexedDB深度剖析》
  • vue3单页面连接多个websocket并实现断线重连功能
  • TDengine 转化函数 TO_TIMESTAMP 用户手册
  • 比特币技术简史 第八章:扩展性解决方案 - 闪电网络与隔离见证
  • 软件工程:软件需求
  • Ethereum:告别 personal API,拥抱 Geth 的独立签名器 Clef
  • CRM 系统:实现商机全流程管理的关键
  • Mkdocs相关插件推荐(原创+合作)
  • 力扣Hot100疑难杂症汇总
  • Java环境配置之各类组件下载安装教程整理(jdk、idea、git、maven、mysql、redis)
  • 如何序列化和反序列化动态 XmlElement ?
  • 【SSL证书校验问题】通过 monkey-patch 关掉 SSL 证书校验
  • Linux725 磁盘阵列RAID0 RAID1
  • [python][flask]Flask-Login 使用详解
  • win通过OpenSSL生成.ssh id_rsa密钥方法
  • 基于libhv实现的TCP Client Server支持同步,异步传输 (C++11)
  • QT开发技术【串口和C++20协程,实现循环发送、暂停、恢复、停止】
  • 上位机知识篇---Jetson Nano的深度学习GPU推理
  • TCP模型,mqtt协议01 day41
  • 【算法-图论】图的存储
  • 嵌入式——C语言:指针①
  • Web攻防-业务逻辑篇密码找回重定向目标响应包检验流程跳过回显泄露验证枚举
  • Go 官方 Elasticsearch 客户端 v9 快速上手与进阶实践*
  • 深度学习day02--神经网络(前三节)
  • 安装本地python文件到site-packages
  • STM32基础知识学习笔记:ICODE、DCODE、DMA等常见名词的解释
  • 【C++详解】模板进阶 非类型模板参数,函数模板特化,类模板全特化、偏特化,模板分离编译
  • 在 .NET 中使用 Base64 时容易踩的坑总结