浅谈 Linux 下 vim 的使用

Vim 是从 vi 发展出来的一个文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

Vi 是老式的字处理器,功能虽然已经很齐全了,但还有可以进步的地方。Vim 可以说是程序开发者的一项很好用的工具。对于大多数用户来说,Vim 刚开始学习的时候可能会进展缓慢,但是一旦掌握一些基本操作之后,就能大幅度提高编辑效率。今天我们就来简单介绍下 Vim 及其基本操作。

Vim 的三种模式

从 vi 派生出来的 Vim 具有多种模式,这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与 Vim 截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过 ctrl 键和 alt 键组成)或者鼠标输入。Vim和vi一样,仅仅通过键盘来在这些模式之中切换。这就使得 Vim 可以不用进行菜单或者鼠标操作,并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。

基本上,Vim 可以分为命令模式、插入模式和底线模式三种模式,各模块的功能区分如下:

命令模式:

使用 vim 编辑文件时,默认处于命令模式。在此模式下可以使用上、下、左、右键或者k、j、h、l键进行光标的移动,还可以对文件内容进行复制、粘贴、替换、删除等操作。

插入模式:

在该模式下可以对文件进行写的操作,类似于 windows 的文档操作。进入插入模式的方法是在命令模式下按 "i"或者"a"或者"o",编写完成后按 Esc 即可回到命令模式。

i:从光标目前所在位置插入所输入的字符

a:从目前光标所在位置的下一个字符处插入所输入的字符

o:插入新的一行从行首开始输入

底线模式:

如果要保存、查找或者替换一些内容等,就需要进入底线模式。底线模式的进入方法为:在命令模式下按":"键,Vim 窗口的左下方会出现一个":"符号,这时就可以输入相关的指令进行操作了。指令执行后会自动返回命令模式。

Vim 的基本操作

一、打开文件或者新建文件

统一命令: vim 文件名

例子:vim 11.txt

然后在页面的左下角可以看到文件的信息,行数和字符数,例如上图:3行、426个字符。

二、光标的移动

以字符为单位移动,在命令模式中使用 h、j、k、l 这 4 个字符控制方向,分别表示向左、向下、向上、向左

  • 按G:移动到文件最后
  • 按 gg: 移动到文件的开头
  • 按 0 或者^: 光标移动到所在行的行首
  • 按 $: 光标移动到所在行的行尾
  • 按 ctrl+f 往下翻一页
  • 按 ctrl+b 往上翻一页

三、插入模式

当处于插入模式,左下角的状态如下图所示:

当编辑完成,就可以按 Esc 退出插入模式,进入到命令模式。可以使用Shift+zz命令保存退出,其他保存和退出命令见下文。

四、底线模式

【保存和退出】

字母"w":保存不退出;

字母"q":不保存退出;

字符"!":强制性操作;

也可以 wq 这样直接保存退出

【显示行号】

显示行号: set nu

不显示:set nonu

直接到某行:在底线模式下直接输入数字就可以到想到的行,如果输入的数字比文档的行数多就会到最后一行。

【搜索】

想要搜索某个词可以直接在底线模式输入:/要搜索的词,或者在命令模式里直接 /搜索的词也可以,

可以按 n 到搜索的下一个词的地方,按 N 就是往上找。搜索到的词就会以高亮显示,如下图:

如果要忽略大小写,可以先在底线模式输入: set ic , 反之:set noic 。

这个高亮如果不取消显示会一直有,可以用这个命令取消,底线模式下输入:nohlsearch 。

【字符替换】

在底线模式下:输入 1,$s/string/replace/g 会将全文的 string 字符串替换为 replace 字符串。

1,$ 表示从第一行到最后一行

s 表示替换

g 表示每行全部替换

此时 /w 已经搜索不到了。(此处没有忽略大小写)

替换某一行中的:5s/string/replace/g 。

5 表示行数

【操作其它文件】

写入到其它文件:可以直接 w 文件名,这样就会直接创建一个新的文件,并把当前文件的内容拷贝一份到里面。

直接打开另外一个文件: edit 文件名,如果这个时候想看有没有切换成功,可以输入 file 就可以查看当前打开的文件。

五、命令模式下的常用快捷键

【删除】

x :根据光标的位置删除,一次只能删除一个,想要删除多个,可以先按下 想删除的数量 然后再按 x 。

例子:先按300 后按 x,就是删除 300 个字符:300x 。

注:这里可以直接在键盘上按对应的数字,是没有显示的,按完数字再按 x 即可删除。

dw : 删除光标所在处到词尾的内容。

dd : 删除光标所在行, 3dd代表的意思就是删除光标所在位置向下的三行,包括光标所在的行(同 x 批量删除一样)。

【复制】

yy : 复制光标所在的行。

yw : 复制光标所在处到词尾的内容 。

p : 黏贴,此命令是在命令模式下,按照上面的命令复制后,然后光标移动到想要复制的位置,然后按 p 黏贴。

【取代替换】

r : 取代光标所在字符,按一下 r 再按 想要取代的字符。

R : 连续取代字符直到按 Esc 为止,按一下 R 然后依次按后面取代的字符,最后按 Esc 结束。

【撤销】

撤销键按:u 。

ctrl+r : 重做被撤销的操作,这个是如果你改好后不小心按了下 u ,再用这个命令就可以重新回到撤销前的界面。

本文只是简单介绍了下 vim 的常用命令,除了这些还有很多其它的命令,感兴趣的朋友可以更深入地去了解下。

相关推荐
有来技术8 分钟前
Linux 服务器安装 Docker - CentOS 9 (Stream)
linux·服务器·docker
jekc86834 分钟前
Centos 相关网络配置
linux·网络·centos
DADIAN_GONG35 分钟前
How to install tree on Centos? what is difference between apt and yum?
linux·运维·centos
夏沫の浅雨3 小时前
imx-6ULL uboot 移植
linux·uboot·nxp·6ull
C++忠实粉丝3 小时前
计算机网络之应用层协议HTTP
linux·网络·c++·网络协议·tcp/ip·计算机网络·http
Lin_Aries_04213 小时前
CentOS 7 安装部署 KVM
linux·运维·centos
深思慎考3 小时前
计算机操作系统——进程控制(Linux)
linux·服务器·c++·c
阿熊不会编程4 小时前
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
linux·开发语言·网络·c++·设计模式
北冥有鱼被烹4 小时前
微知-如何通过lspci指定某个deviceid查看pcie设备?(lspci -d 15b3:和lspci -d :1021 )
linux·pcie
炽天使4 小时前
aws rds-mysql不支持性能详情监控
linux·数据库·mysql·云计算·aws·rds