vim基本使用

vi/vim 共分为三种模式,命令模式、插入模式和末行模式。

命令模式

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。常用命令如下:

(1)切换工作模式

  • i -- 切换到插入模式,在光标当前位置开始输入文本
  • a -- 切换到插入模式,在光标后一个位置开始输入文本
  • o -- 在当前行的下方插入一个新行,并进入插入模式
  • s -- 删除当前光标所在字符,并进入插入模式
  • I -- 光标移到当前行首,并进入插入模式
  • A -- 光标移到当前行尾,并进入插入模式
  • O -- 在当前行的上方插入一个新行,并进入插入模式
  • S -- 删除当前光标所在行,并进入插入模式
  • : -- 切换到末行模式
  • ZZ -- 保存并退出编辑器

(2)移动光标

  • h -- 光标左移一格
  • j -- 光标下移一格
  • k -- 光标上移一格
  • l -- 光标右移一格
  • gg -- 光标移到首行第一个字符
  • G -- 光标移到末行最后一个字符
  • 行号G -- 光标跳到指定行,例如88G,跳到第88行
  • gg=G -- 整个文件重新缩进,可用于代码格式化
  • % -- 若光标在括号上,跳转到匹配的另一半括号
  • 0 -- 光标移到当前行首
  • $ -- 光标移到当前行尾

(3)删除操作

  • x -- 删除当前光标所在字符(工作模式不变)
  • dw -- 删除光标所在单词,光标得在单词开始位置,否在只从光标位置删
  • D或者d$ -- 从光标位置删除,一直到该行行尾(包括光标所在字符)
  • d0 -- 从光标位置删除,一直到该行行首(不包括光标所在字符)
  • dd -- 删除光标所在行
  • 行数dd -- 删除多行,例如3dd,从光标所在行开始删除3行
  • r -- 替换光标所在字符,先按r,再按新字符
  • 按v切换为"可视模式",用hjkl移动光标来选中待删除区域,按d删除指定区域

(4)复制粘贴

  • yy -- 复制当前行
  • 行数yy -- 复制多行,例如3yy,从光标所在行开始复制3行
  • 复制选中区域同删除,只不过最后按y
  • p -- 在光标下一行粘贴
  • P -- 在光标上一行粘贴

(5)查找替换

  • /待查找内容 -- 例如:/copy(回车)查找"copy",按n切换下一个

  • * -- 查找光标所在单词(往后查找),按*切换下一个

  • -- 查找光标所在单词(往前查找),按#切换下一个

(5)其他

  • u -- 撤销上一次操作
  • ctrl + r -- 重做上一次撤销的内容
  • K -- 光标至于函数上,按K跳转man手册,nK跳转第n卷

插入模式

在命令模式下按下 i 就进入了插入模式,使用Esc键可以返回到命令模式。插入模式下可自由输入文本。

末行模式

在命令模式下按下 :(英文冒号)就进入了末行模式。末行模式可以输入单个或多个字符的命令,可用的命令非常多。常用命令如下:

  • w:保存文件
  • q:退出编辑器
  • wq:保存并退出编辑器
  • q!:强制退出编辑器,不保存修改
  • 行号:跳转指定行
  • set nu:显示行号
  • !命令:执行指定linux命令,例如!ps aux

ESC键可随时退出底线命令模式。

单行替换:末行模式下,输入:s /原内容/新内容

通篇替换:末行模式下,输入:%s /原内容/新内容/g,不加g的话只会替换每行第一个

指定行替换:末行模式下,输入:起始行号,终止行号s /原内容/新内容/g,例如:29,35s /printf/println/g

相关推荐
java叶新东老师18 分钟前
linux 部署 flink 1.15.1 并提交作业
linux·运维·flink
vsropy1 小时前
VScode输出中文乱码问题解决
ide·vscode·编辑器
程序员JerrySUN1 小时前
Linux系统架构核心全景详解
linux·运维·系统架构
无敌的牛1 小时前
Linux文件理解,基础IO理解
linux·运维·服务器
患得患失9491 小时前
【前端】【vueDevTools】使用 vueDevTools 插件并修改默认打开编辑器
前端·编辑器
未来之窗软件服务1 小时前
跨平台 WebSocket 服务器的设计与实现 —— 基于.NET 8 的跨操作系统解决方案linux,macos,windows——开发工具
linux·服务器·websocket·仙盟创梦ide·东方仙盟
杰哥的狗2 小时前
nacos连接失败,启动失败常见问题
linux·docker
Jackilina_Stone2 小时前
【faiss】用于高效相似性搜索和聚类的C++库 | 源码详解与编译安装
android·linux·c++·编译·faiss
XXYBMOOO2 小时前
Xilinx-FPGA-PCIe-XDMA 驱动内核兼容性问题修复方案
linux·运维·服务器
爱学习的狮王3 小时前
window10和ubuntu22.04双系统之卸载ubuntu系统
linux·运维·ubuntu