vim 学习总结
vim 学习总结
一、介绍
vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,类似于 Windows 系统下的 notepad(记事本)编辑器。在 Unix 及 Linux 系统的任何版本,vi 编辑器都是完全相同的。
vi 和 vim 都是 Linux 中的编辑器。不同的是,vim 比较高级,可以视为 vi 的升级版本。vi 使用于文本编辑,但是 vim 更适用于coding。
二、vim 介绍
2.1 vim 打开文件的方式
# 方式一:打开指定的文件
$ vim 文件
# 方式二:打开指定的文件,并将光标移动到指定行
$ vim +数字 文件
# 方式三:打开指定文件,并高亮显示关键词
$ vim +/关键词 文件
# 方式四:打开多个文件
$ vim 文件1 文件2 ...
比如,在当前目录下有一个文本文件 test.txt,内容如下:
我在第 1 行
我在第 2 行
我在第 3 行
我在第 4 行


2.2 vim 的三种模式
vim 中存在三种模式:命令模式、编辑模式、末行模式。
- 命令模式:在该模式下不能对文件进行编辑,可以输入快捷键进行一些操作。如「删除行、复制行、移动光标」等等。
- 编辑模式:在该模式下可以对文件的内容进行编辑。
- 末行模式:在该模式下可以通过输入命令来对文件进行操作。如「搜索、替换、保存、退出、撤销、高亮」等等。
打开文件之后默认进入命令模式。
2.3 模式间的切换一栏

2.4 命令模式下的常用操作
2.4.1 光标移动
- 光标移动到行首:shift + ^
- 光标移动到行尾:shift + $
- 光标移动到首行:gg
- 光标移动到末行:G
- 向上翻屏:ctrl + bPgUp(before)
- 向下翻屏:ctrl + fPgDn(after)
2.4.2 复制操作
- 复制光标所在行:yy
- 以光标所在行为准(包含当前行),向下复制指定的行数:数字yy
复制后,
2.4.3 剪切操作
- 剪切光标所在行:dd,剪切后下一行上移
- 以光标所在行为准(包含当前行),向下剪切指定的行:数字dd,剪切后下一行上移
- 剪切光标所在行后下一行不上移:D
2.4.4 粘贴操作
- 搭配「复制 / 剪切」操作一起使用:在想要粘贴的地方按下p(paste)。
2.4.5 撤销/恢复
- 撤销::u (undo)
- 恢复:ctrl + r,恢复(取消)之前的撤销操作
2.4.6 光标的快速移动
- 快速将光标移动到指定的行:数字G
- 以当前光标为准「向上 / 向下」移动指定的行:数字↑数字↓
- 以当前光标为准「向左 / 向右」移动若干字符:数字←数字→
2.5 末行模式下的常用操作
2.5.1 进入 / 退出
- 进入末行模式:在命令模式下输入:
- 退出末行模式:在末行模式下按下Esc
2.5.2 保存
- 保存文件:w(write)
- 文件另存为:w 路径
2.5.3 其他
- 调用外部命令: !命令
- 搜索 / 查找:/关键词
- 在搜索结果中切换上一个结果:N
- 在搜索结果中切换下一个结果:n
- 取消高亮:输入「nohl(no highlight)」
- 字符串替换操作(s-string replace,g-global,%-整个文件):
- s/关键词/替换内容,仅替换光标所在行的第一处符合条件的内容
- s/关键词/替换内容/g,替换光标所在行的全部符合条件的内容
- %s/关键字/替换内容,替换整个文件中每行的第一处符合条件的内容
- %s/关键字/替换内容/g,替换整个文件中全部符合条件的内容
- 行号(number):
- 显示行号:set nu
- 取消显示:set nonu
2.6 编辑模式下的常用操作
2.6.1 进入 / 退出
- 进入编辑模式:在命令模式下输入 i / a / A...
- i:在光标所在行的字符前开始插入
- a:在光标所在行的字符后开始插入
- A:在光标所在行的行尾开始插入
- o:在光标所在行的下面另起一行插入
- O:在光标所在行的上面另起一行插入
- 退出编辑模式:在编辑模式下按下Esc
2.7 vim 编辑多个文件
首先在当前目录下准备多个文件 A.txt、B.txt:
A.txt
我是 A 文件的第一行
我是 A 文件的第二行
我是 A 文件的第三行
B.txt
我是 B 文件的第一行
我是 B 文件的第二行
我是 B 文件的第三行
首先通过$ vim A.txt B.txt打开多个文件,并可以通过「:files」指令查看当前已经打开的文件名称。
- %a(active) : 表示当前正在显示的文件
下面我们来看一下如何切换文件:
- 切换到指定文件:「:open B.txt」
:表示上一个打开的文件
- 切换到上一个(back previous)文件:「:bp」
- 切换到下一个(back next)文件:「:bn」
2.8 退出 vim
直接退出:
- 在命令模式下输入「:q」,然后按下回车
- 在末行模式下输入「q」,然后按下回车
保存并退出
- 在命令模式下输入「:wq」,然后按下回车
- 在末行模式下输入「wq」,然后按下回车
强制退出
在命令模式下输入「:q!」,然后按下回车
在末行模式下输入「q!」,然后按下回车
三、其他功能
3.1 实用功能
3.1.1 代码着色
- 着色:「:syntax on」
- 取消着色:「:syntax off」
3.1.2 计算器
- 进入编辑模式
- 按下ctrl+R,然后输入「=算数表达式」
- 最后按下回车
3.2 vim 的配置
vim 是一款编辑器,和其他编辑器一样,也是有配置文件的。vim 配置有三种情况:
- 在末行模式下输入的配置,如显示行号、配色等等,但这都是临时的修改
- 个人配置文件(~/.vimrc)
- 全局配置文件(vim 自带的,/etc/vimrc)
3.2.1 修改个人配置文件
新建 .virmrc
- 首先通过
$ ls ~/.vimrc查看是否存在 - 如果文件不存在,通过
$ touch ~/.vimrc创建
- 首先通过
编辑 .vimrc:
$ vim ~/.vimrc- 在新的一行添加「set nu」,那么通过 vim 打开的文件都会显示行号了
vim 学习总结的更多相关文章
- Linux学习系列之Linux入门(二)Vim学习
第二篇 Vim学习 主要内容: 基本命令: 插件扩展: 参考资料: vim是一个命令控制的文本编辑器,可以完成几乎我们想要做的所有工作,除了Emacs几乎没有其他的工具能和它匹敌.官方网站是:http ...
- Vi/VIM键盘图, Vi/vim学习图
Vi/vim学习图 引用: Vi键盘图片可视化教程 http://www.cnblogs.com/me115/archive/2010/11/16/1878295.html 网上的文章易流失.感谢分享 ...
- vim学习、各类插件配置与安装
vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...
- 推荐vim学习教程--《Vim 练级手册》
非常不错的vim学习资源,讲解的简单明了,可以作为速查工具,在忘记时就翻下.地址如下: <Vim 练级手册>
- VIM学习二: VIM配置代码及效果图
vim学习及插件 参见:http://www.cnblogs.com/caixu/p/6337926.html .vimrc配置 "***************************** ...
- vim学习之改头换面(基础配置)
还记得在线有个维护博客园的学长说过,这网站的前端做的贼丑,今日一看果真如此.其实我想说毕竟干货多,没有那么多花花肠子.下面开始进入正题. 在入坑了sublime.vscode.atom.notepad ...
- vim学习、各类插件配置与安装【转】
转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...
- Linux之Vim学习
Linux之Vim学习 一般模式 光标移动 按键 作用 j或down方向键 向下移动一个字符 k或up方向键 向上移动一个字符 h或left方向键 向左移动一个字符 l或right方向键 向右移动一个 ...
- 菜鸟vimer成长记——第0章、我眼中的vim学习
这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...
- Vim 学习指南
作者:耀耀 出处:http://www.linuxeden.com/html/news/20130820/142667.html Vim 学习指南 来源:开源中国社区 作者:耀耀 关注我们: 你想 ...
随机推荐
- 为不同版本python安装pip的正确做法
想学习Python3,但是暂时又离不开Python2.在Windows上如何让它们共存呢? 目前国内网站经常会让大家把其中一个python.exe改个名字(嗯,我也这样讲过,在此纠正一下),这样区分开 ...
- 小白学k8s(10)-k8s中ConfigMap理解
理解ConfigMap 什么是ConfigMap ConfigMap的创建 使用key-value 字符串创建 从env文件创建 从目录创建 通过Yaml/Json创建 ConfigMap使用 用作环 ...
- Elasticsearch实战:常见错误及详细解决方案
Elasticsearch实战:常见错误及详细解决方案 1.read_only_allow_delete":"true" 当我们在向某个索引添加一条数据的时候,可能(极少 ...
- NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等
NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏链接:NLP领域知识+项目+码源+方案设计 订阅本专栏你能获得什 ...
- 【C语言进阶】【小项目】实现一个通讯录【C语言知识点汇总项目】通过这个项目,掌握C语言重要知识点
[C语言进阶][小项目]实现一个通讯录[C语言知识点汇总项目]通过这个项目,掌握C语言重要知识点 欢迎来到#西城s的博客,今天,博主带着大家用C实现一个通讯录!干货满满不要错过噢! 作者: #西城s ...
- 数学微积分,学习笔记,等价无穷小的证明:(1+x)^a-1 ~ ax
\(\lim_{x \to 0} \frac{\sqrt[n]{1+x} -1}{\frac{x}{n} } =1\)的证明 \[\lim_{x \to 0} \frac{\sqrt[n]{1+x} ...
- 轻量级按键动作识别模块(C语言)
1.前言 继嵌入式(单片机)裸机 C 语言开发 + 按键扫描(模块分层/非阻塞式)文章后,原来的按键识别基本能满足大部分需求,但是对于双击和多击等多样化的功能需求并不能满足,因此对整个按键动作识别模块 ...
- 火山引擎ByteHouse:如何为OLAP设计高性能向量检索能力?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 背景 随着LLM技术应用及落地,数据库需要提高向量分析以及AI支持能力,向量数据库及向量检索等能力"异军 ...
- Lambda 表达式总结
1 Lambda 表达式简介 Lambda 表达式是 JDK 8 的新特性,主要用于简化匿名内部类的定义,帮助用户方便.高效地书写优雅的代码. Lambda 表达式实现的必须是一个接口,并且接 ...
- maven打包时打包指定的lib文件夹
今天在打包自己的spring boot项目时遇到了问题, 报找不到类和符号. 因为我有些依赖是放在项目lib文件夹中,那么打包的时候要连把它一起打包. 修改pom.xml, 添加一下内容: <b ...