【Linux编辑神器:vim】

news/2024/11/8 20:50:20/

目录

 1. vim的基本概念

 2. vim的基本操作

 3. vim正常模式命令集

4. vim底行模式命令集

5. 简单vim配置

6 总结


什么是Vi/Vim?

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vimvi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window mac oswindows

 Vi/Vim键盘图:


 1. vim的基本概念

博客中我们主要讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)

各模式的功能区分如下

  • 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  •  插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
  •  底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+;( :) 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入(退出查看所有模式可以在底行模式下输入 :exit )
:help vim-modes

 注意:

1 我这里是使用了配置过的vim,所以用起来比较方便舒适,文章后面我会给出具体的配置方法,这里有需要的老铁可以直接跳转到文章末尾。

2 当我们打开vim时默认是在命令模式下,命令模式是插入模式和底行模式的中转站,插入模式与底行模式的转换都必须先转换为命令模式。

3 这些命令必须使用英文字符。


 2. vim的基本操作

  • 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

我这里配置后是这个样子:

不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字.
  • [正常模式]切换至[插入模式]
  • 输入a (跳转到光标的下一个位置)
  • 输入i (跳转到光标当前位置)
  • 输入o(跳转到下一行)
  •  [插入模式]切换至[正常模式]

目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。这里再补充一下,最开始的电脑是没有配备上下左右键的,而是用h(左),j(下),k(上),l(右)来代替的,后续有关其他vim相关操作有些会搭配着这些键使用

  • [正常模式]切换至[末行模式]
shift + ;, 其实就是输入「:
  • 退出vim及保存文件,[正常模式]下,按一下「:」冒号键进入「Last line mode

例如:

: w (保存当前文件)
: wq (输入「wq,存盘并退出vim)
: q! (输入q!,不存盘强制退出vim)

 3. vim正常模式命令集

注意:以下命令都是在命令模式下执行的。

  • 插入模式
  • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字
  •  从插入模式切换为命令模式
  • 按「ESC」键。
  •  移动光标
  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」「j」「k」、l」,分别控制光标左、下、上、右移一格;
  • 按[gg]:进入到文本开始;(可以与n结合使用,n+gg跳转到第n行)
  • 按「shift+g (G)」:移动到文章的最后;(可以与n结合使用,n+G跳转到第n行)
  • 按「shift+4 ($) 」:移动到光标所在行的行尾”;
  • 按「shift+6 (^)」:移动到光标所在行的行首“;
  • 按「w」:光标跳到下个字的开头;
  • 按「e」:光标跳到下个字的字尾;
  • 按「b」:光标跳到上个字的开头;
  • 按「nl」:光标移到该行的第n个位置;
  • 按「ctrl+b 」:屏幕往移动一页;
    按「ctrl +f 」:屏幕往移动一页;
    按「ctrl+u」:屏幕往移动半页;
    按「ctrl+d 」:屏幕往移动半页.
  •  删除文字
  • 按「x」:每按一次,删除光标所在位置的一个字符;(可以与n搭配,「nx」表示删除光标所在位置的后面(包含自己在内n个字符 )
  • 按「X」:大写的X,每按一次,删除光标所在位置的前面”一个字符;(可以与n搭配,「nX」表示删除光标所在位置的前面(不包含自己在内n个字符)
  • 按「dd」:删除光标所在行;(可以与n搭配,从光标所在行开始删除n行)
  •  复制
  • 按「yw」:将光标所在之处到字尾的字符复制到缓冲区中;(可以与n搭配,「nyw」表示复制n个字符到缓冲区中)
  • 按「yy」:复制光标所在行到缓冲区;(可以与n搭配,「nyy」表示拷贝从光标所在的该行往下数”n行文字。
  • 按「p」:将缓冲区内的字符贴到光标所在位置;注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • 按「dd+p」:等同于剪切功能。
  •  替换
  • 按「r」:替换光标所在处的字符;(支持nr)
  • 按「R」:替换光标所到之处的字符,直到按下「ESC」键为止;
  •  撤销上一次操作
  • 按「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复;
  • ctrl + r: 撤销的恢复 。
  •  更改
  • 按「cw」:更改光标所在处的字到字尾处
  • 按「cnw」:例如,「cnw」表示更改3n个字
  •  跳至指定的行
  • 按「ctrl+g」列出光标所在行的行号;
  • 按「nG」:例如,「15G」,表示移动光标至文章的第15行行首.
  •  大小写切换

按「shift+~」:大小写转换(一直按住shift可以一直转换)


4. vim底行模式命令集

注意:以下命令均是在底行模式下进行。

在使用底行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入底行模式。

  • 列出行号
  • set nu: 输入「set nu」后,会在文件中的每一行前面列出行号。
  •  跳到文件中的某一行
  • 「n:n」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15再回车,就会跳到文章的第15行.
  •  查找字符
  • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n」会往后寻找到您要的关键字为止。
  • ?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。「?关键字」与「/关键字」的区别是「/关键字」会让光标定位到首行,而「?关键字」则不是。
  •  保存文件
  • w: 在冒号输入字母「w」就可以将文件保存起来
  • 离开vim
  • 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离vim
  • wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
  • 多文件操作

「vs+文件名」:按「ctrl+w+w」在文件中互相切换,打开后就像这样:

 另外如果输入一个新的文件名时与使用vim打开文件一样,没有就会重新建立一个,就像这样:

 退出的话光标定位到哪里就用对应的命令退出该文件即可。


 5. 简单vim配置

配置文件的位置

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~打开自己目录下的.vimrc文件,执行 vim .vimrc。

 常用配置选项,用来测试

  • 设置语法高亮: syntax on
  • 显示行号: set nu
  • 设置缩进的空格数为4: set shiftwidth=4

 使用插件

要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户。这里大家可以自行在网上查询资料。

 这里我们如果要配置的话不用那么麻烦,已经有了大佬给我们配置好了的(非常感谢汤神老师),大家可以在自己的用户上输入下面这段指令系统就会自动给我们当前用户配置,具体命令为:

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

6 总结

今天我们重点介绍了Linux下编辑神器vim的使用,总的来说vim的使用成本还是蛮高的,但是这个确是我们不得不掌握的一项基本技能,只要多花些时间去练习我相信这对我们来说应该不是太大的问题。如果今天的文章对你有收获的话能不能3连支持一下博主呢?


http://www.ppmy.cn/news/9003.html

相关文章

2023年,我觉得拼夕夕值得去

这一年下来,多少大厂梦破碎了,多少人选择被离开和被留下,都日子不那么好过,但其实结合2022年一整年下来,结合拼夕夕的股价表现,人家一年到头开支节流,人家还不断开新站点,晚会还赞助…

消息服务 + Serverless 函数计算如何助力企业降本提效?

作者:柳下 背景介绍 消息队列服务(下文均以 Message Service 命名)作为云计算 PaaS 领域的基础设施之一,其高并发、削峰填谷的特性愈发受到开发者关注。Message Service 对上承接消息生产者服务的请求,对下连接消费者…

Qt6 中如何使用 qsb

【写在前面】 Qt 5 的图形体系结构非常依赖 OpenGL 作为底层 3D 图形 API。但过去 8 年来随着 Metal 和 Vulkan 的推出,市场发生了巨大变化。现在,Qt 6 加入了大量不同平台的图形 API,以确保用户可以在所有平台上以最高性能运行 Qt。 在 Qt Q…

MySQL高级 SQL优化【插入数据主键优化】

目录 1:SQL优化 1.1:插入数据 1.1.1:insert 1). 优化方案一(批量插入数据) 2). 优化方案二(手动控制事务) 3). 优化方案三 (主键顺序插入,性能要高于乱序插入。) …

echarts图表演示图表演示

eCharts图表演示 比如说,公司现在接一个项目,这个中信银行,针对之前所有的贷款、大 小客户,要做出来图表系统(演示和查看)、报表系统(用来打印)。 郑州的大数据产业局,…

第一章 R语言介绍

1.为何使用R 与起源于贝尔实验室的S语言类似,R也是一种为统计计算和绘图而生的语言和环境,它是一套开源的数据分析解决方案,由一个庞大且活跃的全球性研究型社区维护。但是,市面上也有许多其他流行的统计和制图软件,如…

# 分布式理论协议与算法 第二弹 ACID原则

ACID 原则是在 1970年 被 Jim Gray 定义,用以表示事务操作:一个事务是指对数据库状态进行改变的一系列操作变成一个单个序列逻辑元操作,数据库一般在启动时会提供事务机制,包括事务启动 停止 取消或回滚。 但是上述事务机制并不真…

ODT在手,DDR5布线可以任性走?

作者:一博科技高速先生成员 姜杰 ODT是On Die Termination的缩写,又叫片内端接,顾名思义,就是把端接电阻放在了芯片内部。作为一种端接,ODT可以减小反射,对信号质量的改善显而易见,SI攻城狮很…