vim编辑器

1.vi编辑器介绍

vim是全屏幕纯屏幕纯文本编辑器, 是vi编辑器的增强版. 可以利用别名让输入vi命令时, 实际上执行vim编辑器, 例如:

alias vi = "vim"   

#定义别名

这样定义的别名是临时生效, 如果需要永久生效, 请放入环境变量配置文件(~/.bashrc)

2.vim基本的使用

2.1vim的工作模式

vim工作在三种模式之下:

命令模式: 主要使用快捷键的模式, 是学习的重点, 命令模式想要进入输入模式, 可以使用以下方法:

命令作用
a在光标所在字符后插入, 可以理解为追加
A在光标所在行尾插入
i在光标所在字符前插入
I在光标所在行行首插入
o在光标下插入新行
O在光标上插入新行

输入模式: 主要用于文本编辑, 和记事本类似, 输入数据就好

末行模式(编辑模式):

:w    保存不退出

        :w 新文件名  把文件另存为新文件

:q     不保存退出

:wq  保存退出

:!      强制

        :q!      强制不保存退出, 用于修改文件后, 不保存数据退出

        :wq!   强制保存退出, 当文件的所有者或者root用户, 对文件没有写权限的时候, 强制写入数据使用

2.2命令模式操作

2.2.1移动光标

1)上下左右移动光标

方法一: 上下左右方向键

方法二: h, j, k, l(左, 下, 上, 右)

2)把光标移动到文件头或尾

gg: 移动到文件头

G: 移动到文件尾

3)移动到行首或行尾

^: 移动到行首

$: 移动到行尾

4)移动到指定行

:n 数字: 移动到第几行

2.2.2删除或剪切

1)删除字母

x: 删除单个字母

nx: 删除那个字母

n是数字, 如果打算从光标位置删除连续的10个字母, 可以使用"10x", 删除字母并不符合使用的习惯, 更多的是在编辑模式下, 使用Backspace删除字母

2)删除整行或剪切

dd: 删除单行

ndd: 删除多行

:n1, n2d      删除指定范围的行

删除整行或者多行, 这是我们常见的删除方式, 这里的dd快捷键既是删除, 也是剪切. 删除内容放入剪切板, 如果不粘贴就是删除, 如果是粘贴就是剪切. 粘贴的方法如下:

p(小写): 粘贴到光标后

P(大写): 粘贴到光标前

3)从光标所在行删除到文件尾

dG: 从光标所在行删除到文件尾

"d"是删除行, "G"是文件尾, 连起来就是从光标所在行删除到文件尾. 

2.2.3复制

yy: 复制单行

nyy: 复制多行

复制之后的粘贴, 依然可以使用p(小写)键或P(大写)键

2.2.4撤销

u: 撤销

ctrl + r: 反撤销

2.2.5替换

r: 替换光标所在处的字符

R: 从贯标所在处开始替换字符, 按ESC结束

r键替换单一字符, 不用进入输入模式, 实际使用时, 比进入输入模式删除后在修改, 要方便

2.2.6vim配置文件

这次末行模式参数设置, 多数需要在vim中才能生效

设置参数含义

:set nu

:set nonu

显示与取消行号

:syntax on

:syntax off

是否依照语法显示相关的颜色帮助. 在Vim中修改相关的配置文件或Shell脚本文件时, 默认会显示相应的颜色, 用来帮助排错. 如果觉得颜色产生了干扰, 可以取消此设置

:set hlsearch

:set nohlsearch

设置是否将查找的字符高亮显示. 默认时set hlsearch高亮显示

:set ruler

:set noruler

设置是否显示右下角的状态栏. 默认是set ruler显示

:set showmode

:set noshowmode

设置是否在左下角小时如"-INSERT-"之类的状态栏. 默认是set showmode

:set list

:set nolist

设置是否显示隐藏字符(Tab键使用"^I"表示, 回车符使用"$"表示). 默认是nolist显示. 如果要使用set list显示隐藏字符, 类似"cat -A 文件名"

vim支持更多的设置参数, 可以通过":set all"进行查看

大家会发现, 这些设置参数都只是临时生效, 一点关闭文件再打开, 又需要重新输入. 如果想要永久生效, 需要手工建立vim的配置文件"~/.vimrc", 把你需要的参数写入配置文件中就可以永久生效了

补充: Windows下回车符在Linux中是用"^M$"符号显示, 而不是"$"符. 这回导致Windows下编辑的程序脚本, 无法在Linux中执行. 这时可以通过命令"dos2unix", 把Windows格式转化尾Linux格式, 当然反过来"unix2dos"命令就是把Linux格式转化为Windows格式. 这两个命令都需要手工安装

2.2.7查找

/查找内容: 从光标所在行向下查找

?查找内容: 从光标所在行向上搜索

n: 下一个

N: 上一个

2.2.8替换

:1, 10s/old/new/g          替换1到10行所有old为new

:%s/old/new/g               替换整个文件的old为new

3.vim使用技巧

3.1在vim中导入其他文件内容或命令

3.1.1导入其他文件内容

:r 文件名          把文件内容导入光标位置

可以把其他文件的内容导入光标所在位置

3.1.2在vim中执行系统命令

:!命令            在vim中执行系统命令

这里只是在vim中执行系统命令, 但并不把系统命令的结果写入文件中. 主要用于文件编辑中, 查看系统信息

3.1.3导入命令结果

:r !命令        在vim中执行系统命令, 并把命令结果导入光标所在行

在vim中执行系统命令, 并把命令结果导入光标所在行

3.2设定快捷键

:map 快捷键 快捷键执行的命令                   自定义快捷键

vim允许自定义快捷键, 常用的自定义快捷键如下: 

:map ^P I#<ESC>        按"ctrl+p"时, 在行首加入注释

:map ^B ^x                   按住"ctrl+b", 删除行首第一个字母(删除注释)

注意: ^P快捷键不能手动输入, 需要执行ctrl + V + P来定义, 或者ctrl + V, 然后ctrl + P, ^B快捷键同理

3.3字符替换

:ab 源字符 替换为字符                      字符替换

在vim编辑器中, 有时候需要频繁输入某一个长字符串(比如邮箱), 这时使用字符替换, 能增加输入效率, 例如:

:ab mymail songzhenxing@582.com

当需要输入邮箱时, 我们输入mymail + 空格, 就可以替换成邮箱

注意: "源自符"不应设置的太短, 这样可能影响正常使用

3.4多文件打开

在vim中可以同时打开两个文件, 只要执行如下命令:

vim -o 文件名1 文件名2

vim -O 文件名1 文件名2

# -o(小写): 上下分屏打开两个文件

# -O(大写): 会左右分屏打开两个文件

ctrl+w, 然后上下箭头, 或者左右箭头进行不同文件的切换

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

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

相关文章

如何压缩照片?分享4种全面的方法!

随着智能手机的普及&#xff0c;我们每个人都成为了摄影爱好者。然而&#xff0c;随着拍摄的照片越来越多&#xff0c;手机内存也逐渐变得捉襟见肘。那么&#xff0c;如何有效地压缩照片&#xff0c;释放手机内存呢&#xff1f;今天&#xff0c;我们就来为你揭秘那些可以轻松压…

Innovus——将get的结果按行打印

之前用的是foreach遍历结果&#xff0c;一个一个打印的方法&#xff0c;后来发现使用join ** \n更方便。 foreach name [get_object_name [get_nets -of_objects [get_pins *HCTS*/I]]] {puts $name}join [get_object_name [get_nets -of_objects [get_pins *HCTS*/I]]] \n

【angular教程240110】07 Angular中的生命周期函数--动态挂载销毁组件

【angular教程240110】07 Angular中的生命周期函数–动态挂载销毁组件 目录 组件的生命周期1 前提条件2 生命周期的顺序3 Angular组件的生命周期函数&#xff1a;ngOnChanges()用途 ngOnInit()用途 ngDoCheck()用途 ngAfterContentInit()用途 ngAfterContentChecked()用途 ngA…

前端浏览器滚动条炫酷美化

一、文章引导 #mermaid-svg-2qRndEP8CFzlUhap {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2qRndEP8CFzlUhap .error-icon{fill:#552222;}#mermaid-svg-2qRndEP8CFzlUhap .error-text{fill:#552222;stroke:#55222…

华为OD机试真题-最长的指定瑕疵度的元音子串-2023年OD统一考试(C卷)

题目描述: 开头和结尾都是元音字母(aeiouAEIOU)的字符串为 元音字符串 ,其中混杂的非元音字母数量为其 瑕疵度 。比如: “a” 、 “aa”是元音字符串,其瑕疵度都为0 “aiur”不是元音字符串(结尾不是元音字符) “abira”是元音字符串,其瑕疵…

多模态+SNN个人学习历程和心得

祖传开头 这次想写一个一直深藏心中的研究方向&#xff0c;那就是多模态方向。其实当初在实验室那会儿&#xff0c;最先接触的就是多模态的工作&#xff0c;因此这是我科研之路的起点。只不过&#xff0c;后来经历了一些波折&#xff0c;导致个人没有往这个方向深挖&#xff0…

PayPal账号被关联!跨境卖家如何自救?关于PayPal防关联你不得不知道的事!

很多跨境卖家的支付平台都会选择 PayPal&#xff0c;但是 PayPal 账号在使用过程中也经常会遇见关联&#xff0c;风控等问题&#xff0c;这时候为了保护我们的 PayPal 账号安全&#xff0c;防关联就很重要。今天龙哥就分享一些关于 PayPal 防关联的内容&#xff0c;希望能够帮助…

重新认识canvas,掌握必要的联结密码

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

C++ continue语句

作用&#xff1a;在循环语句中&#xff0c;跳过本次循环中余下尚未执行的语句&#xff0c;继续执行下一次循环 与break的区别在于&#xff0c;如果把上述continue换位break&#xff0c;则该程序执行到break则会直接退出for循环&#xff0c;不再执行后面的代码和以后的循环。 实…

加载和保存模型参数

前言 深度学习框架提供了内置函数来保存和加载整个网络。需要注意的是&#xff0c;这将保存模型的参数而不是整个模型。 加载和保存 class MLP(nn.Module):def __init__(self):super().__init__()self.hiddennn.Linear(20,256)self.outputnn.Linear(256,10)def forward(self…

Web实战丨基于django+html+css+js的电子商务网站

文章目录 写在前面实验目标需求分析实验内容安装依赖库1.登陆界面2.注册界面3.电子商城界面4.其他界面 运行结果写在后面 写在前面 本期内容&#xff1a;基于DjangoHTMLCSSJS的电子商务网站 实验环境&#xff1a; vscode或pycharmpython(3.11.4)django 代码下载地址&#x…

【Kafka-3.x-教程】-【七】Kafka 生产调优、Kafka 压力测试

【Kafka-3.x-教程】专栏&#xff1a; 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

Android - 串口通讯(SerialPort)

最早的博客Android 模拟串口通信过程_launch virtual serial port driver pro-CSDN博客里就是用过 Google 提供的 demo&#xff0c;最近想再写个其他的demo发现用起来有点麻烦&#xff0c;还需要导入其他 module&#xff0c;因此在网上找到了Android-SerialPort-API: https://g…

数据分析---SQL(1)

目录 什么是数据倾斜问题SQL如何解决数据倾斜问题having和where的区别在union和join的区别举例说明使用union使用joincount(*)、count(字段)和count(distinct字段)的区别什么是数据倾斜问题 数据倾斜问题是指在数据分布不均匀的情况下,某些特定的数据分区或键值会出现过…

SpringBoot整合FreeMarker模板引擎

中文官方参考手册 http://freemarker.foofun.cn/ 1.先加入FreeMarker依赖 <dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version> </dependency>2.新建一个FreeMark…

8 滑动窗口-无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为无…

观成科技-加密C2框架EvilOSX流量分析

工具简介 EvilOSX是一款开源的&#xff0c;由python编写专门为macOS系统设计的C2工具&#xff0c;该工具可以利用自身释放的木马来实现一系列集成功能&#xff0c;如键盘记录、文件捕获、浏览器历史记录爬取、截屏等。EvilOSX主要使用HTTP协议进行通信&#xff0c;通信内容为特…

Python 常用模块pickle

Python 常用模块pickle pickle序列化模块 【一】定义 序列化&#xff1a;将数据结构或对象转换为可存储或传输的格式反序列化&#xff1a;将序列化后的数据恢复为开始的数据结构或者对象 【二】目的 数据持久化存储远程通信缓存进程间通信 【三】序列化 将对象转换为字节…

蓝凌EIS pdf.aspx 任意文件读取漏洞

漏洞描述&#xff1a; 蓝凌EIS智慧协同平台是一个简单、高效的工作方式专为成长型企业打造的沟通、协同、社交的移动办公平台&#xff0c;覆盖OA、沟通、客户、人事、知识等管理需求&#xff0c;集合了非常丰富的模块&#xff0c;满足组织企业在知识、项目管理系统建设等需求的…

jmeter循环控制器

1.循环控制器 简单粗暴 写几次 循环几次 经常结合自定义变量使用 2.foreach控制器 搭配 变量一起使用的循环 一般变量的值是一个集合或者 是2个及2个以上的内容