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 ,群不删除ggdG
全选高亮显示:按esc键后,先按gg,然后ggvG或者ggVG
粘贴:p,在光标后一个单词位置粘贴 , 如果粘贴板上没有内容 p为新增一空行 , dd为删除光标所在行,yy为新增一行

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

复制多行
如果需要复制多行,可以使用 y 与移动命令结合使用。比如我们需要复制从当前行起三行,则可以使用如下命令
在命令行模式下,输入

3yy

其中 3yy 表示复制当前行及其下面两行

如果需要复制整个文件,可以使用 y 命令配合 % 符号使用。

:%y

其中 :% 表示选择整个文件,y 表示复制选中的行。

文件粘贴复制方式二

Vim中的复制粘贴操作

需要指令:

v: 进入Visual模式
gg: 光标移动到文本第一行
G: 光标移动到文本的最后一行
y: 复制到vim寄存器中,非windows系统剪贴板。
p: 粘贴

操作步骤

1、 复制粘贴指定文本
进入Vim编辑器,键入 v 进入Visual模式
移动光标选中需要复制的内容。
键入 y 复制,左下角会显示 “… line yanked” 表示复制成功
之后在vim内键入 p 即可粘贴内容。

2、 全选复制

进入Vim编辑器,按 v 进入Visual模式。
键入 gg 到达文本第一行。
键入 G 到达文本最后一行并选中所有文本。
键入 y 即可复制到寄存器中。
键入 p 即可粘贴寄存器中的内容。

注意: Vim中 ‘y’ 指令表示复制到寄存器中,非windows剪贴板。无法使用 "Ctrl v"在windows系统中粘贴,只能使用 p 指令在Vim编辑器中粘贴。

文件剪切

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中,双引号开头的行,将被当作注释忽略。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RISC-V公测平台发布· CoreMark测试报告

一. CoreMark简介 CoreMark是一款用于评估CPU性能的基准测试程序,它包含了多种不同的计算任务,包括浮点数、整数、缓存、内存等方面的测试。CoreMark的测试结果通常被用来作为CPU性能的参考,它可以帮助开发人员和系统管理员评估不同处理器和…

iOS 如何对整张图分别局部磨砂,并完全贴合

官方磨砂方式 - (UIVisualEffectView *)effectView{if(!_effectView){UIBlurEffect *blur [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];_effectView [[UIVisualEffectView alloc] initWithEffect:blur];}return _effectView; }使用这种方式对一张图的上半部分和…

数学建模大全及优缺点解读

分类模型 1、距离聚类(系统聚类)(常用,需掌握) 优点: ①将一批样本数据按照他们在性质上的亲密程度在没有先验知识的情况下自动进行分类 ②是一种探索性的分析方法,分类结果不一定相同 例如&am…

住宅IP:解锁更快速、稳定的互联网,你准备好了吗?

随着互联网的广泛普及,我们对网络的需求也越来越高。无论是工作、学习还是娱乐,我们都希望能够享受到更快速、稳定的互联网连接。而在实现这一目标的过程中,住宅IP正逐渐崭露头角,成为了一种备受关注的解决方案。那么,…

用户端Web自动化测试-L2

目录: 高级定位-css高级定位-xpath显式等待高级使用高级控件交互方法网页 frame 与多窗口处理文件上传,弹框处理自动化关键数据记录电子商务产品实战 1.高级定位-css css 选择器概念 css 选择器有自己的语法规则和表达式css 定位通常分为绝对定位和相…

Java IO流(四)Netty理论[模型|核心组件]

概述 Netty是由JBOSS提供的一个Java开源框架,可从Github获取独立项目Netty是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端(摘录官网)Netty所谓的异步是针对用户使用Channel进行IO操作,会立即返回ChannelFuture。但IO操作的任务是提…

开源容灾备份软件,开源cdp备份软件

数据的安全性和完整性面临着硬件问题、黑客攻击、人为错误等各种威胁。在这种环境下,开源容灾备份软件应运而生,通过提供自动数据备份和恢复,有效地保证了公司的数据安全。 一、开源容灾备份软件的定义和作用 开源容灾备份软件是一种基于开源…

SqlServer2019—解决SQL Server 无法连接127.0.0.1的问题

1、打开SQL Server 2019配置管理器 2、SQL Servere 网络配置(启用 Named Pipes 和 TCP/IP) 3、修改TCP/IP协议(右键选择属性—IP地址),具体如下图所示: 4、重启SQL Server服务

漏洞挖掘和漏洞利用技术:讨论漏洞发现、利用和修复,深入研究不同类型漏洞的技术细节

章节一:引言 在当今数字化时代,计算机技术的迅猛发展为我们的生活带来了无数便利,然而也伴随着各种安全威胁。恶意黑客利用漏洞进行攻击已成为一种常见现象。本文将深入探讨漏洞挖掘和漏洞利用技术,以及如何修复这些漏洞&#xf…

智慧充电桩物联网方案架构

智慧充电桩物联网采用“云-管-边-端”的边缘计算物联网架构,融合5G、AI、Wi-Fi 6等技术,实现充电基础设施由数字化向智能化演进。智慧充电桩物联网方案架构设计,如下图所示: 云端: 物联网平台具备广泛协议的南向接入…

基于QCC_BES 平台的LMS自适应滤波算法实现

+我V hezkz17进数字音频系统研究开发交流答疑群(课题组) LMS算法是最小均方(Least Mean Square)算法的缩写。它是一种自适应滤波算法,常用于信号处理、系统辨识和自适应滤波等领域。 LMS算法的目标是通过对输入信号和期望输出信号之间的误差进行最小化,来调整滤波器的权重…

matlab使用教程(22)—非线性优化函数的设置

1.设置优化选项 可以使用由 optimset 函数创建的 options 结构体来指定优化参数。然后,可以将 options 作为输入传递给优化函数,例如,通过使用以下语法调用 fminbnd x fminbnd(fun,x1,x2,options) 或使用以下语法调用 fminsearch x f…

8月21-22日上课内容 第一章 MySQL数据库初始

本章结构 数据库的基本概念 概述(总览) 结构: 数据 表 数据库 数据库管理系统 数据库系统原理 数据 (Data) 描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等以“记录”形式按统一的格式进行存储表 将不同…

验证码识别DLL ,滑块识别SDK,OCR图片转文字,机器视觉找物品

验证码识别DLL ,滑块识别SDK 你们用过哪些OCR提取文字,识图DLL,比如Opencv,Labview机器视觉找物品之类?

Selenium的使用:WEB功能测试

Selenium是ThrougthWorks公司一个强大的开源WEB功能测试工具系列,本系统包括多款软件 Selenium语言简单,用(Command,target,value)三种元素组成一个行为,并且有协助录制脚本工具,但Selenese有一些严格的限制: …

FFmpeg解码32k大分辨率出现如下错误:Picture size 32768x32768 is invalid

最近找到一张32k的jpeg图片,尝试用ffmpeg来进行解码,命令如下: ffmpeg -i enflame_32768-32768-420.jpg 32.yuv结果出现Picture size 32768x32768 is invalid的错误: 找到报错的代码文件imgutils.c,以及函数&#x…

Shiro学习总结

第一章 入门概述 1.概念 shiro是一个Java安全框架,可以完成:认证、授权、加密、会话管理、与web集成、缓存… 2.优势 ● 易于使用,构建简单 ● 功能全面 ● 灵活,可以在任何应用程序环境中工作,并且不需要依赖它们…

RabbitMQ笔记-RabbitMQ基本术语

RabbitMQ基本术语 相关概念; 生产者(Producer):投递消息。消息:消息体(payload)标签(label);生产者把消息交给rabbitmq,rabbitmq会根据标签把消息发给感兴趣…

【自动驾驶】TI SK-TDA4VM 开发板上电调试,AI Demo运行

1. 设备清单 TDA4VM Edge AI 入门套件【略】USB 摄像头(任何符合 V4L2 标准的 1MP/2MP 摄像头,例如:罗技 C270/C920/C922)全高清 eDP/HDMI 显示屏最低 16GB 高性能 SD 卡连接到互联网的 100Base-T 以太网电缆【略】UART电缆外部电源或电源附件要求: 标称输出电压:5-20VDC…

第1章:计算机网络体系结构

文章目录 1.1 计算机网络 概述1.概念2.组成3.功能4.分类5.性能指标1.2 计算机网络 体系结构&参考模型1.分层结构2.协议、接口、服务3.ISO/OSI模型4.TCP/IP模型1.1 计算机网络 概述 1.概念 2.组成 1.组成部分&