Linux-vim

news/2024/9/14 23:58:55/ 标签: linux, vim, 运维

文章目录

  • vi和vim
  • vim的基本概念
  • vim的基本操作
  • vim正常模式命令集
    • 插入模式
    • 从插入模式切换为命令模式
    • 移动光标
    • 删除文字
    • 复制
    • 替换
    • 撤销上一次操作
    • 更改
    • 跳至指定的行
  • vim末行模式命令集
    • 列出行号
    • 跳到文件中的某一行
    • 查找字符
    • 保存文件
    • 推出vim

vim_1">vi和vim

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且
还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、
windows。我们课堂上,统一按照vim来进行讲解。

vim_6">vim的基本概念

vim的三种基本模式:是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)

  1. 正常/普通/命令模式(Normal mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  2. 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。
  3. 末行模式(last line mode)
    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模 式。要查看你的所有模式:打开vim,底行模式直接输入。

vim_16">vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面
在这里插入图片描述
进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。

[正常模式]切换至[插入模式]
输入a
输入i
输入o
在这里插入图片描述
切换到插入模式后,底行显示 INSRT

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

[正常模式]切换至[末行模式]
[ shift + ; ], 其实就是输入 [ : ]

退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
: w (保存当前文件)
:wq (输入「wq」,存盘并退出vim)
: q! (输入q!,不存盘强制退出vim)
在这里插入图片描述

vim_39">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」:屏幕往“前”移动半页

删除文字

「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_97">vim末行模式命令集

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

列出行号

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

跳到文件中的某一行

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

查找字符

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

区别:[ ? ]用于执行向后(文件中向文件开头方向)的搜索,/ 用于向前(文件中向文件末尾方向)搜索。

保存文件

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

vim_116">推出vim

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


http://www.ppmy.cn/news/1519936.html

相关文章

Linux C 内核编程 /proc 编程例子

直接上代码 proc_demo.c内核版本&#xff1a; 5.4.0-150-generic #include <linux/module.h> #include <linux/sched.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> #include <linux/uaccess.h> #include <linux/slab.h>s…

threading.local的使用

python中的threading.local对象 在Python中&#xff0c;使用threading.local对象的意义在于为每个线程提供了一种安全地存储和访问线程局部变量的方式。这种机制对于多线程编程特别有用&#xff0c;因为它可以帮助开发者避免一些常见的多线程编程问题&#xff0c;如数据竞争、…

技术周刊 | Rspack 1.0、v0 支持 Vue、2024 年度编程语言排行榜、Ideogram 2.0、从 0 实现一个 React

大家好&#xff0c;我是童欧巴&#xff0c;欢迎来到第 126 期技术周刊。 资讯 Rspack 1.0 Rspack 1.0 正式发布&#xff0c;作为一款基于 Rust 的高性能 JavaScript 打包工具&#xff0c;它兼容 webpack API 和生态&#xff0c;提供了显著提升的构建性能。1.0 版本在性能、兼…

第三章:实时流数据处理与分析

目录 3.1 流处理框架深入解析与实战 Flink与Kafka Streams的性能对比&#xff1a;事件驱动架构的代码实现 1. Apache Flink&#xff1a;流处理的“性能怪兽” 2. Kafka Streams&#xff1a;轻量级、低延迟的流式处理框架 实时异常检测与报警系统&#xff1a;结合Flink CEP…

【Transformer】基本概述

文章目录 提出背景核心思想—注意力机制流程解析参考资料 提出背景 在Transformer模型出现之前&#xff0c;循环神经网络&#xff08;RNN&#xff09;及其变体&#xff0c;如长短期记忆网络&#xff08;LSTM&#xff09;和门控循环单元&#xff08;GRU&#xff09;&#xff0c;…

版本控制工具git

版本控制工具 git 数据库 > 有代码历史版本 > 仓库 每个文件都是不同的历史版本&#xff0c;以便恢复 集中式版本控制系统 例如&#xff1a;SVN 缺陷&#xff1a; 1.依赖于中心服务器 分布式的版本管理系统 只有程序员用 git 只有需要在同步代码的时候需要联网 程…

Java笔试面试题AI答之面向对象(9)

文章目录 49. 简述Java继承时&#xff0c;类的执行顺序是什么&#xff1f;一、类的静态成员初始化顺序二、对象的初始化顺序三、总结 50. 举例说明什么情况下会更倾向于使用抽象类而不是接口&#xff1f;1. 当需要定义和实现部分通用行为时2. 当需要访问修饰符或方法修饰符时3.…

sqlite3的db.wait方法:等待所有查询完成

Node.js中sqlite3的db.wait方法深入解析 在Node.js环境中&#xff0c;sqlite3库为开发者提供了一个与SQLite数据库进行交互的简洁API。在处理数据库操作时&#xff0c;有时需要等待直到所有的查询都完成&#xff0c;这时db.wait方法就显得尤为重要。本文将深入解析sqlite3库中…

基于Python的机器学习系列(22):高斯混合模型(GMM)聚类的改进版

在之前的篇章中&#xff0c;我们介绍了高斯混合模型&#xff08;GMM&#xff09;及其基本实现。本文将扩展这一模型&#xff0c;重点是引入早停机制来提高训练效率&#xff0c;并且在训练过程中每隔一定的迭代次数绘制聚类结果&#xff0c;以便观察模型的收敛情况。 引入早停机…

Windows下使用pm2管理多个前端vue项目

1. 安装Node.js和npm: 确保你已经在Windows系统上安装了Node.js和npm。你可以在Node.js的[官方网站](https://nodejs.org/)下载并安装适合你系统的版本。 2. 安装pm2: 打开命令提示符(或PowerShell),运行以下命令来全局安装pm2: npm install pm2 -g 3. 创建pm2配置…

React16新手教程记录

文章目录 前言一些前端面试题1. 搭建项目1. 1 cdn1. 2 脚手架 2. 基础用法2.1 表达式和js语句区别&#xff1a;2.2 jsx2.3 循环map2.4 函数式组件2.5 类式组件2.6 类组件点击事件2.6.1 事件回调函数this指向2.6.2 this解决方案2.6.2.1 通过bind2.6.2.2 箭头函数&#xff08;推荐…

【C++ 游戏】密室逃脱

首先来大张旗鼓的介绍一下&#xff1a; 全网之最&#xff1a; 本游戏为全网第一篇C语言的密室逃脱类剧情游戏 本游戏为全网第一篇将画面类同等性质转化为文字类的游戏 本游戏为画——文类型游戏的突破口&#xff0c;适合借鉴 哈哈好了不吹了&#xff0c;不过上面的都是真的。 …

温馨网站练习运用

第二次与团队一起制作网页虽然不进行商用&#xff0c;但是练习一下还是好的&#x1f60a;&#x1f60a; 我主要负责后端部分&#xff0c;该项目用了SpringBoot框架、SpringSecurity的安全框架、结合MyBatis-Plus的数据库查询。如果想看看&#xff0c;网站&#xff1a;温馨网登…

AI大模型之旅-本地安装llm工具dify 和 fastgpt

一:安装dify 官网地址&#xff1a; https://dify.ai/ 克隆 Dify 源代码至本地。 git clone https://github.com/langgenius/dify.git 启动 Dify 进入 Dify 源代码的 docker 目录&#xff0c;执行一键启动命令&#xff1a; cd dify/docker cp .env.example .env docker com…

多目标应用:基于自组织分群的多目标粒子群优化算法(SS-MOPSO)的移动机器人路径规划研究(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

71. 简化路径算法实现详解(goalng版)

LeetCode 71. 简化路径详解 一、题目描述 给你一个字符串 path,表示指向某一文件或目录的 Unix 风格绝对路径(以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点(…)表示将目录切换到上一级(…

数据结构代码集训day14(适合考研、自学、期末和专升本)

题目均来自b站up&#xff1a;白话拆解数据结构&#xff01; 今日题目如下&#xff1a;&#xff08;1&#xff09;试写一个算法判断给定字符序列是否是回文。 &#xff08;2&#xff09;给定一个算法判断输入的表达式中括号是否匹配。假设只有花、中、尖三种括号。 题1 回文序列…

【类模板】类模板的特化

一、类模板的泛化 与函数模板一样&#xff0c;类模板的泛化就是普通的模板&#xff0c;不具有特殊性的模板。 以下的类模板为泛化的版本 //类模板的泛化 template<typename T,typename U> struct TC {//静态成员变量static int static_varible; //声明TC() {std::cout…

【Java EE】JVM

目录 1. JVM简介 2.JVM运行流程 3.JVM运行时数据区 3.1 堆&#xff08;线程共享&#xff09; 3.2 Java虚拟机栈&#xff08;线程私有&#xff09; 1. JVM简介 JVM是 Java Virtual Machine 的简称&#xff0c;意为Java虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的…

python-简单的dos攻击

前言 这个是DOS攻击学习(注意&#xff1a;千万别去攻击有商业价值的服务器或应用&#xff0c;不然会死的很惨(只有一个IP通过公网访问容易被抓),前提是网站没有攻击防御) 创建一个以python编写的后端web服务(好观察) 安装flask pip install flask from flask import Flaskapp …