一篇文章学会Vim

一篇文章学会Vim

声明:以下内容均为我个人的理解,如果发现错误或者疑问可以联系我共同探讨

简介

Vim是一个高度可定制的终端文本编辑器,它可以很方便的创建和修改任何类型的文本。作为vi的升级版,有许多新的特性(以下列出的特性为比较常用的,详细特性可以查看help vi_diff.):

  • 无限撤销:可以无限制的撤销
  • 可移植性:Vi仅在Unix上可用,Vim还可以在Windows、Macintosh,Amiga,OS / 2,VMS,QNX和其他系统上运行。
  • 语法高亮:当用Vim进行编程的时候,他可以根据正在编辑的文件类型,使其以内容以不同的颜色或样式突出显示。Vim捆绑了数百种语法突出显示规则集。
  • 图形用户界面:Vim在控制台上运行良好,也可以在许多GUI中本地运行,包括Mac OS和Windows。它还可以操作剪贴板。
  • vi兼容模式:紧要关头,您可以强制Vim像vi一样。使Vim与vi不兼容的所有改进和错误修复都已关闭,您将获得100%与vi兼容的编辑器。

Vim作为许多程序员最喜欢的文本编辑器之一,它具有像:多级撤销、代码补全、支持数百种编程语言和文本格式、强大的搜索和替换功能等。

安装与卸载

安装

Windows

先把安装包下载下来,然后根据提示安装。

Unix

在Github上下载源文件安装

Mac

在github下载,根据文件类型安装。

详细安装教程

卸载

Unix or Mac
源代码安装

在控制台输入

 make uninstall
软件包管理器安装

根据不同软件包管理器的卸载命令卸载

Windows

找到安装目录下的 “uninstall-gui” 程序进行卸载

教程

vimtutor

Vim自带教程vimtutor是你从零开始学习Vim最好的老师,教程包含了日常所需要的各个命令和功能,还有实操教学。如果你的系统语言是中文,那么打开vimtutor时默认是中文版的教程,中文版教程由梁昌泰 先生进行译制。在命令行中输入vimtutor,就可以打开该教程,学习完该教程大约需要30分钟左右。

有一款游戏Vim Adventure,可以作为学习Vim的一种放松。

Vimtutor章节小结
第一讲
  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。

    ​ h (左移) j (下行) k (上行) l (右移)

  2. 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车>

  3. 欲退出 Vim 编辑器,请输入 :q! <回车> 放弃所有改动。或者输入 :wq <回车> 保存改动。

  4. 在正常模式下删除光标所在位置的字符,请按: x

  5. 欲插入或添加文本,请输入:

    ​ i 输入欲插入文本 在光标前插入文本

    ​ A 输入欲添加文本 在一行后添加文本

特别提示:按下 键会带您回到正常模式或者撤消一个不想输入或部分完整的命令。

第二讲
  1. 欲从当前光标删除至下一个单词,请输入:dw

  2. 欲从当前光标删除至当前行末尾,请输入:d$

  3. 欲删除整行,请输入:dd

  4. 欲重复一个动作,请在它前面加上一个数字:2w

  5. 在正常模式下修改命令的格式是:

    operator  [number]  motion
    

    其中:

    ​ operator - 操作符,代表要做的事情,比如 d 代表删除

    ​ [number] - 可以附加的数字,代表动作重复的次数

    ​ motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),$ 代表行末等等。

  6. 欲移动光标到行首,请按数字0键:0

  7. 欲撤消以前的操作,请输入:u (小写的u),欲撤消在一行中所做的改动,请输入:U (大写的U),欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R

第三讲
  1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置于当前光标所在行的下一行。

  2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字符即可。

  3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当前光标到行末的内容。

  4. 更改类命令的格式是:

    c [number] motion

第四讲
  1. CTRL-G 用于显示当前光标所在位置和文件状态信息。 G 用于将光标跳转至文件最后一行。先敲入一个行号然后输入大写 G 则是将光标移动至该行号代表的行。gg 用于将光标跳转至文件第一行。

  2. 输入 / 然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。输入 ? 然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。完成一次查找之后按 n 键是重复上一次的命令,可在同一方向上查找下一个匹配字符串所在;或者按大写 N 向相反方向查找下一匹配字符串所在。CTRL-O 带您跳转回较旧的位置,CTRL-I 则带您到较新的位置。

  3. 如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。

  4. 在一行内替换头一个字符串 old 为新的字符串 new,请输入 😒/old/new

    在一行内替换所有的字符串 old 为新的字符串 new,请输入 😒/old/new/g

    在两行内替换所有的字符串 old 为新的字符串 new,请输入 :#,#s/old/new/g

    在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g

    进行全文替换时询问用户确认每个替换需添加 c 标志 :%s/old/new/gc

第五讲
  1. :!command 用于执行一个外部命令 command。

    请看一些实际例子:

    (MS-DOS)     (Unix)
    
    :!dir      :!ls      # 用于显示当前目录的内容。
    
    :!del FILENAME  :!rm FILENAME  # 用于删除名为 FILENAME 的文件。
    
  2. :w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文件中。

  3. v motion :w FILENAME 可将当前编辑文件中可视模式下选中的内容保存到文件FILENAME 中。

  4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面。

  5. :r !dir 可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面。

第六讲
  1. 输入小写的 o 可以在光标下方打开新的一行并进入插入模式。输入大写的 O 可以在光标上方打开新的一行。

  2. 输入小写的 a 可以在光标所在位置之后插入文本。输入大写的 A 可以在光标所在行的行末之后插入文本。

  3. e 命令可以使光标移动到单词末尾。

  4. 操作符 y 复制文本,p 粘贴先前复制的文本。

  5. 输入大写的 R 将进入替换模式,直至按 键回到正常模式。

  6. 输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:

    ‘ic’ ‘ignorecase’ 查找时忽略字母大小写

    ‘is’ ‘incsearch’ 查找短语时显示部分匹配

    ‘hls’ ‘hlsearch’ 高亮显示所有的匹配短语

    选项名可以用完整版本,也可以用缩略版本。

  7. 在选项前加上 no 可以关闭选项: :set noic

第七讲
  1. 输入 :help 或者按 键或 键可以打开帮助窗口。

  2. 输入 :help cmd 可以找到关于 cmd 命令的帮助。

  3. 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。

  4. 输入 :q 以关闭帮助窗口

  5. 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。

  6. 当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。

    按 可以使用一个补全。

帮助

在控制台中输入vim就可以查看Vim的相关信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据图片所示我们可以知道,当前VIM的版本为8.0.1365,想退出需要输入":q",查看在线帮助文档可以输入":help",查看版本信息可以输入":help version8"

在英文模式下输入":help"回车后便可以看到

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里有详细的Vim教程,教你玩转Vim。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt界面篇:Qt停靠控件QDockWidget、树控件QTreeWidget及属性控件QtTreePropertyBrowser的使用

1、功能介绍 本篇主要使用Qt停靠控件QDockWidget、树控件QTreeWidget及Qt属性控件QtTreePropertyBrowser来搭建一个简单实用的主界面布局。效果如下所示。 2、控件使用详解 2.1 停靠控件QDockWidget QDockWidget可以停靠在 QMainWindow 内或作为桌面上的顶级窗口浮动。默认值…

rollup 插件输出生成钩子

✨专栏介绍 Rollup专栏是一个专门介绍Rollup打包工具的系列文章。Rollup是一个现代化的JavaScript模块打包工具&#xff0c;它可以将多个模块打包成一个或多个文件&#xff0c;以提高应用程序的性能和加载速度。 在Rollup专栏中&#xff0c;您将学习到如何安装和配置Rollup&a…

如何选择合适的语音呼叫中心?

市场上不同的语音呼叫中心提供商&#xff0c;都有其独特的优势和不足。企业在选择语音呼叫中心服务公司时&#xff0c;主要考虑以下因素&#xff1a;服务质量、价格、技术支持、客户支持等。 首先&#xff0c;服务质量是选择语音呼叫中心需关注的最重要因素之一。 为确保语音…

虾皮广告数据分析:如何进行虾皮广告数据分析以优化广告效果

虾皮&#xff08;Shopee&#xff09;作为一家知名的电商平台&#xff0c;广告数据分析是优化广告效果的关键步骤。通过对广告数据进行深入分析&#xff0c;卖家可以了解广告的表现、找出优势和不足&#xff0c;并制定更有效的广告策略。在本文中&#xff0c;我们将介绍如何进行…

ElasticSearch深度分页解决方案

一、前言 ElasticSearch是一个基于Lucene的搜索引擎&#xff0c;它支持复杂的全文搜索和实时数据分析。在实际应用中&#xff0c;我们经常需要对大量数据进行分页查询&#xff0c;但是传统的分页方式在处理大量数据时会遇到性能瓶颈。本文将介绍ElasticSearch分页工作原理、深…

VM中安装Linux以及Win系统

目录 准备条件 安装RHEL9.3 步骤一&#xff1a;按照图片进行操作 步骤二&#xff1a;选择配置方式 步骤三&#xff1a;选择虚拟芯片 步骤四&#xff1a;安装镜像 步骤五&#xff1a;选择操作系统 步骤六&#xff1a;名字以及存储位置 步骤七&#xff1a;配置虚拟机参数…

C#利用openvino部署PP-TinyPose人体姿态识别

【官方框架地址】 github.com/PaddlePaddle/PaddleDetection 【算法介绍】 关键点检测算法往往需要部署在轻量化、边缘端设备上&#xff0c;因此长期以来都存在一个难题&#xff1a;精度高、速度则慢、算法体积也随之增加。而PP-TinyPose的出世彻底打破了这个僵局&#xff0c…

git 本地仓库

本地仓库 start.bat 启动

promethues grafana 安装和使用

文章目录 1、promethues安装2、node-exporter安装3、grafana安装4、配置promethues监控node节点5、grafana操作外传 Docker 镜像下载地址&#xff1a; https://hub.docker.com 比较好的hub.docker.com///-- https://hub.docker.com/u/bitnami grafana监控面板&#xff1a;https…

[LitCTF 2023]这是什么?SQL !注一下 !

[LitCTF 2023]这是什么&#xff1f;SQL &#xff01;注一下 &#xff01; wp 题目描述&#xff1a;为了安全起见多带了几个套罢了o(▽)q 页面内容&#xff08;往下滑&#xff09;&#xff1a; SQL 语句已给出&#xff0c;无非是更换了闭合方式。 先输个 1 试试&#xff1a; …

Capsolver:解决Web爬虫中CAPTCHA挑战的最优解决方案

Web爬虫已经成为从各种在线来源提取和分析数据的不可或缺的技术。然而&#xff0c;在Web爬取过程中&#xff0c;经常会遇到的一个共同挑战是CAPTCHA。CAPTCHA&#xff08;完全自动化的公共图灵测试&#xff0c;用于区分计算机和人类&#xff09;是一种安全措施&#xff0c;旨在…

【面试高频算法解析】算法练习3 双指针

前言 本专栏旨在通过分类学习算法&#xff0c;使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目&#xff0c;帮助您深度理解每种算法&#xff0c;避免出现刷了很多算法题&#xff0c;还是一知半解的状态 专栏导航 二分查找回溯双指针滑动窗口深度优先搜索…

python 基础语法函数

函数定义 def 函数名(形参列表用逗号隔开)&#xff1a; 函数体 return 返回值 # 有参数 无返回值 def my_length(data):count 0for i in data:count 1print(f"data count{count}")my_length(str1) my_length(str2)#无参数无返回值 def say_hello():print("h…

Idea如何配置git

打开Ideal&#xff0c;点击Settings&#xff0c;找到Version Control这一栏&#xff0c;然后点开&#xff0c;找到Git 如果我们电脑是已经有git&#xff0c;那我们就点击那个有点像文件夹的标致&#xff0c;然后找到我们安装在电脑上面的自己安装的git的exe结尾的文件&#xff…

Android linephone-android sdk设置语音编码问题

1.遇到的问题 今天遇到linphone-android sdk需要解决语音编码问题&#xff0c;需要指定编码。查了下配置&#xff0c;里面没有发现类似的配置。 ## Start of factory rc # This file shall not contain path referencing package name, in order to be portable when app is r…

云原生技术专题 | 解密2023年云原生的安全优化升级,告别高危漏洞、与数据泄露说“再见”(安全管控篇)

背景介绍 2023年&#xff0c;我们见证了科技领域的蓬勃发展&#xff0c;每一次技术革新都为我们带来了广阔的发展前景。作为后端开发者&#xff0c;我们深受其影响&#xff0c;不断迈向未来。 随着数字化浪潮的席卷&#xff0c;各种架构设计理念相互交汇&#xff0c;共同塑造了…

进程和计划任务-------后续(二)

一、进程管理 1.进程启动---------- 前台启动与后台启动 进程需要手动启动 前台启动&#xff08;运行&#xff09;&#xff1a;通过终端启动&#xff0c;且启动后一直占据终端&#xff08;影响当先终端的操作&#xff09; 后台启动&#xff1a;可通过终端启动&#xff0c;但启…

ts axios 指定返回值类型,返回数据类型不确定该怎么办 typescript

ts axios 指定返回值类型&#xff0c;返回数据类型不确定该怎么办 typescript 转到 ts 以来&#xff0c;一直有个问题困扰着我&#xff0c;就是每次用 axios 获取数据时&#xff0c;返回值 res 的类型都不能确定&#xff0c;这就导致编辑器一直提示我&#xff1a; 原因 原因是…

深入理解可变参数

目录 1.C语言方式 1.1.宏介绍 1.2.原理详解 1.3.案例分析 1.4.其他实例 2.C之std::initializer_list 2.1.简介 2.2.原理详解 2.3.案例分析 3.C之可变参数模版 3.1.简介 3.2.可变参数个数 3.3.递归包展开 3.4.逗号表达式展开 3.5.Lambda 捕获 3.6.转发参数包 4…

LN和BN

假设batch为2&#xff0c;&#xff08;2&#xff0c;3&#xff0c;256&#xff0c;256&#xff09;这样的样本 LN比较直观就是在每个独立的样本上计算均值和方差&#xff0c;然后归一化。&#xff08;2&#xff0c;3&#xff0c;256&#xff0c;256&#xff09; 归一化是将数…