当前位置: 首页 > news >正文

【Linux】 vi / vim 使用

天天用vim 或者vi 。看着大佬用的很6 。我们却用的很少。今天咱们一起系统学习一下。

vi / vim 发展史

vi

是一款由加州大学伯克利分校,Bill Joy研究开发的文本编辑器。

vim

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

Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。

vim 和 vi 都是一个文本编辑器不只linux的命令。

Linux通常都已经默认安装好了 vi 或 Vim 文本编辑器,我们只需要通过vim命令就可以直接打开vim编辑器了,如下图所示:

输入:vim

退出输入  :q 

是不是很一样。哈哈。

vim使用

注意1

不要使用 vim 打开大文件, vim 会一次性读取所有内容到内存,容易造成宿主机内存溢出,打开文件前查看文件大小。一般不要超过100MB 。

使用vim打开文件

基本语法: vim 文件名称

示例:vim test4.text

vi是三中模式

(不学习这个了,了解就行)

  • Command(命令)模式,用于输入命令
  • Insert(插入)模式,用于插入文本
  • Visual(可视)模式,用于视化的的高亮并选定正文
VIM四种模式
  • Normal      正常模式
  • Insert         插入(编辑)模式
  • Command 命令模式
  • Visual        可视化模式
Normal 正常模式

启动vim后默认处于正常模式。不论位于什么模式,按下键(有时需要按两下)都会进入正常模式。正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。

Insert 插入(编辑)模式

在正常模式中按下i, I, a, A等键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中, 输入内容会插入到文本中。

Command 命令模式

在正常模式中,按下:(英文冒号)键,会进入命令模式。 在命令模式中可以设置vim一些格式,也可以进行内容查找等操作。

Visual 可视化模式

在正常模式中按下v, V, +v,可以进入可视模式。 可视模式主要用于选择文本内容时,可以有很直观的看到选中内容。
可视模式有三种:


1、字符模式: v (小写)

2、行模式: V (大写)

3、块模式: Ctrl+v

移动命令

通常使用键盘区右下角的  ↑  ↓  ←  →  

Vim 提供了另一种方式来移动光标——使用 h、j、k、l 键来移动光标。

  • h    光标向 左 移动一个字符
  • j    光标向 下 移动一行(实际行:以换行符结束的为一行)
  • gj    光标向 下 移动一行(屏幕行:屏幕上的一行)
  • k    光标向 上 移动一行(实际行:以换行符结束的为一行)
  • gk    光标向 下 移动一行(屏幕行:屏幕上的一行)
  • l    光标向 右 移动一个字符
  • 0     到行首
  • ^      到行首第一个字符,如果前面有空格的话
  • $      到行尾
  • gg     快速到文件头
  • G     快速到文件尾
  • 100G     跳转到第100行
  • w / W    移动到下一个单词/字符串的开头( 大写是以空格为分界符)
  • e /E    移动到下一个单词/字符串的结尾
  • b/ B    移动到(上一个/当前)单词/字符串的开头
  • ge / gE    移动到(上一个/当前)单词/字符串的结尾
  • Ctrl-f    向上翻页
  • Ctrl-b    向下翻页
  • Ctrl-d    向下翻半页
  • Ctrl-u    向上翻半页
  • zz    光标所在行移动到屏幕的中间。
  • zt    光标所在行移动到屏幕的顶端。
  • zl    光标所在行移动到屏幕的底端。
操作命令
  • y    复制 (yank)
  • yy 复制一行
  • 10yy 向下复制10行
  • yw 复制光标开始的一个单词
  • y$ 复制光标到行尾
  • yfB 复制光标到第一个大写B中间的内容
  • y2fB 复制光标到第二个大写B中间的内容
  • x 向剪切一个一个字符,如果是在行尾,则为向前剪切
  • 3x 剪切三个
  • xp 非行尾交换两个字符,如从 bs 变成 sb
  • p  粘贴(y复制完了 用p来粘贴)
  • 3p 将复制或剪切的内容粘贴三次
  • c    变更 (change)    cc :删除一行并进入插入模式
  • cw 替换文本直到单词末尾(ce也可) 语法为ncw n表示需要删除的单词个数,表示删除n个单词后进入insert模式

  • c$ 替换文本直到行尾 同cw 只是是从光标开始删除至行尾 并进入insert 模式

  • d        删除 (delete)  
  • dd:  删除一行
  • 20dd  删除20行
  • dw     删除一个单词
  • df”      删除到出现的第一个双引号
  • S        删除整行,与dd区别在于,S删除后会进入Insert模式
  • x         删除光标下的字符
  • X        删除光标左边的字符
  • ~    转换大小写    '~' 不是一个操作符,但是可以在配置文件里 "set tildeop" 将其变成一个操作符
  • g~    转换大小写(大写边小写,小写变大写)    
  • gu    将选中内容转换为小写    
  • gU    将选中内容转换为大写    
  • >    shift right (向右移动一个制表符)    >>:向右缩进当前行
  • <    shift left(向左移动一个制表符)    <<:向左缩进当前行
  • u(小写) 撤销
  • U撤销对整行的操作
  • Ctrl + r 重做(Redo),即撤销的撤销。
保存退出
  • :wq保存并退出
  • ZZ保存并退出
  • :q!丢弃修改并退出 (q退出,有修改的话q不能退出)
  • :qa!打开多个文件时使用此命令
查找并替换
  • :/yang  直接查找文本yang  内容
  • :/yang  表示查找yang 单词 然后 :   n 查找下一个, :N查找前一个
  • : s/old/new/g  查找old并替换为new,g代表整行匹配 替换 在进入命令行模式前 光标 所在行
  • :#, #s/old/new   #, #代表首尾行号 比如 1,3 就是1-3行 可以通过 :set nu 来显示行号
  • :%s/old/new/g  全文匹配替换
  • :%s/old/new/gc  全文匹配替换,并每次替换会弹出确认提示 c所有替换命令 加c 后会弹出确认提示
选项设置
  • :set ic 忽略大小写
  • :set is 部分匹配(like)
  • :set hls 高亮匹配
  • :set nu 显示行号

文件操作
  • :e +    filename打开新文件
  • :r +    filename读取文件并插入到当前文件
  • :bn   切换到下一个文件 当使用 vim file1 file2 打开多个文件时
  • :bp   切换到上一个文件
分屏启动

  • vim -on file1 file2…  水平分屏
  • vim -On file1 file2…  垂直分屏
  • Ctrl + w =   所有屏一样高度
  • Ctrl + w +  增加高度
  • Ctrl + w -   减少高度
  • Ctrl + w c  关闭当前窗口(如果是最后一个,无法关闭) 先按ctrl +w 再按c
  • Ctrl + w q  关闭当前窗口(如果是最后一个,则退出vim) 先按ctrl +w 再按q 或者直接进入命令行模式 输入q 一个一个的关闭
     
水平分屏   vim -on test4.text test8.text

 垂直分屏  vim -On test4.text test8.text

Vim 有一个超级大招 那就是宏录制。今天不想写了,有空在写吧,哈哈哈哈哈。

相关文章:

【Linux】 vi / vim 使用

天天用vim 或者vi 。看着大佬用的很6 。我们却用的很少。今天咱们一起系统学习一下。 vi / vim 发展史 vi 是一款由加州大学伯克利分校&#xff0c;Bill Joy研究开发的文本编辑器。 vim Vim是一个类似于Vi的高度可定制的文本编辑器&#xff0c;在Vi的基础上改进和增加了很多…...

Leetcode hot 100之双指针(快慢指针、滑动窗口)

目录 数组 有序的平方仍有序 删除/覆盖元素 移动零&#xff1a;交换slow和fast 滑动窗口&#xff1a;最短的连续子串&#xff08;r可行解->l--最短解&#xff09; 最小长度的子数组 求和&#xff1a;sort、l i 1, r len - 1 三数之和abctarget 四数之和abcdtarg…...

Bridge Champ助力我国桥牌阔步亚运, Web3游戏为传统项目注入创新活力

本届杭州亚运会,中国桥牌队表现杰出,共斩获1金1银1铜佳绩,其中女子团体夺得冠军,混合团体获得亚军。这充分展现了我国桥牌的实力,也彰显了桥牌作为亚运会体育竞技项目的影响力。与此同时,Web3游戏Bridge Champ为传统桥牌项目带来创新模式,将有望推动桥牌运动在亚运舞台上焕发新…...

云原生微服务 第六章 Spring Cloud中使用OpenFeign

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 文章目录 系列文章目录前言1、OpenFeign的实现…...

uniapp-vue3 抖音小程序开发(上线项目开源)

最近公司临时接一个项目来接手别人的流量&#xff0c;项目比较小&#xff0c;时间比较赶。 需求&#xff1a;一个答题小程序&#xff0c;通过答题来实现性格测算和分析。 之前开发过支付宝小程序和微信小程序&#xff0c;这次是首次开发抖音小程序&#xff0c;老板要求只能下…...

基于微信小程序的个人健康数据管理平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

真香!Jenkins 主从模式解决问题So Easy~

01.Jenkins 能干什么 Jenkins 是一个开源软件项目&#xff0c;是基于 Java 开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。 中文官网&#xff1a;https://jenkins.io/zh/ 0…...

Win10系统打开组策略编辑器的两种方法

组策略编辑器是Win10电脑中很实用的工具&#xff0c;它可以帮助用户管理和设置计算机的安全性、网络连接、软件安装等各种策略。但是&#xff0c;很多新手用户不知道打开Win10电脑中组策略编辑器的方法步骤&#xff0c;下面小编给大家介绍两种简单的方法&#xff0c;帮助打开快…...

git 的行结束符

CR (Carriage Return) 表示<回车>LF (Line Feed) 表示<换行> 1. 不同系统的行结束符 系统名称行结束符意义释义git line endings选项DOS / Windows\r\nCRLF‘\r’是使光标移动到行首 ’\n’是使光标下移一行Windows-styleMacOS\rCRreturnAs-isUNIX / Linux\nLFne…...

buuctf PWN warmup_csaw_2016

下载附件&#xff0c;IDA查看 发现直接有显示flag函数 int sub_40060D() {return system("cat flag.txt"); }查看程序起始地址0x40060D ; Attributes: bp-based framesub_40060D proc near ; __unwind { push rbp mov rbp, rsp mov edi, offset comman…...

C++中的对象切割(Object slicing)问题

在C中&#xff0c;当我们把派生类对象向上强制转型为基类对象时&#xff0c;会造成对象切割&#xff08;Object slicing&#xff09;问题。  请看下面示例代码&#xff1a; #include <iostream> using namespace std;class CBase { public:virtual ~CBase() default;v…...

VxeTable 表格组件推荐

VxeTable 表格组件推荐 https://vxetable.cn 在前端开发中&#xff0c;表格组件是不可或缺的一部分&#xff0c;它们用于展示和管理数据&#xff0c;为用户提供了重要的数据交互功能。VxeTable 是一个优秀的 Vue 表格组件&#xff0c;它提供了丰富的功能和灵活的配置选项&…...

好消息:用 vue3+layui 共同铸造我们新的项目

前言&#xff1a; layui这个框架不知道多少人还在关注着&#xff0c;记得第一次接触它是在18年&#xff0c;后来随着vue&#xff0c;react的盛行&#xff0c;jquerylayui的模式受到了特别大的冲击&#xff0c;后来作者都放弃维护他的官方网站&#xff0c;转而在github/gitee上做…...

JS中 split(/s+/) 和 split(‘ ‘)的区别以及split()详细解法,字符串分割正则用法

博主: http://t.csdnimg.cn/e4gDi split用法详解: http://t.csdnimg.cn/6logr...

MySQL性能调优

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…...

如何解决openal32.dll丢失,有什么办法解决

你第一次知道openal32.dll文件是在什么情况下&#xff0c;你了解过openal32.dll文件吗&#xff1f;如果电脑中openal32.dll丢失有什么办法可以解决&#xff0c;今天就教大家如何解决openal32.dll丢失&#xff0c;都有哪些办法可以解决openal32.dll丢失。 一&#xff0e;openal3…...

Nginx 如何配置http server 、负载均衡(反向代理)

目录 1. 关于 Nginx2. 配置http server3. 配置负载均衡 本文主要介绍 Nginx中如何配置 http server&#xff0c;负载均衡(反向代理)。 1. 关于 Nginx Nginx是一个开源的、高性能的、稳定的、简单的、功能丰富的HTTP和反向代理服务器&#xff0c;也可以用作IMAP/POP3/SMTP代理…...

windows docker desktop配置加速地址

目录 为什么常见加速地址在docker desktop上配置 为什么 https://hub.docker.com 是官方的镜像仓库地址&#xff0c;但是它的服务器地址是在国外&#xff0c;有时候访问和下载的速度差强人意。不过好在&#xff0c;我们可以进行远程仓库的设置&#xff0c;将仓库镜像地址设置为…...

戏剧影视设计制作虚拟仿真培训课件提升学生的参与感

说起影视制作&#xff0c;知名的影视制片人寥寥无几&#xff0c;大多数人还在依靠摄影机拍摄实景或搭建实体场景来不断精进场景布局和导演效果&#xff0c;成本高、投入人员多且周期长&#xff0c;随着VR虚拟现实技术的不断发展&#xff0c;利用VR模拟仿真技术进行影视制作实操…...

Transformer预测 | Pytorch实现基于Transformer的锂电池寿命预测(NASA数据集)

文章目录 效果一览文章概述模型描述程序设计参考资料效果一览 文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...