Linux笔记---vim的使用

1. vim的基本概念

Vim是一款功能强大的文本编辑器,它起源于Unix系统的vi编辑器,并在其基础上进行了许多改进和增强。

Vim以其高效的键盘操作、高度的可定制性和强大的文本处理能力而闻名,尤其受程序员和系统管理员的欢迎。

Vim支持多种模式,包括普通模式、插入模式、末行(底行/命令)模式、替换模式和可视模式等,每个模式都有其特定的功能和操作方式。

上面的5种比较常用,而其中最重要的就是普通,插入,末行三个模式。

下面,我们就逐个介绍这些模式的用处和使用方式。

2. vim的模式

2.1 普通模式

普通模式也称命令模式,是vim打开之后的默认模式,在该模式下我们不能直接通过键盘输入或删除,但可以通过命令来对文本进行快速的编辑。

光标移动:

「h」/「j」/「k」/「l」:分别控制光标左、下、上、右移一格(上下左右键也可,但是hjkl更加正规)

「数字n」+「h」/「j」/「k」/「l」:分别控制光标左、下、上、右移n格


[gg]:移动到文本开始

「ctrl」+「g」:列出光标所在行的行号

[G]:移动到文本末端

「数字n」+「G」:移动到文本的第n行


「 $ 」:移动到光标所在行的“行尾”

「数字n」+「 $ 」:移动到光标所在行开始计算的第n行的“行尾”

「^ 」:移动到光标所在行的“行首”

「数字n」+「 ^ 」:移动到光标所在行的第n个字符


「w」:光标跳到下个字(单词或特殊字符)的开头

「e」:光标跳到下个字的字尾

「b」:光标回到上个字的开头
「ctrl」+「b」:屏幕往“后”移动一页

「ctrl」+「f」:屏幕往“前”移动一页

「ctrl」+「u」:屏幕往“后”移动半页

「ctrl」+「d」:屏幕往“前”移动半页

删除/剪切/复制/粘贴:

「x」:删除光标所在位置的一个字符

「数字n」+「x」:删除光标所在位置及之后的共n个字符

「X」:大写的X,删除光标所在位置之前一个字符

「数字n」+「X」:删除光标所在位置之前n个字符


「dd」:剪切光标所在行

「数字n」+「dd」:从光标所在行开始剪切n行

「cw」:剪切光标所在处到所在字的字尾的内容

「c」+「数字n」+「w」:剪切n个字


「yw」:将光标所在之处到字尾的字符复制到缓冲区中

「数字n」+「yw」:复制n个字到缓冲区

「yy」:复制光标所在行到缓冲区

「数字n」+「yy」:复制从光标所在行开始向下数共n行。


「p」:将缓冲区内的字符贴到光标所在位置(粘贴)。

替换:

「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止(进入替换模式)。 

撤销:

「u」:撤销(相当于图形化界面编辑器的左旋箭头)

「ctrl + r」: 撤销的恢复(相当于图形化界面编辑器的右旋箭头)

2.2 插入模式

在普通模式下按 "a/i/o" 即可进入插入模式,在该模式下可以像记事本一样对文本进行编辑。

此模式下,左下角会显示"-- Insert --":

「i」:直接进入插入模式

「a」:进入插入模式并将光标跳转到下一个字符

「o」:进入插入模式并新开一行(相当于移动到行尾并回车)

2.3 末行模式

在普通模式下按 ":" ,即 "shift + ;" 即可进入末行模式。

此时左下角会显示 ":" ,并且光标会自动跳转到 ":" 之后,我们就可以在冒号后输入命令。

Vim的末行模式(Last Line Mode),也称为命令行模式,是Vim编辑器中的一种模式,允许用户输入一系列的命令来执行文件的保存、退出、搜索、替换等操作。

在末行模式下,用户可以执行比命令模式更多的复杂操作,这些操作通常涉及到对文件内容的全局修改或者对Vim本身的配置调整。

该模式下命令十分多,大多是对vim进行配置的,我们推荐使用自动配置的插件进行配置,所以这里不多介绍。

常用命令:

「w」: 保存文件

「q」:退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim
「wq」:保存+退出

「set nu」: 在文件中的每一行前面列出行号

「数字n」:跳转到目标行号

「/」+「关键字」: 从光标位置向后依次查找关键字,输入并回车之后,每按一下「n」键会进行一次查找(光标移动到指定关键字的位置)

「?」+「关键字」从光标位置向前依次查找关键字,输入并回车之后,每按一下「n」键会进行一次查找(光标移动到指定关键字的位置)

「s/要被替换的内容/替换后的内容/」替换光标所在行的文本

「%s/要被替换的内容/替换后的内容/」替换整个文件中的文本

「!」+「外部命令」:执行外部操作系统的命令,例如

 分割窗口:

「sp」+「文件名」:水平分割窗口,在不关闭当前文件的情况下再打开一个文件,例如

「vsp」+「文件名」:垂直分割窗口,在不关闭当前文件的情况下再打开一个文件,例如

在多窗口中,光标在哪个窗口下,操作的就是哪个窗口,两个窗口是完全独立的,输入命令只会对当前所在的窗口生效。

窗口切换:

下面这些命令是在普通模式下使用的。

「Ctrl + w」+「h」:移动到左侧的窗口。

「Ctrl + w」+「j」:移动到下方的窗口。

「Ctrl + w」+「k」:移动到上方的窗口。

「Ctrl + w」+「l」:移动到右侧的窗口。

「Ctrl + w」+「w」:在所有分割的窗口中循环切换

「Ctrl + w」+「Ctrl + w」:效果与上一条相同,但是方便连续切换

2.4 可视模式

 在普通模式下按「Shitf/Ctrl」+「v」,即可进入可视模式,该模式下可对文本进行批量选中。

其中「Shitf」+「v」进入行选中(visual line),「Ctrl」+「v」进入块选中(visual block)。

行选中:

以行为单位选中(默认选中当前行,上下键阔选),选中之后可执行「d」(删除)、「y」(复制)、「>」(增加缩进)、「<」(减少缩进)等命令。

块选中:

以字符块为单位选中(默认选中光标所在字符,上下左右键阔选),选中之后可执行「d」(删除)、「y」(复制)、「c」(更改)等命令。


可视模式常用于批量化注释

对要加注释的地方进行块选中之后,按「Shitf」+「i」可直接进入插入模式,不要移动光标,直接在文本中添加"//"然后按「Esc」即可批量添加注释。

3. vim的配置

vim的配置其实就是对当前用户家目录下的".vimrc"(没有就自己建一个)文件进行更改,在其中放入末行模式的命令,即可在每次打开vim时自动执行这些指令。

如果想要配置一些更高级的功能,则需要下载对应的插件,配置的好甚至可以让vim变得和编译器一样。

当然,自己配置起来会十分麻烦,这里我推荐到gitee或github上找一找自动完成vim配置的插件。

推荐:

Centos 7 : vimforcpp

ubuntu    : vimplus

 vimplus:

vimforcpp比较强一些,有自动补全功能,vimplus没有。

但是可惜vimforcpp还不支持ubuntu。 

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

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

相关文章

cmake 编译 01

CMakeLists.txt cmake_minimum_required(VERSION 3.10)project(MyProject)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True)# 如果顶层 CMakeLists.txt 文件中使用了 add_subdirectory() 命令&#xff0c;CMake 会进入指定的子目录&#xff0c;并处理该目录…

2024年超好用的防泄密软件分享|10款加密防泄密软件推荐

在当今数字化时代&#xff0c;企业数据安全已成为不可忽视的重要议题。随着数据泄露事件频发&#xff0c;选择一款高效可靠的防泄密软件变得尤为重要。本文将为您推荐10款在2024年备受推崇的防泄密软件&#xff0c;并重点介绍Ping32防泄密软件的功能与优势。 1. Ping32防泄密软…

Zico 2 靶机 - 详细流程

✨ 准备工作 靶机 && kali 环境要求 机器名网络配置靶机Zico 2NAT 模式攻击机kaliNAT 模式 靶机下载链接&#xff1a;zico2: 1 ~ VulnHub 打开 VMware&#xff0c;将 zico2.ova 拖拽到 VMware 中 设置 虚拟机名称(A) - 存储路径(P)- 导入 若是&#xff0c;…

3. 单例模式唯一性问题—构造函数

1. 构造函数带来的唯一性问题指什么&#xff1f; 对于不继承MonoBehaviour的单例模式基类 我们要避免在外部 new 单例模式类对象 例如 &#xff08;完整单例模式定义在上一节&#xff09; public class Main : MonoBehaviour {void Start(){// 破坏单例模式的唯一性&#xf…

【Python】AI Navigator对话流式输出

前言 在上一章节,我们讲解了如何使用Anaconda AI Navigator软件结合python搭建本机的大模型环境 【python】AI Navigator的使用及搭建本机大模型_anaconda ai navigator-CSDN博客 但是在上一章节搭建的大模型环境无法流式输出,导致输出需要等待很久,所以在这一章节,解决…

使用Three.js和Force-Directed Graph实现3D知识图谱可视化

先看样式&#xff1a; 在当今信息爆炸的时代&#xff0c;如何有效地组织和展示复杂的知识结构成为一个重要的挑战。3D知识图谱可视化是一种直观、交互性强的方式来呈现知识之间的关系。本文将详细介绍如何使用HTML、JavaScript、Three.js和Force-Directed Graph库来实现一个交互…

【深度学习】阿里云GPU服务器免费试用3月

【深度学习】阿里云GPU服务器免费试用3月 1.活动页面2.选择交互式建模PAI-DSW3.开通 PAI 并创建默认工作空间4.前往默认工作空间5.创建交互式建模&#xff08;DSW&#xff09;实例 1.活动页面 阿里云免费使用活动页面 2.选择交互式建模PAI-DSW 支持抵扣PAI-DSW入门机型计算用量…

【Unity新闻】Unity 6 正式版发布

Unity CEO Matt Bromberg 在今天自豪地宣布&#xff0c;Unity 6 正式发布&#xff01;作为迄今为止最强大和稳定的版本&#xff0c;Unity 6 为游戏和应用开发者提供了大量的新功能和工具&#xff0c;帮助他们加速开发并提升性能。 本次正式版是6.0000.0.23f1&#xff08;LTS&a…

spring-boot学习(2)

上次学习截止到拦截器 1.构建RESfun服务 PathVariable通过url路径获取url传递过来的信息 2.MyBatisPlus 第三行的mydb要改为自己的数据库名 第四&#xff0c;五行的账号密码改成自己的 MaooerScan告诉项目自己的这个MyBatisPlus是使用在哪里的&#xff0c;包名 实体类的定义…

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型&#xff08;LLM&#xff09;应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型&#xff08;LLM&#xff09;应用开发平台 一、简单介绍 二、Docker 下载安…

设置 Notepad++ 制表符(Tab 缩进)宽度为2个空格大小

Notepad 默认的制表符宽度是 4 个空格的大小&#xff0c;一个规模比较大的代码段或者 xml 等文件&#xff0c;小屏幕打开时看到的情景真的和让人着急&#xff0c;拖来拖去&#xff01;有两种方案可以解决这种情况。 修改缩进为空格 这种我们不太推荐&#xff0c;但是有些公司…

小白必看web专题!配置环境还在用phpstudy?该用docker了!(php+nginx+mysql+phpmyadmin。)

大家好&#xff0c;我是Dest1ny。 大家用mac或者是windows都是使用phpstudy。 今天docker来搭建一整个phpnginxmysqlphpmyadmin。 而且mac用docker比较方便&#xff01; docker才是众望所归。 大家多多点赞&#xff0c;多多支持&#xff0c;谢谢&#xff01;&#xff01;&…

Qml-Item的构造和显示顺序

Qml-Item的构造和显示顺序 qml文件中组件构造顺序 在同一个qml文件中&#xff0c;同层级的Item, 文件尾的Item优先构造&#xff0c;文件首的Item后构造。这就能解释默认情况下同一个qml文件中&#xff0c;几个同层级的item都设置了focus:true&#xff0c;为啥最上面item最终有…

echarts设置x轴中文垂直显示,x轴滚动条

echarts官网配置&#xff0c;主要配置dataZoom option {xAxis: {type: category,data: [张三,李四,王五,赵六,孙七,周八,吴九,郑十,钱十一,陈十二,刘十三,杨十四,黄十五,何十六,宋十七],axisLabel: {formatter: function (value) {return value.split().join(\n); // 使用换行…

超全!一文详解大型语言模型的11种微调方法

导读&#xff1a;大型预训练模型是一种在大规模语料库上预先训练的深度学习模型&#xff0c;它们可以通过在大量无标注数据上进行训练来学习通用语言表示&#xff0c;并在各种下游任务中进行微调和迁移。随着模型参数规模的扩大&#xff0c;微调和推理阶段的资源消耗也在增加。…

爬虫实战(黑马论坛)

1.定位爬取位置内容&#xff1a; # -*- coding: utf-8 -*- import requests import time import re# 请求的 URL 和头信息 url https://bbs.itheima.com/forum-425-1.html headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like…

基于Java实现(PC)大学班级事务管理系统

courseDesign_Java Java 课设 要求 本次设计要求利用 Java 实现 C/S 模式的大学班级内日常事务管理系统&#xff08;PC 版&#xff0c;应用于校内网有线网络访问&#xff0c;暂不开发移动端&#xff09;&#xff0c;不得依赖现有的建模框架&#xff0c;使用 swings 技术完成如…

华为OD机试 - 爱吃蟠桃的孙悟空 - 二分查找(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

决策树和集成学习的概念以及部分推导

一、决策树 1、概述 决策树是一种树形结构&#xff0c;树中每个内部节点表示一个特征上的判断&#xff0c;每个分支代表一个判断结果的输出&#xff0c;每个叶子节点代表一种分类结果 决策树的建立过程&#xff1a; 特征选择&#xff1a;选择有较强分类能力的特征决策树生成…