【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 有一个超级大招 那就是宏录制。今天不想写了,有空在写吧,哈哈哈哈哈。

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

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

相关文章

35.树与二叉树练习(1)(王道第5章综合练习)

【所用的树&#xff0c;队列&#xff0c;栈的基本操作详见上一节代码】 试题1&#xff08;王道5.3.3节第3题&#xff09;&#xff1a; 编写后序遍历二叉树的非递归算法。 参考&#xff1a;34.二叉链树的C语言实现_北京地铁1号线的博客-CSDN博客https://blog.csdn.net/qq_547…

使用asp.net core web api创建web后台,并连接和使用Sql Server数据库

前言&#xff1a;因为要写一个安卓端app&#xff0c;实现从服务器中获取电影数据&#xff0c;所以需要搭建服务端代码&#xff0c;之前学过C#&#xff0c;所以想用C#实现服务器段代码用于测试&#xff0c;本文使用C#语言&#xff0c;使用asp.net core web api组件搭建服务器端&…

前端uniapp如何修改下拉框uni-data-select下面的uni-icons插件自带的图片【修改uniapp自带源码图片/图标】

目录 未改前图片未改前源码未改前通过top和bottom 和修改后图片转在线base64大功告成最后 未改前图片 未改前源码 然后注释掉插件带的代码&#xff0c;下面要的 未改前通过top和bottom 和修改后 找到uni-icons源码插件里面样式 图片转在线base64 地址 https://the-x.cn/b…

图像上传功能实现

一、后端 文件存放在images.path路径下 package com.like.common;import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annot…

大数据编程实验3 熟悉常用的HBase操作前期准备

一、实验目的 &#xff08;1&#xff09;理解HDFS在Hadoop体系结构中的角色&#xff1b; &#xff08;2&#xff09;熟练使用HDFS操作常用的Shell命令&#xff1b; &#xff08;3&#xff09;熟悉HDFS操作常用的Java API。 二、实验平台 1. 操作系统&#xff1a;Linux&#x…

【JavaEE】多线程进阶(一)饿汉模式和懒汉模式

多线程进阶&#xff08;一&#xff09; 文章目录 多线程进阶&#xff08;一&#xff09;单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式&#xff0c;为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…

springboot项目中后台文件上传处理

参考地址:http://www.gxcode.top/code 文件上次核心处理代码: @Autowired private FileUpload fileUpload; //获取资源对象:file-upload-prod.properties@ApiOperation(value = "用户头像修改", notes = "用户头像修改", httpMethod =

Mall脚手架总结(三) —— MongoDB存储浏览数据

前言 通过Elasticsearch整合章节的学习&#xff0c;我们了解SpringData框架以及相应的衍生查询的方式操作数据读写的语法。MongoDB的相关操作也同样是借助Spring Data框架&#xff0c;因此这篇文章的内容比较简单&#xff0c;重点还是弄清楚MongoDB的使用场景以及如何通过Sprin…

相机坐标系之间的转换

一、坐标系之间的转换 一个有4个坐标系&#xff1a;图像坐标系、像素坐标系、相机坐标系、世界坐标系。 1.图像坐标系和像素坐标系之间的转换 图像坐标系和像素坐标系在同一个平面&#xff0c;利用平面坐标系之间的转换关系可以之知道两个坐标系变换的公式&#xff0c;并且该…

JRebel在IDEA中实现热部署 (JRebel实用版)

JRebel简介&#xff1a; JRebel是与应用程序服务器集成的JVM Java代理&#xff0c;可使用现有的类加载器重新加载类。只有更改的类会重新编译并立即重新加载到正在运行的应用程序中&#xff0c;JRebel特别不依赖任何IDE或开发工具&#xff08;除编译器外&#xff09;。但是&…

PlantUML 绘图

官网 https://plantuml.com/zh/ 示例 绘制时序图 USB 枚举过程 PlantUML 源码 startuml host <-- device : device insert host note right : step 1 host -> device : get speed, reset, speed check note right : step 2 host -> device …

数据结构 | (二) List

什么是 List 在集合框架中&#xff0c; List 是一个接口&#xff0c;继承自 Collection 。 Collection 也是一个接口 &#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下所示&#xff1a; Iterable 也是一个接口&#xff0c;表示实现该接口的类是可以逐个…

博弈论——动态博弈

动态博弈 0 引言 前面一篇文章介绍了博弈过程中的三个分类&#xff1a;静态博弈、动态博弈、重复博弈。今天具体讲讲动态博弈的处理方法。 博弈论——博弈过程 1 概念 首先还是介绍一下动态博弈的概念&#xff0c;即博弈中各博弈方的选择和行动不仅有先后次序&#xff0c;而…

Cesium热力图

二、代码 <!doctype html> <html><head><meta charset"utf-8"><link rel"stylesheet" href"./css/common.css"><title>热力图</title><script src"./js/config.js"></script>…

使用python查找指定文件夹下所有xml文件中带有指定字符的xml文件

文件夹目录如下&#xff08;需要递归删除文件夹下的.DS_Store文件&#xff09;&#xff1a; labels文件夹下面是xml文件&#xff1a; import os import os.pathpath "name/labels" files os.listdir(path) # 得到文件夹下所有文件名称 s []for xmlFile in files:…

k8spod就绪检查失败

pod 一直未就绪 kube-system metrics-server-7764f6c67c-2kts9 0/1 Running 0 10m kubect describe 查看 就绪探针未通过 Normal Started 3m19s kubelet Started container metrics-server Warning Unhealthy 5s (x20 over 2m55s) kubelet Readiness probe failed: HTTP probe…

【MySQL】表的基础增删改查

前面我们已经知道怎么来创建表了&#xff0c;接下来就来对创建的表进行一些基本操作。 这里先将上次创建的表删除掉&#xff1a; mysql> use test; Database changedmysql> show tables; ---------------- | Tables_in_test | ---------------- | student | -----…

数据库sql查询成绩第二高

select * from propro; #查询成绩第二高 select max(id) from propro where id <(select max(id) from propro); #查询成绩第二高的第二种方式 select * from (select * from propro order by id desc limit 2) as b order by id asc limit 1;

postgresql中的近一周,近一月,近三月,近一年日期段拆分

统计中经常会遇到,近一周,近一月,近三月,近一年数据统计,下面提供了postgresql拆分日期段的sql -- 近一周,每一天起止时间 select generate_series startDate,generate_series interval 1 day endDate from generate_series( NOW()::date interval -6 day, now()::timest…

【开源电商网站】(2),使用docker-compose和dockerfile进行配置,设置自定义的镜像,安装插件,增加汉化包,支持中文界面汉化。

项目相关代代码地址 相关内容&#xff1a; https://blog.csdn.net/freewebsys/category_12461196.html 原文地址&#xff1a; https://blog.csdn.net/freewebsys/article/details/133666433 包括以下运行的详细代码&#xff1a; https://gitee.com/study-demo-all/oscommerc…