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

相关推荐
zx_7414848122 分钟前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS34 分钟前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
金士顿1 小时前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot
做运维的阿瑞2 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
百万蹄蹄向前冲2 小时前
密码都对Node.js却连不上Linux数据库
linux·mysql
彧azz2 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
susplus3 小时前
【ARM 裸机开发 (IMX6ULL-mini)】GNU工具、Makefile 工程构建、链接脚本详解|C 语言点灯 + 蜂鸣器驱动
linux·arm·makefile·imx6ull
Shadow(⊙o⊙)3 小时前
Linux进阶知识1.0
linux·运维·服务器
>Andre<4 小时前
UFS5.0标准中文全译·卷一:范围、术语与架构
android·linux·嵌入式硬件
用户0510122572964 小时前
Linux下有关QT显示环境变量设置
linux·嵌入式