【Linux精讲系列】——vim详解

作者主页

📚lovewold少个r博客主页

⚠️本文重点c++入门第一个程序和基本知识讲解

👉**【C-C++入门系列专栏】:** 博客文章专栏传送门

😄每日一言:宁静是一片强大而治愈的神奇海洋!

目录

目录

​作者主页

目录

前言

Linux编辑器vim的使用

vim的基本概念

vim的基本操作

进入vim编辑器

回到命令模式

进入插入模式

切换到末行模式

vim的正常模式命令集

vim正常模式命令集

插入模式

移动光标

删除文字

复制

替换

撤销上一次操作

更改

跳至到指定的行

vim末行模式命令集

vim的分屏模式

vim的额外配置

简单配置

[vim for cpp](#vim for cpp)

支持环境

安装配置

卸载方法

命令模式

总结


前言

首先我们要知道vim是什么?

vi(Visual Editor)是由美国程序员比尔·乌尔曼(Bill Joy)于1976年开发的,最初是为了在Unix系统上进行文本编辑而创建的。它是一款基于模式编辑的文本编辑器,以其高效的键盘快捷键而闻名,可在终端环境下使用。vi 成为Unix系统中的标准文本编辑器,并且在大多数Unix和Linux系统上内置。

vim(Vi IMproved):vim 由布莱姆·米特尔斯(Bram Moolenaar)于1991年开发,旨在改进 vi 的功能,并为用户提供更多的功能。vim 添加了许多新特性,如多级撤销、语法高亮、自动缩进、宏录制、拼写检查、插件支持等。vim 还提供了更多的定制选项,使用户能够根据自己的需求进行配置。vim 成为了 vi 的一个增强版本,但也保留了 vi 的基本编辑功能和键盘快捷键。

vi 是老式的字处理器,功能齐全。而 vim 则可以说是基于vi上的程序开发者的一项很好用的工具。 连 vim 的官方网站 自己也说 vim 是一个程序开发工具而不是文字处理软件。当然了我们这里主要以vim作为讲解。

Linux编辑器vim的使用

vim的基本概念

vim常使用有三种模式:命令模式(Command mode),输入模式(Insert mode)、底线命令模式(Last line mode)。

正常/普通/命令模式:

这种模式下主要是控制光标的移动,字符、字或行的删除,移动复制某区段的以及进入各种模式下的命令操作。

插入模式(insert mode):

在命令模式下按 i 进入插入模式。插入模式主要是对文本的修改操作,只有在插入模式(insert mode)下才能对文本进行插入操作。通过按【Esc】可以回到命令行模式。

末行模式:

在命令模式下按**shift + :**进入末行模式该模式主要是对文件的保存退出操作以及完成文本的一些功能性任务,比如查找字符串,列出行号等操作。

这些模式是最常用也是使用vim最频繁的三种模式,当然vim还具备很多模式我们不做过多讲解。

vim的强大在于他支持多模式的操作,我们不用去了解每一种模式,目前学习linux的vim主要核心还是抓住以上三个模式。

vim的基本操作

进入vim编辑器

vim 文件名

vim+文件名默认进入命令模式即正常模式。打开所在目录下文件存在即会打开原有存在文件,打开不存在文件即会新建此文件名的文件。

回到命令模式

在任何模式下无脑Esc即可回到命令模式。

进入插入模式

在【命令模式】切换进入【插入模式】一般有三种方式可以进入

|------|------------------------------------------------------------------------------------|
| i, I | 进入输入模式(Insert mode): i 为【从目前光标所在处输入】, I 为【在目前所在行的第一个非空格符处开始输入】。 |
| a, A | 进入输入模式(Insert mode): a 为【从目前光标所在的下一个字符处开始输入】, A 为【从光标所在行的最后一个字符处开始输入】。 |
| o, O | 进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为【在目前光标所在的下一行处输入新的一行】; O 为在目前光标所在处的上一行输入新的一行! |

切换到末行模式

shift+:进入末行模式。在末行模式下可以实现对文件的保存退出,查找等操作。常用以下操作对文件的保存和写入退出。

|---------|------------|
| :w | 保存当前文件 |
| :wq | 保存并且退出vim |
| :q! | 不保存强制退出vim |

以上操作就可以基本上把vim用起来了,实现基本的文件编写保存,退出等操作。然而我们要知道的是,vim主要是以键盘的方式操作,也就意味着键盘能做到很多功能操作而不需要鼠标。事实上vim的出现比鼠标诞生更加早,那么我们现在能用鼠标实现对光标的移动,文本的选取,以及查询等功能按键的点击操作。而我们知道其实很多操作都是有快捷键的,从而实现用键盘对文本编辑的快速操作。我们接下来主要学习对vim的功能操作。

vim的正常模式命令集

vim正常模式命令集

插入模式

Vim 的插入模式是用来输入文本的模式,可以通过以下命令从正常模式切换到插入模式且完成一些操作:

  • **i :**在光标当前位置开始输入文本。

  • **I :**在当前行的行首开始输入文本。

  • **a :**在光标下一个位置开始输入文本。

  • **A :**在当前行的行尾开始输入文本。

  • **o :**在当前行的下方插入一个新行,并开始输入文本。

  • **O :**在当前行的上方插入一个新行,并开始输入文本。

  • **s :**删除当前光标所在处的字符,并开始输入文本。

  • S :删除当前行,并开始输入文本。

  • c :删除指定范围的文本,并开始输入文本。需要和动作命令配合,例如 cw 删除一个单词,c$ 删除到行尾,c3w 删除三个单词等。

在插入模式下,按Esc键可以返回正常模式。

移动光标

要知道的是在vim中,我们还保留了一些历史的印记。老式的键盘上没有上下左右的方向键,在之前要完成对光标的操作是集成在键盘h,j,k,l中。分别控制光标左下上右移动一格,当然我们也可以用我们的方向键操作。

这是vi的创作人使用的键盘布局,当时对于上下左右键并没有完全的标准,甚至很多键盘并不存在上下左右键,vi便设计了这种操作方式。这样的操作方式逐步遗留到vim以过渡前期使用vi的人。同时我们使用hjkl也能有一定的优势,我们的双手可以一直停留在主键盘上,而不需要单独切换到右手端的方向键,对于习惯了使用hjkl键位作为方向键的人在光标操作也会更加快捷。

  • 行内移动
    • 左移一个字符:h
    • 右移一个字符:l
    • 移动到下一个单词的开头:w
    • 移动到上一个单词的开头:b
    • 移动到当前单词的结尾:e
    • 移动到行首:0
    • 移动到行尾:$
  • 跨行移动
    • 下移一行:j
    • 上移一行:k
    • 移动到文件末尾:G
    • 移动到文件开头:gg
    • 移动到第n行:nG
    • 移动到屏幕顶部:H
    • 移动到屏幕中间:M
    • 移动到屏幕底部:L
    • 向前翻页:Ctrl+f
    • 向后翻页:Ctrl+b
    • 向前翻半页:Ctrl+u
    • 向后翻半页:Ctrl+d
  • 查找移动
    • 查找word并移动到第一个匹配处:/word
    • 移动到下一个匹配处:n
    • 移动到上一个匹配处:N
    • 查找光标所在单词并移动到第一个匹配处:*****
    • 查找光标所在单词并移动到上一个匹配处:#
    • 查找匹配的括号并移动到对应位置:%

删除文字

  • 删除文字
    • 每按一次删除光标所在位置的一个字符:x
    • 指定删除所在位置后面(包括自己在内的)#个字符 : #x
    • 大写的X,每按一次可以删除光标所在位置前面的一个字符:X
    • #X表示删除光标所在的位置前面的#个字符:#X
    • 删除光标所在行:dd
    • 从光标所在位置,向后面删除#行:#dd

复制

  • 将光标所在之处到字尾的字符复制到缓冲区:yw
  • 复制#个字符到缓冲区:#yw
  • 复制光标所在行到缓冲区:yy
  • 拷贝从光标所在行往下数#行文字:#yy
  • 粘贴缓冲区内容到光标所在行:p

替换

  • 替换光标所在位置的字符:r
  • 替换光标所在之处的字符,知道按下ESC键停止:R

撤销上一次操作

  • 如果您误执行一个命令,可以马上按下u撤销上一个操作,多次按u可以多次撤销:u
  • 撤销的恢复,对于错误撤销可以执行对撤销操作的撤销:crtl+r

更改

  • 更改光标所在处的字到字尾处:cw
  • 表示可以更改光标所在位往后的#个字符:c#w

跳至到指定的行

  • 列举处光标所在行的行号:crtl+g
  • 移动光标至文章的第#行的行首:#G

vim末行模式命令集

首先在命令模式下shift+:进入末行模式。

  • 保存文件:w
  • 退出 Vim 编辑器:q
  • 保存文件并退出 Vim 编辑器:wq
  • 强制退出 Vim 编辑器,不保存修改:q!
  • 显示行号:set nu
  • 隐藏行号:set nonu
  • 向下搜索 word 这个字符串:/word
  • 向上搜索 word 这个字符串:?word
  • 重复上一次的搜索 :n
  • 替换当前行第一个 old 为 new :s/old/new
  • 替换当前行所有的 old 为 new :s/old/new/g
  • 替换整个文件中所有的 old 为 new :%s/old/new/g

vim的分屏模式

分屏命令

sp:水平分屏

vsp:垂直分屏

ctrl+ww:多屏之间切换

qall:退出所有屏,以此内推有:wall、wqall

vim -o aa.txt bb.txt:进入的时候就进行分屏(o水平;O垂直)

vim的额外配置

我们确实知道了用键盘就可以实现对文本的各种操作,但是使用起来还是不舒服,相比于vs还有很多编辑器来说,他的使用相当麻烦。无法自动缩进,自动补全,用起来得一个字一个字的打,这还不如用word,至少还有个括号匹配。所以这一小节我们就讲一讲如何实现自主配置vim,完成高级的编译环境搭建。

简单配置

我们首先要理解的是如何更改配置文件。在目录/etc/下有一个名为virmrc的文件,这是系统公共的vim配置文件,对于所有用户都生效,而我们配置vim文件最好是在自己的普通用户下建立配置文件。

在每一个用户的主目录底下,都可以创建自己私有的配置文件,命名为".vimrc"。通常情况下会存在一个这样的文件,如果没有自行配置即可。

首先进入用户主目录,用vim打开".vimrc"文件

在这个文件下我们可以通过添加配置选项来配置vim运行环境。这里我们就不赘诉可以执行那些指令来改变操作环境,我们直接使用插件或者别人已经配置好的文件进行修改。

vim for cpp

这里我们学习使用一键化配置的方式。主要目标是帮助对vim配置方法不熟悉的新手封装的一键式vim环境安装包. 主要针对终端vim用户, 适合远程ssh连接Linux服务器进行开发的场景(例如使用阿里云服务器或者腾讯云服务器等)。

项目原地址:VimForCpp: 快速将vim打造成c++ IDE

支持环境

目前只支持 Centos7 x86_64.

安装配置

在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行):

bash 复制代码
​
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

卸载方法

在安装了 VimForCpp 的用户下执行:

bash 复制代码
bash ~/.VimForCpp/uninstall.sh

命令模式

此项目主要对cpp环境进行适配,能实现代码高亮,代码补全自动缩进等操作。具体可以看项目操作文档。

总结

本章主要讲解了vim的常见操作,vim编辑器强大且在linux开发环境下极为重要,掌握vim是学习linux系统中极为重要的一环。相信大家都能快速掌握。


作者水平有限,如有错误欢迎指正!


相关推荐
疯狂飙车的蜗牛8 分钟前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程1 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo2 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
远游客07132 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<2 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟2 小时前
centos-stream9系统安装docker
linux·docker·centos
好像是个likun3 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
超爱吃士力架3 小时前
邀请逻辑
java·linux·后端
LIKEYYLL4 小时前
GNU Octave:特性、使用案例、工具箱、环境与界面
服务器·gnu
云云3215 小时前
搭建云手机平台的技术要求?
服务器·线性代数·安全·智能手机·矩阵