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

news/2024/7/21 13:20:20 标签: linux, vim, 运维, 服务器

作者主页

📚lovewold少个r博客主页

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

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

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

目录

目录

​作者主页

目录

前言

vim%E7%9A%84%E4%BD%BF%E7%94%A8-toc" style="margin-left:0px;">Linux编辑器vim的使用

vim%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5-toc" style="margin-left:40px;">vim的基本概念

vim%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C-toc" style="margin-left:40px;">vim的基本操作

vim%E7%BC%96%E8%BE%91%E5%99%A8-toc" style="margin-left:80px;">进入vim编辑器

回到命令模式

进入插入模式

切换到末行模式

vim%E7%9A%84%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86-toc" style="margin-left:0px;">vim的正常模式命令集

vim%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86-toc" style="margin-left:40px;">vim正常模式命令集

插入模式

移动光标

删除文字

复制

替换

撤销上一次操作

更改

跳至到指定的行

vim%E6%9C%AB%E8%A1%8C%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86-toc" style="margin-left:40px;">vim末行模式命令集

vim%E7%9A%84%E5%88%86%E5%B1%8F%E6%A8%A1%E5%BC%8F-toc" style="margin-left:40px;">vim的分屏模式

vim%E7%9A%84%E9%A2%9D%E5%A4%96%E9%85%8D%E7%BD%AE-toc" style="margin-left:0px;">vim的额外配置

简单配置

vim%20for%20cpp%C2%A0-toc" style="margin-left:40px;">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作为讲解。

vim%E7%9A%84%E4%BD%BF%E7%94%A8">Linux编辑器vim的使用

vim%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5">vim的基本概念

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

正常/普通/命令模式:

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

插入模式(insert mode)

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

末行模式:

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

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

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

vim%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C">vim的基本操作

vim%E7%BC%96%E8%BE%91%E5%99%A8">进入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%E7%9A%84%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86">vim的正常模式命令集

vim%E6%AD%A3%E5%B8%B8%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86">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%E6%9C%AB%E8%A1%8C%E6%A8%A1%E5%BC%8F%E5%91%BD%E4%BB%A4%E9%9B%86">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%E7%9A%84%E5%88%86%E5%B1%8F%E6%A8%A1%E5%BC%8F">vim的分屏模式

分屏命令

sp:水平分屏

vsp:垂直分屏

ctrl+ww:多屏之间切换

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

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

vim%E7%9A%84%E9%A2%9D%E5%A4%96%E9%85%8D%E7%BD%AE">vim的额外配置

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

简单配置

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

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

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

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

vim%20for%20cpp%C2%A0">vim for cpp 

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

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

支持环境

目前只支持 Centos7 x86_64.

安装配置

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

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

卸载方法

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

bash ~/.VimForCpp/uninstall.sh

命令模式 

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

总结

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


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


    


http://www.niftyadmin.cn/n/5165969.html

相关文章

人工智能模型转ONNX 连接摄像头使用ONNX格式的模型进行推理

部署之后模型的运算基本上能快5倍。本地部署之后,联网都不需要,数据和隐私不像在网上那样容易泄露了。 模型部署的通用流程 各大厂商都有自己的推理工具。 训练的归训练,部署的归部署,人工智能也分训练端和部署端,每一…

Leetcode---370周赛

题目列表 2923. 找到冠军 I 2924. 找到冠军 II 2925. 在树上执行操作以后得到的最大分数 2926. 平衡子序列的最大和 一、找到冠军I 第一题模拟题,简单来说是看每一行(列)是否全是1,当然不包括自己比自己强的情况,需要特判 代码如下 …

ES6 部分新特性使用

箭头函数 // 箭头函数定义 const add (a, b) > a b; console.log(add(1, 2)); // 输出3// 箭头函数表达式 const nums [1, 2, 3]; const sum nums.reduce((total, num) > total num, 0); console.log(sum); // 输出6 模板字符串 // 使用模板字符串拼接字符串 con…

腾讯蒋杰:坚持用技术服务应用,腾讯混元大模型已接入180多个业务

“腾讯正在持续探索大模型应用场景,目前内部超180项业务已经接入腾讯混元大模型进行内测”,11月9日,腾讯集团副总裁蒋杰在2023年世界互联网大会乌镇峰会上表示。 腾讯集团副总裁 蒋杰 作为腾讯全链路自研的实用级大模型,自2023年…

LeetCode热题100——二叉树

二叉树 1. 二叉树中序遍历 1. 二叉树中序遍历

Triples of Cows

题目传送门 引 模拟赛 T 4 T4 T4 , 变换挺妙的, 而且感觉转换后问题就迎刃而解了 解法 强行模拟拆点重连边显然不行,会让图的边数达到 n 2 n^2 n2 级别的 —————————————————————————————————————————————————— 考虑转…

node插件MongoDB(三)—— 库mongoose 的使用

前言 提示:使用mongoose 的前提是你安装了node和 MongoDB。 mongoose 官网文档:http://mongoosejs.net/docs/index.html 文章目录 前言一、安装二、基本使用1. 打开bin目录的mongod.exe文件2. 基本使用的代码(连接mongodb 服务)3.…

Leetcode—102.二叉树的层序遍历【中等】

2023每日刷题(二十四) Leetcode—102.二叉树的层序遍历 C语言BFS实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ /*** Return an array of arr…