Linux Vim操作看这篇文章就够了
一、什么是Vim
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
二、Vim键位图

三、Vim的三种模式
Vim 有三种模式,分别是命令模式,输入模式和编辑模式,这 3 种工作模式可随意切换。

1、命令模式
当我们用Vim 编辑文件时,默认处于命令模式。此模式下,敲击键盘动作会被识别为命令,而非输入字符,可使用方向键(↑、↓、←、→)或 k、j、h、i 移动光标的位置。
命令模式下常用的几个命令:
| 命令 | 功能描述 |
|---|---|
| i | 切换到输入模式,可以输入字符 |
| x | 删除当前光标所在处的字符 |
| : | 切换到编辑模式,可以底部光标闪烁处输入命令 |
2、输入模式
在命令模式下按 i 键进入输入模式,按 Esc 键即可返回命令模式。

在输入模式下,Vim 可以对文件执行写操作,按键及功能描述见下表。
| 按键 | 功能描述 |
|---|---|
| i | 在当前光标所在位置插入随后输入的文本 |
| I | 相当于光标移动到行首,再执行 i 命令 |
| o | 在光标所在行的下面插入新的一行 |
| O | 在光标所在行的上面插入新的一行 |
| a | 在当前光标所在位置之后插入随后输入的文本 |
| A | 相当于光标移动到行尾,再执行a命令 |
| Enter | 回车键,换行 |
| Backspace | 删除光标前一个字符 |
| Delete | 删除光标后一个字符 |
| Home/End | 移动光标到行首/行尾 |
| Page Up/Page Down | 上/下翻页 |
| Esc | 退出输入模式,切换到命令模式 |
3、编辑模式
在命令模式下按下:(英文冒号),进入编辑模式。

编辑模式可以输入单个或多个字符的命令,可用的命令非常多。在后面使用实例中会做介绍。
按ESC键可随时退出编辑模式。
四、Vim 使用实例
1、打开文件
打开一个自己编写的文件,默认进入命令模式:
[root@wayne:~]# vim myvim.txt

文件的下方会显示文件的一些信息,包括文件的总行数和字符数,以及当前光标所在的位置等。
2、编辑文件
在命令模式之中,按下 i, o, a 中的任意一个字符进入输入模式,此时左下角状态栏中会出现 –INSERT- 的字样。
Vim 插入文本
在输入模式中,除了 Esc 键之外,其他的按键都可以视作为一般的输入按键。

Vim 查找文本
| 快捷键 | 功能描述 |
|---|---|
| /abc | 从光标所在位置向前查找字符串 abc |
| /^abc | 查找以 abc 为行首的行 |
| /abc$ | 查找以 abc 为行尾的行 |
| ?abc | 从光标所在为主向后查找字符串 abc |
| n | 向同一方向重复上次的查找指令 |
| N | 向相反方向重复上次的查找指定 |
如查找字符串 "new"

Vim 替换文本
| 快捷键 | 功能描述 |
|---|---|
| /old/new | 用new替换当前行第一个old |
| /a1/a2/g | 将当前光标所在行中的所有 a1 用 a2 替换 |
| :n1,n2s/a1/a2/g | 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换 |
| :%s/a1/a2/g | 将文件中所有的 a1 都用 a2 替换 |
| :%s/^/xxx/g | 在每一行的行首插入xxx,^表示行首 |
| :%s//xxx/g | −在每一行的行尾插入xxx,/xxx/g在每一行的行尾插入xxx,表示行尾 |
如替换”new” 为 ”old ”

Vim 删除文本
| 快捷键 | 功能描述 |
|---|---|
| x | 删除光标所在位置的字符 |
| dd | 删除光标所在行 |
| ndd | 删除当前行(包括此行)后 n 行文本 |
| dG | 删除光标所在行一直到文件末尾的所有内容 |
| D | 删除光标位置到行尾的内容 |
| :a1,a2d | 函数从 a1 行到 a2 行的文本内容 |
如按dd删除第3行

Vim 复制粘贴文本
| 快捷键 | 功能描述 |
|---|---|
| p | 将剪贴板中的内容粘贴到光标后 |
| P(大写) | 将剪贴板中的内容粘贴到光标前 |
| y | 复制已选中的文本到剪贴板 |
| yy | 将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行 |
| yw | 将光标位置的单词复制到剪贴板 |
如先按yy,复制第3行,再按p粘贴

3、保存退出
输入模式是不可以直接切换到编辑模式的,需要先按下 Esc键回到命令模式,此时左下角的 – INSERT – 会消失。再按下:(英文冒号),进入编辑模式。
| 命令 | 功能描述 |
|---|---|
| :wq | 保存并退出 Vim 编辑器 |
| :wq! | 保存并强制退出 Vim 编辑器 |
| :q | 不保存就退出 Vim 编辑器 |
| :q! | 不保存,且强制退出 Vim 编辑器 |
| :w | 保存但是不退出 Vim 编辑器 |
| :w! | 强制保存文本 |
| :w filename | 另存到 filename 文件 |
| x! | 保存文本,并退出 Vim 编辑器 |
| ZZ | 直接退出 Vim 编辑器 |
五、Vim 其他按键说明
| 快捷键 | 功能描述 |
|---|---|
| :set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
| :set nonu | 与 set nu 相反,为取消行号! |
| [Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
| [Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
| [Ctrl] + [d] | 屏幕『向下』移动半页 |
| [Ctrl] + [u] | 屏幕『向上』移动半页 |
| + | 光标移动到非空格符的下一行 |
| - | 光标移动到非空格符的上一行 |
| 0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
| $ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
| H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
| M | 光标移动到这个屏幕的中央那一行的第一个字符 |
| L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
| G | 移动到这个档案的最后一行 |
| nG | n 为数字。移动到这个档案的第 n 行 |
| gg | 移动到这个档案的第一行,相当于 1G 命令 |
| u | 撤销前一个动作(常用) |
| [Ctrl]+[r] | 恢复上一个动作(常用) |
| . | 重复前一个动作 (常用) |
以上,如果觉得对你有帮助,点个赞再走吧,这样@知微之见也有更新下去的动力!
也欢迎私信我,一起交流!
Linux Vim操作看这篇文章就够了的更多相关文章
- Vue开发入门看这篇文章就够了
摘要: 很多值得了解的细节. 原文:Vue开发看这篇文章就够了 作者:Random Fundebug经授权转载,版权归原作者所有. 介绍 Vue 中文网 Vue github Vue.js 是一套构建 ...
- 干货|工作中要使用Git,看这篇文章就够了
本文将从 Git 入门到进阶.由浅入深,从常用命令.分支管理.提交规范.vim 基本操作.进阶命令.冲突预防.冲突处理等多方面展开,足以轻松应对工作中遇到的各种疑难杂症,如果觉得有所帮助,还望看官高抬 ...
- 数据可视化之PowerQuery篇(四)二维表转一维表,看这篇文章就够了
https://zhuanlan.zhihu.com/p/69187094 数据分析的源数据应该是规范的,而规范的其中一个标准就是数据源应该是一维表,它会让之后的数据分析工作变得简单高效. 在之前的文 ...
- 还不会Traefik?看这篇文章就够了!
文章转载自:https://mp.weixin.qq.com/s/ImZG0XANFOYsk9InOjQPVA 提到Traefik,有些人可能并不熟悉,但是提到Nginx,应该都耳熟能详. 暂且我们把 ...
- 想让安卓app不再卡顿?看这篇文章就够了
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由likunhuang发表于云+社区专栏 实现背景 应用的使用流畅度,是衡量用户体验的重要标准之一.Android 由于机型配置和系统的 ...
- 关于CompletableFuture的一切,看这篇文章就够了
文章目录 CompletableFuture作为Future使用 异步执行code 组合Futures thenApply() 和 thenCompose()的区别 并行执行任务 异常处理 java中 ...
- 想要彻底搞懂大厂是如何实现Redis高可用的?看这篇文章就够了!(1.2W字,建议收藏)
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- Kafka面试,看这篇文章就够了
原文链接:https://mp.weixin.qq.com/s/zxPz_aFEMrshApZQ727h4g** 引言 MQ(消息队列)是跨进程通信的方式之一,可理解为异步rpc,上游系统对调用结果的 ...
- 微信小程序获取手机号码看这篇文章就够了
前言 微信小程序获取手机号码,从官方文档到其他博主的文档 零零散散的 (我就是这样看过来 没有一篇满意的 也许是我搜索姿势不对) 依旧是前人栽树 后人乘凉 系列.保证看完 就可以实现获取手机号码功能 ...
- 讲真,MySQL索引优化看这篇文章就够了
本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开. 一.MySQL——索引基础 首先,我们将从索引基础开始介绍一下什么 ...
随机推荐
- 如何开发一套苹果cms前端模板
本文运用了苹果cms官网的模板开发教程,开发了一套苹果cms的前端模板,感兴趣的同学可以去github下载使用. 什么是模板 模板是网站的主题外观,也被称为主题或皮肤.通过使用不同的模板,网站的前台可 ...
- SpringCloud对使用者透明的数据同步组件
一.背景 云端使用Spring Cloud实现,A服务有一些数据,B和C服务也需要A服务的这些数据,但是系统上面只有A服务有数据操作的入口,B和C服务只能从A服务处同步数据到自己的表里面. 解决方案是 ...
- DBA实战面试题(一)
数据库面试测试题(一) 简述当前主流RDBMS软件有哪些?开源且跨平台的数据库软件有哪些? 参考答案 当前主流的数据库服务器软件有: Oracle . DB2 . SQL SERVER .MySQL ...
- 基于AHB_BUS SRAM控制器的设计-01
基于AHB Bus SRAM控制器的设计 1.课程目标 接到一个需求要设计SRAM或者I-cache等,需要问后端要一个Memory Memory Compiler是由后端工程师完成的,Memory ...
- STM32 芯片锁死解决方法
芯片锁死原因: 1.烧进去的工程对应器件与目标器件不一致: 2.烧进去的工程HSE_VALUE与目标板上晶振频率不一致: 3.... 解决方法: 1.工程设置 2.按住复位按键,或短接复位脚电容,点击 ...
- [转帖]S3FS 简介及部署
PS:文章一般都会先首发于我的个人Blog上:S3FS 简介及部署 · TonghuaRoot's BloG. ,有需要的小伙伴可以直接订阅我的Blog,获取最新内容. 0x00 前言 S3FS可以把 ...
- [转帖]Kafka常见使用场景与Kafka高性能之道
https://juejin.cn/post/6958997115012186119 消息队列使用场景 队列,在数据结构中是一种先进先出的结构,消息队列可以看成是一个盛放消息的容器,这些消息等待着各种 ...
- [转帖]部署Alertmanager
https://flashcat.cloud/docs/content/flashcat-monitor/prometheus/alert/manager-install/ Alertmanager和 ...
- [转帖]关于kafka压力测试(使用官方自带脚本测试)
文章目录 kafka官方自带压测脚本文件 Producer生产者环境测试 测试命令 返回测试结果 Consumer消费者环境测试 测试命令 测试结果说明 提升kafka的吞吐量 可通过以下的方式来提升 ...
- Oracle 建立数据库dblink 然后同步部分表内容的总结
同步处理部分数据 背景 最近在项目上发现两个分库进行数据同步时部分内容同步存在问题. 最简单的方法是导表,但是害怕有其他关联信息异常, 所以同事想到了dblink的方式. 这里简单整理一下 同事用到的 ...