vim 常见操作

Vim 工作模式

1、vim 三种基本的工作模式

vim有三种基本的工作模式,分别为:命令模式、末行模式、编辑模式。关于这三种工作模式的介绍,请见下文。

1.1、命令模式

使用vim打开文件之后,首先进入命令模式,它是vim编辑器的入口模式。在命令模式下,通过使用命令对文件进行常规的编辑操作,例如:复制、粘贴、删除、定位、翻页等等。

1.2、末行模式

末行模式是vim编辑器的出口,要退出vim,必须要在末行模式下。在末行模式下,执行退出文件、保存并退出文件等操作。

1.3、编辑模式

正常的编辑文字模式。

2、三种模式的切换操作

(1)vim打开一个文件进入的就是命令模式,另外两种模式需要回到命令模式才能进入彼此。

(2)在命令模式中按下i,I,o,O,a,A,r,R任何一个字母后进入编辑模式,进入编辑模式后,下方会出现INSERT或者REPLACE字样,按Esc键退出编辑模式,回到命令模式。

(3)在命令模式中按下:,/,?中任意一个即可进入末行模式,末行模式可以对文档或者vim环境进行操作,例如查找、读取、存盘、替换、离开、显示行号等。

3、三种模式的切换示意图

在这里插入图片描述
如上图所示,我们只要能灵活运用三个键:推出键esc、冒号键:、字母键i,就可以从容地在vim的三种模式中自由切换。

Vim 保存和退出命令

1、Vim 保存命令

1.1、:w命令,普通保存

英文全称是:write。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中。注意,此命令保存编辑后的文件内容,但不退出vim编辑器。

1.2、:w!命令,强制保存

强制保存命令。如果原有文件的访问权限不允许写入文件,例如原有的文件为只读文件,则可使用这个命令强制写入。

2、Vim 保存并退出命令

2.1、:wq命令,保存并退出

英文全称是:write & quit。这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中,然后退出vim编辑器。

备注:另外一种替代的方法是用ZZ命令。ZZ常用于描述睡觉的呼噜声,指人睡着了。用在vim中,也很形象贴切,退出vim编辑器让文件“睡觉”,不再打扰它。

2.2、:wq!命令,强制保存并退出

强制保存文件内容后退出vim编辑器。这个命令的作用是把内存缓冲区中的数据强制写到启动vim时指定的文件中,然后退出vim编辑器。

3、Vim 退出命令

3.1、:q命令

在未做任何编辑处理而准备退出vim时,可以使用此命令。如果已做过编辑处理,则vim不允许用户使用“:q”命令退出,同时还会输出下列警告信息:No write since last change (:quit! overrides)

3.2、:q!命令

强制退出vim编辑器,放弃编辑处理的结果。如果确实不需要保存修改后的文件内容,可输入“:q!”命令,强行退出vim编辑器。

Vim 翻页命令

提示:vim 翻页命令需要处于命令行模式。vim
三种模式的切换很简单,我们只要能灵活运用三个键:推出键esc、冒号键:、字母键i,就可以从容地在vim的三种模式中自由切换。更多介绍可以参考:《Vim
工作模式》

当我们使用vim编辑器查看脚本时,按上下键查看文档内容,这种工作方式效率很低。尤其是遇到突发情况,掌握vim的翻页快捷键十分有利于工作的开展。vim的翻页快捷键命令如下所示:

1、翻整页命令

Ctrl + f 键 (f 的英文全拼为:forward)
Ctrl + b 键 (b 的英文全拼为:backward)

2、翻半页命令

Ctrl + d 键 (d 的英文全拼为:down)
Ctrl + u 键 (u 的英文全拼为:up)

3、定位到页眉和页脚

直接查看该脚本的第一行,请输入:0,然后回车即可;直接查看该脚本的最后一行,请输入:$,然后回车即可。

这里是引用

备注:$ 常用于表示结尾的含义。

Vim 查找与替换

vim有强大的字符串查找功能。我们通常在vim下要查找字符串的时候,都是输入/或者?加上需要查找的字符串来进行搜索,比如,想搜索user这个单词,可以输入 :/user 或者 ?/user,两者的区别是前者是从上往下搜索,后者是从下往上搜索。

1、vim 查找字符串命令

1.1、从开头查找

在命令模式下,输入 😕 + 你要查找的字符,按下回车,可以看到vim把光标移动到该字符串处。

1.2、从结尾处查找

在命令模式下,输入 :? + 你要查找的字符,按下回车,就能搜索到字符串或字符。

备注:值得注意的是“/”是向下查找,而“?”是向上查找,而在键盘定义上“?”刚好是“/”的上档符。

1.3、上下匹配

默认情况下,搜索会定位到一个离当前光标最近的一个匹配结果。如果我们想要转到下一个/上一个搜索结果,请使用以下按键:

n – 寻找下一个匹配结果

N – 寻找上一个匹配结果

1.4、关闭高亮

搜索后,我们打开别的文件,发现也被高亮了,怎么关闭高亮?

命令模式下,输入:nohlsearch,当然,也可以简写为:noh。

2、vim 字符串替换

查找和替换是任意一款文本编辑器的一组常见和必备功能。Vim 使用以下命令结构实现替换功能。

替换
😒/old/new - 用new替换当前行第一个old。
😒/old/new/g - 用new替换当前行所有的old。
:n1,n2s/old/new/g - 用new替换文件n1行到n2行所有的old。
:%s/old/new/g - 用new替换文件中所有的old。
:%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
:%s//xxx/g−在每一行的行尾插入xxx,/xxx/g−在每一行的行尾插入xxx,表示行尾。
所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。

g:全局替换
gc:在每次更换之前要求确认
gn:忽略替换功能并突出显示查找结果。

Vim 保存文件

1、vim保存文件并设置文件名

我们有时候会直接输入vim命令进入编辑模式,当编辑完文件后,保存时会提示:E32: No file name

原因就是我们进入时没有输入文件名,退出时就报错了。如何保存未命名vim的文件呢?请看下面的介绍:

第一步:输入完成后按下esc退出输入模式

第二步:从输入模式切换到末行模式,即输入:w + 文件路径及文件名称,然后回车。例如::w test.txt

提醒:vim不会自动建立不存在的文件夹,需要我们手动建立。

2、vim设置默认路径

如上所示,输入 :w test.txt 之后,默认保存在当前的目录,可以设置保存到已定义的路径。

需要在_vimrc文件中添加:

exec "cd " . fnameescape("/usr/tom/")

/usr/tom/换成自己所需的路径,这样在vim中新建文件后直接用命令 :w + 文件名 就可以自动保存到已定义的路径。

Vim文件删除与清空

dd 命令

1.单行删除

在命令模式下
dd命令可以快捷删除光标所在行,
d+上下方向键,删除光标所在行和上下一行 ,
d+左右方向键 ,删除光标左右一个字符

2.文件多行删除

d命令是Vim中非常常用的命令,它可以删除行、删除字符、剪切等。当我们需要清空一个文件的内容时,可以使用dd命令来实现。

多行删除

:1,3d

删除1至3行 内容

删除当前行之前的所有行

:1,.-1d

删除当前行之后的所有行

:.+1,$d

删除当前行之后的所有行

:.+1,$d

删除包含text关键字的行,中/reg/ 是正则表达式

:g/text/d

删除以#开的的注释内容。

:g/^#/d

3.文件内容删除

实现文件内容的清空
1,$d

:1,$d

以上命令的含义是:将1行到最后一行的内容全部删除,即清空整个文件的内容。在Vim中, 表示最后一行的位置。 ∗ ∗ 或者 1 , 表示最后一行的位置。 **或者1, 表示最后一行的位置。或者1,dG**

:1,$dG

dG命令的含义是:删除光标所在行到最后一行的内容,通过将光标移动到第一行来达到清空整个文件的效果。
或者%d

:%d

%表示文件中的所有行,%d删除所有航
或者命令行dG
按esc键后,先按gg(到达顶部),然后dG

文件操作撤销

在命令行模式下文件操作的撤销与恢复通过快捷键操作
u 撤销上一步的操作
Ctrl+r 恢复上一步被撤销的操作

文件内容的选择、粘贴、复制、剪切

文件粘贴复制

在命令行模式下
全部复制:按esc键后,先按gg,然后ggyG
全选高亮显示:按esc键后,先按gg,然后ggvG或者ggVG
粘贴:p,在光标后一个单词位置粘贴

单行复制:按esc键后, 然后yy
单行删除:按esc键后, 然后dd

文件剪切

d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.
d 剪切选定块到缓冲区;
dd 剪切整行
d^ 剪切至行首
d$ 剪切至行尾
dw 剪切一个word 单词
dG 剪切光标所在行至档尾

vim文件内容缩进

>命令是Vim中的缩进命令,可以用来对一行或多行的内容进行缩进。当对一个空文件使用>命令时,会清空文件内容并进入插入模式。

:>

以上命令的含义是:对当前行进行缩进

vimrc配置文件简介

1、.vimrc是什么?

.vimrc是vim的配置文件,vim编辑器相关的所有功能开关都可以通过.vimrc文件进行设置。

备注:文件名中的 “rc” 是出自 “run commands”。最初的源头是麻省理工学院在 1965 年发展的 CTSS
系统,其中有一个从档案中取出一系列命令来执行的功能,其被称为 run commands,这种档案又称为一个
runcom。现在多引申为配置文件之意。

2、.vimrc存放路径

.vimrc配置文件分系统配置和用户配置两种。系统.vimrc配置文件存放在vim的安装目录,默认路径为/usr/share/vim/.vimrc。用户.vimrc配置文件存放在用户主目录下~/.vimrc。

注意:用户配置文件优先于系统配置文件,vim启动时会优先读取当前用户根目录下的.vimrc文件。所以与个人用户相关的个性化配置一般都放在~/.vimrc中。

在系统命令行下,执行 vim --version 命令可以查看当前 vim 所使用的配置文件的保存路径,如下图所示:
在这里插入图片描述
在上面,我们看到列出了几个 vimrc 文件,有一个系统的 vimrc 文件,还有用户的 vimrc 文件,还有2nd user vimrc file。另外,出于和vi兼容的目的,vim也支持vi的exrc配置文件。

vim 启动时,会先尝试执行系统的 vimrc 文件,然后将按照上述顺序查找用户 vimrc,并使用所找到的第一个用户 vimrc 中的配置,忽略其余的用户 vimrc。

如果使用 vim -u filename 命令来启动 vim,则会用你指定的 filename 作为 vim 的配置文件(在调试你的 vimrc 时有用);如果用 vim -u NONE 命令启动 vim,则不读取任何 vimrc 文件,当你怀疑你的 vimrc 配置有问题时,可以用这种方式跳过 vimrc 的执行。

3、.vimrc入门简介

默认情况下,vim编辑器里既不显示行号,也没有语法高亮度、智能缩进。为了方便使用,基本的vim配置选项一般都会包括:

显示行号

set number

突出显示当前列

set cursorcolumn

显示括号匹配

set showmatch

设置缩进,设置Tab长度为4空格

set tabstop=4

设置注释
在vimrc中,双引号开头的行,将被当作注释忽略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#,数值计算——用算法加速序列的收敛的计算方法与源程序

算法对序列的收敛加速。初始化方式使用参数nmax调用构造函数,nmax是要求和的项数,以及eps,即所需的精度。然后连续调用next函数,参数为next部分和序列的。序列极限的当前估计值为next返回。检测到收敛设置标志cnvgd。 using Syst…

C# 设置、获取程序,产品版本号

右键,程序属性。打开“程序集信息” 选择需要设置的版本信息。下面的代码,获取不同的设置内容。 string 其他 Assembly.GetExecutingAssembly().FullName; string 程序集版本 Assembly.GetExecutingAssembly().G…

优化学习体验是在线培训系统的关键功能

在线培训系统是当今教育领域的一个重要工具,帮助学生和教师提高学习效果和教学质量。一个功能完善的在线培训系统可以提供丰富多样的学习资源和交互方式,以满足不同学生的需求。 个性化学习路径 每个学生的学习需求和进度都不同。通过个性化学习路径功…

考研C语言进阶题库——更新41-50题

目录 41.编写程序要求输出整数a和b若a和b的平方和大于100,则输出a和b的平方和,否则输出a和b的和 42.现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:第一项是1/1,第二项是是…

排序算法之详解冒泡排序

引入 冒泡排序顾名思义,就是像冒泡一样,泡泡在水里慢慢升上来,由小变大。虽然冒泡排序和冒泡并不完全一样,但却可以帮助我们理解冒泡排序。 思路 一组无序的数组,要求我们从小到大排列 我们可以先将最大的元素放在数组…

CSS如何将浏览器文字设置小于12px

CSS如何将浏览器文字设置小于12px 使用transform: scale进行缩放 transform: scale(0.8);<div><p class"first">第一段文字</p><p class"second">第二段文字</p> </div>.first {font-size: 12px; }.second {font-si…

继承中的构造与析构

思考 如何初始化父类成员&#xff1f; 父类构造函数和子类构造函数有什么关系&#xff1f; 子类对象的构造 子类中可以定义构造函数 子类构造函数 必须对继承而来的成员进行初始化 直接通过初始化列表或者赋值的方式进行初始化调用父类构造函数进行初始化 父类构造函数在子…

数据分析实战│价格预测挑战【文末赠书】

文本分析是指对文本信息的表示及特征项的选取&#xff0c;商品文本的描述能够反映特定立场、观点、价值和利益。考虑到网上海量的商品数量&#xff0c;对产品的定价难度很大&#xff0c;因此可以使用商品描述帮助商户定价。比如&#xff0c;服装具有较强的季节性价格趋势&#…

jmeter-results-detail-report_new.xsl文件设置dateReport

<!-- Defined parameters (overrideable) <td bgcolor"#ff00ff"> --> <xsl:param name"showData" select"y"/> <xsl:param name"titleReport" select"测试报告"/> <xsl:param name&…

lama-cleaner:基于SOTA AI 模型Stable Diffusion驱动的图像修复工具

介绍 由 SOTA AI 模型提供支持的图像修复工具。从照片中删除任何不需要的物体、缺陷、人物&#xff0c;或擦除并替换&#xff08;由Stable Diffusion驱动&#xff09;照片上的任何东西。 特征 1.多种SOTA AI模型 擦除模型&#xff1a;LaMa/LDM/ZITS/MAT/FcF/Manga 擦除和替…

数据结构——布隆计算器

文章目录 1.什么是布隆过滤器&#xff1f;2.布隆过滤器的原理介绍3.布隆过滤器使用场景4.通过 Java 编程手动实现布隆过滤器5.利用Google开源的 Guava中自带的布隆过滤器6.Redis 中的布隆过滤器6.1介绍6.2使用Docker安装6.3常用命令一览6.4实际使用 1.什么是布隆过滤器&#xf…

【Git分支操作---讲解二】

Git分支操作---讲解二 查看分支创建分支切换分支修改分支切换分支合并分支合并分支【冲突】(只会修改主分支不会修改其他分支)什么时候会有冲突&#xff1f; 查看分支 创建分支 切换分支 修改分支 切换分支 合并分支 合并分支【冲突】(只会修改主分支不会修改其他分支) 什么时…

[Mac软件]Pixelmator Pro 3.3.12 专业图像编辑中文版

Pixelmator Pro是专为Mac设计的功能强大&#xff0c;美观且易于使用的图像编辑器。借助广泛的专业级无损图像编辑工具&#xff0c;Pixelmator Pro可使您发挥出最佳的照片效果&#xff0c;创建华丽的构图和设计&#xff0c;绘制&#xff0c;绘画&#xff0c;应用令人惊叹的效果&…

【OpenGauss源码学习 —— 执行算子(Result 算子)】

执行算子&#xff08;Result 算子&#xff09; 控制算子Result 算子ExecInitResult 函数ResultState 结构体ExecInitResultTupleSlot 函数ExecAllocTableSlot函数 ExecResult 函数TupleTableSlot 结构体ExecProcNode 函数ExecProcNodeByType 函数ExecProject 函数 ExecEndResul…

【MyBatis】动态SQL > 重点:${...}和#{...}与resultMap和resultType的区别

目录 一、MyBatis动态sql 1.1 动态sql的作用 1.2 动态sql作用论证 1.2.1 条件判断&#xff1a;<if> 1.2.2 循环迭代&#xff1a;<foreach> 1.2.3 SQL片段重用 1.2.4 动态条件组合&#xff1a;<choose><when><otherwise> 1.2.5 <where…

UE4/5Niagara粒子特效之拖尾渐变

目录 开始操作 发射器一的制作 添加新的模块 ​编辑 让粒子长久存在 添加颜色 发射器二的制作 第三人称模板添加Niagara 效果 添加颜色 效果 隐藏第一个发射器 开始操作 首先创建一个粒子系统&#xff0c;用Fountain这个模板&#xff1a; 发射器一的制作 将不需要的…

【大数据】Flink 详解(五):核心篇 Ⅳ

Flink 详解&#xff08;五&#xff09;&#xff1a;核心篇 Ⅳ 45、Flink 广播机制了解吗&#xff1f; 从图中可以理解 广播 就是一个公共的共享变量&#xff0c;广播变量存于 TaskManager 的内存中&#xff0c;所以广播变量不应该太大&#xff0c;将一个数据集广播后&#xff0…

代码随想录算法训练营(回溯总结篇)

回溯也可以说是暴力搜索&#xff08;最多剪枝一下&#xff09;。回溯是递归的副产品&#xff0c;只要有递归就会有回溯。 一.分类 1.组合问题 &#xff08;1&#xff09;按组合元素的个数 &#xff08;2&#xff09;按组合元素的总和 有重复元素 同一元素可以重复选&#x…

【LeetCode-中等题】3. 无重复字符的最长子串

题目 题解一&#xff1a;单指针&#xff0c;滑动窗口 思路&#xff1a; 设置一个左指针&#xff0c;来判断下一个元素是否在set集合中&#xff0c;如果不在&#xff0c;就加入集合&#xff0c;right继续&#xff0c;如果在&#xff0c;就剔除重复的元素&#xff0c;计算串的长度…

如何在Windows、Mac和Linux操作系统上安装Protocol Buffers(protobuf)编译器

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…