Linux开发工具:vim的介绍和用法及其简单配置

前言

Vim 简介. 编辑. Vim是从 vi 发展出来的一个文本编辑器。. 代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。. [1] vim的设计理念是命令的组合。. 用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。. 同时VIM与很多快捷键设置和 正则表达式 类似,可以辅助记忆。. 并且vim针对程序员做了优化。

给大家看一个vi/vim键盘图

等我们能够练到图片上的这种程度那肯定都是大佬级别的存在了,好了,废话不多说了,我通过centos7的云服务器为例来简单介绍一下vim的基本用法。

Linux编辑器——vim的使用

1.vim的基本概念和基本操作

vi/vim其实就是一款文本编辑器,用起来其实跟我们windows下的记事本有点像,但是功能要比记事本更强大一点,vim是一款多模式的文本编辑器。    我们下面讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

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

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

 部分案例截图

我这里提前创建了一个test.c文件,然后用vim编辑该文件

输入命令:

vim  文件名 

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

                                                             命令模式

当前模式就是我们的正常/普通/命令模式(Normal mode),这时候我们暂时不能输入任何想要编辑的内容,我们可以通过该模式执行相应的命令。

下面如果我们想要对该文件进行文本编辑就需要切换到另一种模式,那就是

  • 插入模式(Insert mode)

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

从之前的命令模式切换成相应的插入模式的方式有很多,下面是三种常用的命令模式转插入模式的指令,在命令模式下我们可以输入

a      在当前光标的下一个位置进行插入

i       在当前光标位置进行插入

o      当前光标位置新起一行进行插入

                                                            插入模式

目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

当前状态是我们从命令模式下切换到插入模式,然后如果我们要从插入模式切回命令模式直接输入

键盘最左上角的按键

ESC

然后就是我们vim的第三种模式:

  • 末行模式(last line mode)

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

「shift + ;」, 其实就是输入「:」

                                        底行模式

  • 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
    • : w(保存当前文件)
    • : wq(保存并退出vim)
    • : q! (输入q!  不保存强制退出vim)
    • :set nu(给vim设置行号)
    • :!+命令(可以在不退出vim的情况下执行命令)

底行模式下输入:wq 回车后

一共有12种模式:six BASIC modes和six ADDITIONAL modes

以上三种的模式切换总结来说就是

2.vim正常模式命令集

  • 插入模式
    • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
    • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
    • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
  • 从插入模式切换为命令模式
    • 按「ESC」键
  • 移动光标
    • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
    • 按「G」:移动到文章的最后
    • 按「 $ 」:移动到光标所在行的“行尾”
    • 按「^」:移动到光标所在行的“行首”
    • 按「w」:光标跳到下个字的开头
    • 按「e」:光标跳到下个字的字尾
    • 按「b」:光标回到上个字的开头
    • 按「#l」:光标移到该行的第#个位置,如:5l,56l
    • 按[gg]:进入到文本开始
    • 按[shift+g]:进入文本末端
    • 按「ctrl」+「b」:屏幕往“后”移动一页
    • 按「ctrl」+「f」:屏幕往“前”移动一页
    • 按「ctrl」+「u」:屏幕往“后”移动半页
    • 按「ctrl」+「d」:屏幕往“前”移动半页

  • 复制
    • 「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行行首。

3.vim底行模式命令集

  • 列出行号
    • 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
  • 跳到文件中的某一行
    • 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
  • 查找字符
    • 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
    • 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
  • 保存文件
    • 「w」: 在冒号输入字母「w」就可以将文件保存起来

4. vim操作总结

  • 三种模式
    • 正常模式
    • 插入模式
    • 底行模式
  • vim操作
    • 打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。

5.简单vim配置

配置文件的位置

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

常用配置选项,用来测试

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

6.vim参考文献资料

vim从入门到精通(vim from zero to hero)

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

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

相关文章

《深入理解java虚拟机 第三版》学习笔记一

第 2 章 Java 内存区域与内存溢出异常 2.2 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些…

解决Github Markdown图片显示残缺的问题

title: 解决Github Markdown图片显示残缺的问题 tags: 个人成长 categories:杂谈 在Github存放Markdown文档,如果图片没有存放在Github服务器上,github会尝试生成Github图片缓存,使用Github图片缓存,进行实际的展示。但比较蛋疼的…

PHP 智能物业管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 智能物业管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 PHP小区物业管理系统1 代码 https://download.csdn.net/download/qq_41221322/88444…

Git——解决 TortoiseGit 提示 No supported authentication methods available 错误

快速导航 问题描述解决方案步骤1 打开Git 的 Settings窗口步骤2 选择Network步骤3 选择安装目录usr\bin 下的 ssh.exe 文件 问题描述 git 推送(push)后提示No supported authentication methods available 错误 解决方案 步骤1 打开Git 的 Settings窗…

MySQL——七、MySQL备份恢复

MySQL 一、MySQL日志管理1、MySQL日志类型2、错误日志3、通用查询日志4、慢查询日志5、二进制日志5.1 开启日志5.2 二进制日志的管理5.3 日志查看5.4 二进制日志还原数据 二、MySQL备份1、备份类型逻辑备份优缺点 2、备份内容3、备份工具3.1 MySQL自带的备份工具3.2 文件系统备…

数据分析入门

B站:01第一课 数据分析岗位职责和数据分析师_哔哩哔哩_bilibili 一、岗位:数据分析师 Q1 数据分析师在公司做什么工作? 数据来源于公司核心业务,通过监测业务健康度来确定业务的健康状况; 通过对用户精细化分析&am…

Java面试题总结(二):Java多线程

文章目录 1.进程和线程的区别,进程间如何通信2. 什么是线程上下文切换3.什么是死锁4.死锁的必要条件5.Synchronized和lock的区别6.什么是AQS锁?7.为什么AQS使用的双向链表?8.有哪些常见的AQS锁9.sleep()和wait()的区别10.yield()和join()区别11.线程池七…

【API篇】三、Flink转换算子API

文章目录 0、demo数据1、基本转换算子:映射map2、基本转换算子:过滤filter3、基本转换算子:扁平映射flatMap4、聚合算子:按键分区keyBy5、聚合算子:简单聚合sum/min/max/minBy/maxBy6、聚合算子:归约聚合re…

wsl使用vscode连接,远程安装C/C++ 拓展时,报错

报错内容: EACCES: permission denied, rename /home/wen/.vscode-server/extensions/.b61b1c7c-f703-4dfd-bdc5-d9a00681c4b7 -> /home/wen/.vscode-server/extensions/ms-vscode.cpptools-1.17.5-linux-x64 解决办法: 升级wsl到wsl2就好了。 &a…

GitLab使用webhook触发Jenkins自动构建

1、jenkins安装gitlab插件 在插件管理中,搜索gitlab安装这个插件。 2、job中配置webhook地址和密钥 进入job设置,构建触发器中就可以看到gitlab的webhook配置,复制URL地址和随机令牌至gitlab中 勾选后,就可以展开设置&#xff…

G.711语音编解码器详解

语音编解码利用人听觉上的冗余对语音信息进行压缩从而达到节省带宽的目的。值得注意的是,本文说的是语音编解码器,也就Speech codec,而常用的还有另一种编解码器称作音频编解码器,英文是Audio codec,它们的区别如下。 以前在学校的时候研究了很多VoIP的编解码器从G.723到A…

神经网络硬件加速器-DPU分析

一 DPU概述 DPU是专为卷积神经网络优化的可编程引擎,其使用专用指令集,支持诸多卷积神经网络的有效实现。 1、关键模块 卷积引擎:常规CONV等ALU:DepthwiseConvScheduler:指令调度分发Buffer Group:片上数据…

Kafka三种认证模式,Kafka 安全认证及权限控制详细配置与搭建

Kafka三种认证模式,Kafka 安全认证及权限控制详细配置与搭建。 Kafka三种认证模式 使用kerberos认证 bootstrap.servers=hadoop01.com:9092,hadoop02.com:9092,hadoop03.com:9092,hadoop04.com:9092 security.

信创办公–基于WPS的Word最佳实践系列 (图文环绕方式)

信创办公–基于WPS的Word最佳实践系列 (图文环绕方式) 目录 应用背景操作步骤1、 打开布局选项中图文环绕方式的方法2、 图文环绕三大类型 应用背景 在Word中,对文字和图片进行排版时,采用各种不同的图片与文字组合效果能够使页面…

php 遍历PHP数组的7种方式

在PHP中&#xff0c;遍历数组有多种方式可以选择。以下是最常用的几种方式&#xff1a; 使用foreach循环 $array array("apple", "banana", "orange"); foreach($array as $value){echo $value . "<br>"; } 输出结果&#xff…

【数组的使用续篇】

文章目录 以数组的形式打印数组打印方法&#xff1a;Arrays.toString(数组名) 数组排序大小排序方法是 Arrays.sort(数组名) 创建一个自己的打印数组的方法自己创建一个冒泡排序两数之间交换方法 逆置数组打印核心思路还是 i 和 j 交换 总结 以数组的形式打印数组 打印方法&am…

浅析“代码可视化” | 京东云技术团队

1.什么是代码可视化&#xff1f; Code visualization is the process of creating graphical representations of source code to help understand and analyze it. 代码可视化是创建源代码的图形表示以帮助理解和分析它的过程。 个人理解&#xff1a;通过使用图形化手段&#…

计算机保研推免面试复习大纲(数学+408)

目录 线性代数概率论高等数学信号与系统离散数学操作系统计算机网络计算机组成数据结构算法编译原理C杂项 线性代数 怎么求逆矩阵 逆矩阵&#xff1a; A A − 1 E AA^{-1}E AA−1E&#xff0c;伴随矩阵&#xff1a; A A ∗ A ∗ A ∣ A ∣ E AA^{*}A^{*}A|A|E AA∗A∗A∣A∣…

Top 10 数据恢复工具,可从iPhone 和 iPad 恢复数据

您是否正在寻找最好的 iPad 恢复软件&#xff0c;但不知道哪个选项最好&#xff1f;没有什么可担心的。本文将为您提供有关根据文件类型、设备兼容性和数据丢失原因等因素选择合适的 iPad 恢复软件的提示。此外&#xff0c;前 10 名提到的恢复软件是安全可靠的。 第 1 部分、iP…

上海亚商投顾:沪指震荡调整 转基因概念股逆势大涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日低开低走&#xff0c;深成指、创业板指均跌超1%&#xff0c;双双创出年内新低。转基因概念股逆势大涨…