Linux编辑器之vim的使用

文章目录

    • 一、vim简介
    • 二、vim的基本概念
    • 三、vim的基本操作
    • 四、vim正常模式命令集
      • 移动光标
      • 删除文字
      • 复制
      • 替换
      • 撤销上一次操作
      • 更改
      • 跳至指定的行
      • vim末行模式命令集
      • 列出行号
      • 跳到文件中的某一行
      • 查找字符
      • 保存文件
      • 离开vim
    • 五、进阶vim玩法
      • 打开文件
      • 批量注释代码
      • 执行shell命令
      • 指定注释
      • 窗口命令
      • 退出命令
    • 六、简单vim配置
      • 配置文件的位置
      • 常用配置选项,用来测试

一、vim简介

Vim是一个类似于Vi的高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。Vim是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线。 -->来自百度百科

二、vim的基本概念

  • 基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。

  • 正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

  • 插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

  • 末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

在这里插入图片描述

三、vim的基本操作

  • 我们最一开始的输入vim test.c 的时候就是命令模式

在这里插入图片描述

  • 回车后进入了这个界面,这个界面就是命令模式

在这里插入图片描述

这里我的界面是这样的,大家可以看VimForCpp来配置一下自己vim,最后我会讲这个如何简单的自己配置一下~~

  • 在这个状态下按下键盘会被 vim 识别为命令
  • 比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。就会进入插入模式
  • 这个时候insert会亮起,这个时候就可以随便输入文字了

在这里插入图片描述

  • 那么我们退出的时候按下键盘上的Esc,在键盘上按下:wq【这里的操作一定是在英文模式下!】,然后回车
  • 这里的输入的模式叫做底行模式

在这里插入图片描述

  • 上面这三种方式就可以用下面的图来表示:

在这里插入图片描述

四、vim正常模式命令集

  • 首先用vim打开一个文件,这里我就打开一个以.c为后缀的文件
vim test.c
  • 按下i,就进入到插入模式了,这个时候就可以写任何想写的东西了

在这里插入图片描述

  • 这个时候我按下键盘上的Esc就进入到了命令模式
  • 我们来开始学习命令模式:

移动光标

vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母 「h」、「j」、「k」、「l」 ,分别控制光标左、下、上、右移一格

  • shift+g:移动到文章的最后。也就是「G」
  • shift+4:移动到光标所在行的“行尾”。也就是「$」
  • shift+4:移动到光标所在行的“行首”。也就是「^」
  • 按「w」:光标跳到下个字的开头
  • 按「e」:光标跳到下个字的字尾
  • 按「b」:光标回到上个字的开头
  • 按「#l」:光标移到该行的第#个位置,如:5l,56l
  • 按[gg]:进入到文本开始
  • 按「ctrl」+「b」:屏幕往“后”移动一页
  • 按「ctrl」+「f」:屏幕往“前”移动一页
  • 按「ctrl」+「u」:屏幕往“后”移动半页
  • 按「ctrl」+「d」:屏幕往“前”移动半页

删除文字

  • 「x」:每按一次,删除光标所在位置的一个字符
  • 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
  • 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  • 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
  • 「dd」:删除光标所在行
  • 「#dd」:从光标所在行开始删除#行

复制

  • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  • 「#yw」:复制#个字到缓冲区
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  • 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

替换

  • 「r」:替换光标所在处的字符。
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

撤销上一次操作

  • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。「ctrl + r」: 撤销的恢复

更改

  • 「cw」:更改光标所在处的字到字尾处
  • 「c#w」:例如,「c3w」表示更改3个字

跳至指定的行

  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首

vim末行模式命令集

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


列出行号

  • 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。

跳到文件中的某一行

  • 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

查找字符

  • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
  • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

保存文件

  • 「w」: 在冒号输入字母「w」就可以将文件保存起来

离开vim

  • 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
  • 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

上面的都是简单的操作,需要烙铁们必须掌握~

五、进阶vim玩法

打开文件

同时打开多个文件

vim file1 file2 file3 ...

在vim窗口中打开一个新文件

:open file

在新窗口中打开文件

:split file

切换到下一个文件

:bn

切换到上一个文件

:bp

查看当前打开的文件列表,当前正在编辑的文件会用[]括起来。

:args

打开远程文件,比如ftp或者share folder

:e ftp://192.168.10.76/abc.txt
:e \\qadrive\test\1.txt

批量注释代码

  • 我写了一些代码,但是我想注释掉,但是一行一行的注释很麻烦,如何批量注释呢?

在这里插入图片描述

  • 首先按下键盘上的ctrl+v,进入到这个视图

在这里插入图片描述

  • 然后再按键盘上的j也就是光标往下走了,选中

在这里插入图片描述

  • 继续按键盘上的shit+i也就是I,输入两个//

在这里插入图片描述

  • 最后再按Esc,就大功告成了~~

在这里插入图片描述

执行shell命令

  • 直接在底行模式输入:!+命令

指定注释

下面的#可以替换成需要注释的字符

注释第3-5行

3,5 s/^/#/g 

解除3-5行的注释

3,5 s/^#//g

注释整个文档

1,$ s/^/#/g

注释整个文档,此法更快

:%s/^/#/g
  • 这里教大家一个常用的命令
  • 其中 前面的%s是通配,然后跟上要匹配的字符,再跟上要替换的字符,g 表示全局范围内,s/printf/PRINTF/g 是替换的命令格式
:%s/printf/PRINTF/g 

在这里插入图片描述

  • 最后直接替换成功了~~

在这里插入图片描述

窗口命令

打开一个新窗口,光标停在顶层的窗口上

:split或new 

用新窗口打开文件

:split file或:new file 

打开的窗口都是横向的,使用vsplit可以纵向打开窗口

split

移动到下一个窗口

Ctrl+ww 

移动到下方的窗口

Ctrl+wj 

移动到上方的窗口

Ctrl+wk 

退出命令

保存并退出

:wq 

保存并退出

ZZ 

强制退出并忽略所有更改

:q! 

放弃所有修改,并打开原来文件。

:e! 

六、简单vim配置

配置文件的位置

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。

  • 例如,/root目录下,通常已经存在一个**.vimrc文件,如果不存在,则创建之。
    切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
    打开自己目录下的
    .vimrc**文件,执行 vim .vimrc

  • 这里我就新建一个用户来操作~~

在这里插入图片描述

常用配置选项,用来测试

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

在这里插入图片描述

在这里插入图片描述

  • 大家可以看VimForCpp来配置一下自己vim

最后本文简单的介绍了vim的概念以及如何操作,最后介绍了vim的配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

harmony开发ohpm mac环境配置

Mac电脑 安装 Ohpm |HarmonyOS 安装 Ohpm ohpm环境配置好后,执行ohpm会报如下的错 ohpm has not been initialized yet. Execute the init script to initialize it first. 解决办法 鸿蒙OS开发,解决报错“ohpm has not been initialized yet…

远程访问@HttpExchange

提示:这是SpringBoot3以上的新特性。 远程访问HttpExchange 一、webClient二、Http 服务接口的方法定义三、声明式 HTTP 远程服务1.组合使用注解2.使用单个注解3.定制 HTTP 请求服务 四、总结1.部分方法过时2.过时的方法详解 远程访问是开发的常用技术,一…

方法阻塞的解决方案之一

1、简单使用 一个h一个cpp文件 #pragma once #include <iostream> #include <thread> #include <atomic> #include <chrono> #include <string>class Person {public:struct dog {std::string name;int age;};public:void a(std::atomic<bo…

设计模式篇---备忘录模式

文章目录 概念结构实例总结 概念 备忘录模式&#xff1a;在不破坏封装的前提下捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;像这样可以在以后将对象恢复到原先保存的状态。 就好比我们下象棋&#xff0c;下完之后发现走错了&#xff0c;想要回退…

Unity 自动轮播、滑动轮播

如图所示&#xff0c;可设置轮播间隔&#xff0c;可左右滑动进行轮播 1.在UGUI创建个Image&#xff0c;添加自动水平组件 2.添加并配置脚本 3.代码如下&#xff0c;都有注释 using UnityEngine; using UnityEngine.UI;public class IndicatorManager : MonoBehaviour {public …

【乳腺肿瘤诊断分类及预测】基于LVQNN学习向量量化神经网络

课题名称&#xff1a;基于LVQ神经网络的乳腺肿瘤诊断&#xff08;类型分类&#xff09; 版本日期&#xff1a;2023-03-10 运行方式: 直接运行0501_LVQ0501.m 文件即可 代码获取方式&#xff1a;私信博主或QQ&#xff1a;491052175 模型描述&#xff1a; 威斯康辛大学医学院…

(HAL)STM32F407ZGT6——10-4 高级定时器 PWM 输入模式实验

一、高级定时器简介 高级定时器的框图和通用定时器框图很类似&#xff0c;只是添加了其它的一些功能&#xff0c;如&#xff1a;重复计数器、带死区控制的互补输出通道、断路输入等。 高级定时器的时钟来自APB2, 而PCLK2 168Mhz, 我们设置PPRE2不分频, 因此高级定时器时钟 …

使用.NET6 Avalonia开发跨平台三维应用

本文介绍在Vistual Studio 2022中使用Avalonia和集成AnyCAD Rapid AvaloniaUI三维控件的过程。 0 初始化环境 安装Avalonia.Templates dotnet new install Avalonia.Templates若之前安装过可忽略此步骤。 1 创建项目 选择创建AvaloniaUI项目 选一下.NET6版本和Avalonia版…

detectron2的read_image方法

在看代码的时候&#xff0c;看到一行注释&#xff1a;use PIL, to be consistent with evaluation 说是用PIL方法加载&#xff0c;却又看见了BGR这种表述&#xff0c;后面的调用也都是cv2格式&#xff1a; 那我就要看下这里面是怎么实现的了&#xff0c;找到了read_image函数&…

[R] Why data manipulation is crucial and sensitive?

What does a data scientist really do? Identifying the pattern in cultural consumption, making fancy graph, engage a dialogue between data and the existing literature, refining hypothesis….(done within one months with three to four online meetings with p…

【涵子来信】——拆机,感想

大家好&#xff0c;我是涵子。 初中的第一个学期结束了&#xff0c;来临寒假。我在寒假做了一件有趣的事情&#xff1a;拆机&#xff0c;修手机。今天我来分享分享这件事情。 拆机 情况介绍 拆机对象&#xff1a; iPhone 6 Plus 情况&#xff1a; 电池健康度100%&#xff08…

Unity-WebGL

问题&#xff1a;提示gzip压缩报错解决&#xff1a;关闭打包的地方压缩&#xff0c;如下图问题&#xff1a;窗口未全屏解决&#xff1a;使用百分比画布替换固定尺寸画布 参考&#xff1a;新版Unity打包Webgl端进行屏幕自适应_unity webgl分辨率自适应-CSDN博客问题&#xff1a;…

Springboot+Redis

首先前提我们要在自己的本机电脑或者服务器上安装一个redis的服务器 Redis配置 添加依赖: <!-- SpringBoot Boot Redis --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artif…

Linux Archcraft结合内网穿透实现SSH远程连接

文章目录 1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定SSH公网地址6. SSH固定地址连接7. 结语 Archcraft是一个基于Arch Linux的Linux发行版&#xff0c;它使用最简主义的窗口管理器而不是功能齐全的桌面环境来提供图形化用户界面。…

JVM 内存模型

1 什么是 JVM 内存模型 JVM 需要使用计算机的内存&#xff0c;Java 程序运行中所处理的对象或者算法都会使用 JVM 的内 存空间&#xff0c;JVM 将内存区划分为 5 块&#xff0c;这样的结构称之为 JVM 内存模型。 2 JVM 为什么进行内存区域划分 随着对象数量的增加&#xff…

马哈鱼SQLFlow Lite的python版本

Gudu SQLFlow 是一款用来分析各种数据库的 SQL 语句和存储过程来获取复杂的数据血缘关系并进行可视化的工具。 Gudu SQLFlow Lite version for python 可以让 python 开发者把数据血缘分析和可视化能力快速集成到他们自己的 python 应用中。 Gudu SQLFlow Lite version for p…

Banana Pi BPI-R4开源路由器开发板快速上手用户手册,采用联发科MT7988芯片设计

介绍 Banana Pi BPI-R4 路由器板采用 MediaTek MT7988A (Filogic 880) 四核 ARM Corex-A73 设计&#xff0c;4GB DDR4 RAM&#xff0c;8GB eMMC&#xff0c;板载 128MB SPI-NAND 闪存&#xff0c;还有 2x 10Gbe SFP、4x Gbe 网络端口&#xff0c;带 USB3 .2端口&#xff0c;M.2…

计算机服务器中了halo勒索病毒怎么办,halo勒索病毒解密

在网络技术飞速发展的今天&#xff0c;越来越多的企业依赖数字化办公&#xff0c;为企业的生产生活提供了极大便利&#xff0c;但网络是一把双刃剑&#xff0c;网络安全威胁无处不在。近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器中了ha…

【Java】实现图书管理系统

文章目录 1. 设计背景2. 需求分析3. 设计思路4. 实现4.1 book包4.1.1 Book类4.1.2 BookList类(书架) 4.2 user包4.2.1 User 类4.2.2 AdminUser类&#xff08;管理员用户&#xff09;4.2.3 NormalUser类&#xff08;普通用户&#xff09; 4.3 operation包4.3.1 IOPeration接口4.…

Maven基本使用

Maven简介: Apache Maven 是一个项目管理和构建工具&#xff0c;它基于项目模型(POM)的概念&#xff0c;通过一小段描述信息来管理项目的构建&#xff0c;报告和文档 Maven的作用: (1&#xff09;项目搭建&#xff1b; &#xff08;2&#xff09;依赖管理&#xff1b; &#xf…