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

相关推荐
FoldWinCard13 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
零涂毕业设计14 小时前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
tedcloud12315 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质15 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX15 小时前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.15 小时前
Linux系统管理
linux·运维
阿龙的工作记录16 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手16 小时前
Linux的基本指令
linux·运维·服务器
hkj880816 小时前
Ubuntu 切换java版本
java·linux·ubuntu
撩得Android一次心动18 小时前
Linux编程笔记3【个人用】
linux·笔记