vim编辑器常用命令介绍

article/2025/6/17 9:50:57

本文是对vim各种命令的使用介绍,旨在让大家快速学习掌握

 

 

什么是vim

vim是Linux环境下一款功能强大、高度可定制的文本编辑工具

vim的工作模式

一般分为6种

  • 普通模式用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作。
  • 插入模式:也可以叫做编辑模式,在普通模式下敲击 i 、a 或 o 就进入插入模式,允许用户通过键盘输入、编辑。
  • 命令行模式:在普通模式下,先输入冒号:,接着输入命令,就可以通过配置命令对vim进行配置了,如改变颜色主题、显示行号等,这些配置命令也可以保存到/etc/vim/vimrc配置文件中,每次打开默认配置执行。
  • 可视化模式:在普通模式下敲击前盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。
  • 替换模式:如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击R键就可以直接替换。
  • EX模式:类似于命令行模式,可以一次运行多个命令

vim的各种工作模式可以通过不同的键进行切换,用户统一使用ESC键返回到普通模式

命令的介绍使用

  光标移动命令

单个字符移动:
h:  向左移动
l:  向右移动
j:  向下移动
k:  向上移动
xh:  向左移动x个字符距离
单词移动:
w:  将光标移动到下一个单词的开头
b:  将光标移动到前一个单词的开头
e:  将光标移动到下一个单词的词末
E:  移动到单词的结尾(忽略标点符号)
ge:  将光标移动到上一个单词的词末
2w:  指定移动的次数
行移动:
$:  将光标移动到当前行的行尾
0:  将光标移动到当前行的行首
^:  将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置)
2|:  移到当前行的第2列
fx:  将光标移动到当前行的第一个字符x上
3fx: 将光标移动到航前行的第3个字符x上
tx:   将光标移动到目标字符x的前一个字符上
fx和tx可以通过;和,进行重复移动,一个是正向重复,一个是反向重复
%:  用于符号间的移动,它会在一对()、[]、{}之间跳跃
文本块移动:
(:  移到当前句子的开头
):  移到下一个句子的开头
{:  移到当前一段的开头
}:  移到下一段的开头
[[:  移到当前这一节的开头
]]:  移到下一节的开头
在屏幕中移动
xG:  跳转到指定的第x行,G移动到文件按末尾,``(2次单引号)返回到跳转前的位置
gg:  移动到文件开头
x%:  移动到文件中间,就使用50%
H:  移动到home
M:  移动到屏幕中间
L:  移动到一屏末尾
ctrl+G:  查看当前的位置状态

         

  滚屏与跳转

半屏滚动:  ctrl+u/ctrl+d
全屏滚动:  ctrl+f/ctrl+b
定位光标的位置
zz:  将光标置于屏幕的中间
zt:  将光标移动到屏幕的顶部
zb:  将光标移动到屏幕的底部
设置跳转标记
mx,my,mz设置三个位置
`x,`y,`z跳转到设置

 

  文本插入操作

i:  在当前光标的前面插入字符
a:  在当前光标的后面追加字符
o:  在当前光标的下一行行首插入字符
I:  在一行的开头添加文本
A:  在一行的结尾处添加文本
O:  在光标当前行的上一行插入文本
s:  删除当前光标处的字符并进入到插入模式
S:  删除光标所在处的行,并进入到插入模式
u:  撤销修改

 

  文本删除操作

字符删除
x:  删除当前光标所在处的字符
X:  删除当前光标左边的字符
单词删除
dw:  删除一个单词(从光标处到空格)
daw:  无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
diw:  删除整个单词文本,但是保留空格字符不删除
d2w:  删除从当前光标开始处的2个单词
d$:  删除从光标到一行末尾的整个文本
d0:  删除从光标到一行开头的所有单词
dl:  删除当前光标处的字符=x
dh:  删除当前光标左边的字符=X
行删除
dd:  删除当前光标处的一整行=D
5dd:  删除从光标开始处的5行代码
dgg:  删除从光标到文本开头
dG:  删除从光标到文本结尾
行合并
J:  删除一个分行符,将当前行与下一行合并

 

   文本复制、剪切与粘贴

y:  复制,p:粘贴
yw:  复制一个单词
y2w:  复制2个单词
y$:  复制从当前光标到行结尾的所有单词
y0:  复制从当前光标到行首的所有单词
yy:  复制一整行
2yy:  复制从当前光标所在行开始的2行
复制文本块1.首先进入visual模式:v2.移动光标选择文本3.复制与粘贴的操作

 

 文本的修改与替换

cw:  删除从光标处到单词结尾的文本并进入到插入模式
cb:  删除从光标处到单词开头的文本并进入到插入模式
cc:  删除一整行并进入到插入模式
~: 修改光标下字符的大小写
r:  替换当前光标下的字符
R:  进入到替换模式
xp:  交换光标和下一个字符

  文本的查找与替换

/string   正向查找
?string   反向查找
设置高亮显示:set hls*按键将当前光标处的单词高亮显示,使用n浏览下一个查找高亮的结果
:s/old/new   将当前行的第一个字符串old替换为new
:s/old/new/g   将当前行的所有字符串old替换为new
:90s/old/new/g  将指定行的所有字符串old替换为new
:90,93s/old/new/g  将指定范围的行的所有字符串old替换为new
:%s/old/new/g   将文本中所有的字符串old替换为new
:%s/old/new/gc  依次替换每个字符串关键字
:%s/^struct/int/g   将所有以struct开头的字符串替换为int

撤销修改、重做与保存

u:  撤销上一步的操作。
Ctrl+r:  将原来的插销重做一遍
:U  恢复一整行原来的面貌(文件打开时的文本状态)
:q  若文件没有修改,直接退出
:q!  文件已经被修改,放弃修改退出
:wq  文件已经被修改,保存修改并退出
:e!  放弃修改,重新回到文件打开时的状态

 编辑多个文件

文件和缓冲区的区别
文件是保存在磁盘上的,而打开的文件的文件是在内存中,
在内存中有一个缓冲区,用来存放打开的文件。
vim每次打开文件时都会创建一个缓冲区,vim支持打开多个文件
:buffers   查看缓冲区列表==ls
:buffer N  根据缓冲区列表的编号跳转到指定缓冲区
:bnext/bprev  遍历缓冲区列表
:bfirst/blast  分别调到缓冲区列表的开头和结尾
:write   将缓冲区的修改保存到磁盘上
:edit! e!  放弃缓冲区的修改,恢复到文件打开时的状态
:edit file  编辑另一个文件
:wnext   保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件
:set autowrite

标签页与折叠栏 

标签页的新建:tabedit file/tab split
标签页的切换: tabn/tabp
按键:gt/gT
标签页的关闭tabclose 
关闭当前的标签页: tabonly
创建一个折叠zf200G:将光标和200行之间的代码折叠起来
折叠的打开与关闭za:  打开和关闭折叠zr/zm: 一层一层地打开和关闭折叠zR/zM: 分别打开和关闭所有的折叠
折叠键的光标移动zj: 跳转到下一个折叠处zk: 跳转到上一个折叠处
删除折叠zd: 删除光标下的折叠zD: 删除光标下的折叠以及嵌套的折叠zE: 删除所有的折叠标签创建的折叠当退出vim之后就失效了。

 多窗口操作

分割窗口split/vsplit filename
窗口间跳转ctrl+w hjklctrl+w w
移动窗口ctrl+w HJKL
调整窗口尺寸ctrl+w +/-  调整窗口的高度ctrl+w </>  调整窗口的宽度ctrl+w = 所有的窗口设置相同的尺寸:resize n将当前窗口尺寸调整为N行
关闭窗口close: 关闭一个窗口qall: 退出所有窗口qall!: 放弃修改,退出所有窗口wqall: 保存并退出所有窗口wall: 保存所有窗口

 

 

vim的命令就介绍这些,多多支持


http://chatgpt.dhexx.cn/article/BZeebxun.shtml

相关文章

正态总体均值假设检验

单个正态总体均值的检验 (1)sigma已知的u检验&#xff08;Z检验&#xff09; #######Z检验 Z检验条件 1.样本量大于30 2.数据之间彼此独立 3.数据正常分布 4.样本量应该相等#单正态总体&#xff0c;方差已知 from scipy import stats from statsmodels.stats import weights…

数学建模之正态分布均值的假设检验

正态分布均值的假设检验 一&#xff0c;假设检验步骤 步骤一&#xff1a;写出原假设和备择假设 步骤二&#xff1a;在原假设成立的条件下&#xff0c;构造一个统计量&#xff0c;该统计量服从某一分布 步骤三&#xff1a;用已知的样本数据带入统计量的公式&#xff0c;得到…

数理统计-假设检验

假设检验 假设检验:根据样本的信息来判断总体是否具有指定的特征。 假设检验可以分为:参数假设检验和非参数假设检验。 1)参数假设检验问题,对总体X的分布函数中的未知参数a,设a的真值为a0,如何通过样本信息检验这个假设? 参数假设检验一般有:单个正太总体参数的假设…

线性回归中的假设检验

线性回归中的假设检验及Python编程 0 引言1 一元线性回归模型2 对于回归方程的检验F检验T检验 一元线性回归的Python编程实现与 statsmodels 包的对比关于多元线性回归 0 引言 本文介绍一元线性回归的基本假设&#xff0c;推导方法和统计检验&#xff0c;然后介绍Python编程实…

概率论:假设检验

http://blog.csdn.net/pipisorry/article/details/51182843 假设检验 假设检验问题分为两类,一类是参数的假设检验,一类是分布的假设检验! 设总体X的分布未知,或 X的某个分布参数 theta未知,对总体分布或分布参数 theta 提出一个假设 "H0" ,然后根据样本所提供的信息…

假设检验之几种检验方法的比较

之前学习概率论与数理统计的时候就不扎实&#xff0c;导致后来面试官在问我什么时候该用什么检验的时候稀里糊涂&#xff0c;最近工作中又遇到了假设检验的问题&#xff0c;所以就想把假设检验这块好好总结一下。 一.什么是假设检验&#xff1f; 假设检验是用来判断样本与样本…

相关系数及假设检验

一.假设检验 1.假设检验步骤 &#xff08;1&#xff09;提出假设&#xff1a;原假设和备择假设 &#xff08;2&#xff09;在原假设成立的条件下&#xff0c;构造一个检验统计量&#xff0c;该统计量有一个分布 &#xff08;3&#xff09;在给定置信水平下&#xff0c;求出…

假设检验流程

假设检验相关知识 原假设 原假也称为零假设&#xff0c;一般用H0表示。原假设一般是统计者想要拒绝的假设。 备选假设 备选假设用H1表示。备则假设是统计者想要接受的假设&#xff0c;而且备选假设和原假设一般为互斥假设。 例子&#xff1a;H0&#xff1a; H1&#xff1a; 显著…

概论_第8章_假设检验的基本步骤__假设检验的类型

一. 假设检验的基本步骤 如下&#xff1a; 第1步 根据实际问题提出原假设 及备择假设 , 要求 与 有且仅有一个为真&#xff1b; 第2步 选取适当的检验统计量&#xff0c; 并在原假设 成立的条件下确定该检验统计量的分布&#xff1b; 第3步 按问题的具体要求&#xff0c; 选取…

统计学知识梳理(三)假设检验

1、假设检验的步骤&#xff1a; 第1步&#xff1a;确定零假设和备选假设 零假设( H 0 H_{0} H0​)&#xff1a; 备选假设&#xff08; H 1 H_{1} H1​&#xff09;&#xff1a; 第2步&#xff1a;证据是什么&#xff1f;&#xff08;计算p值&#xff09; 在零假设成立的前提下&…

re2-2020-11-01(Google regrex)库编译

google的正规表达式库&#xff0c;也应该是非常好用的。 PCRE尽量用静态库的。 看一下测试例子&#xff1a; 。。。 通过。 多谢&#xff0c;亲爱的美美。

Windows 下正则表达式库 re2 在 C++ 和 Python 中的编译和使用

相信平时在工作或学习中需要处理大量正则表达式的同志们对 google 大名鼎鼎的 re2 模块一定不陌生,但之前在网上进行搜索时,很多人说无法在 windows 系统使用该模块。本文简述了 windows 系统下 re2 模块在 C++ 和 Python 中的使用。现以 64bit 为例,将其编译过程介绍如下,…

[SWPUCTF 2021 新生赛]re2

题目链接&#xff1a;下载链接 查壳后发现无壳&#xff0c;用IDA打开&#xff0c;按f5看伪代码。 首先给了str2字符串数组&#xff0c;然后‘printf(&Format)‘&#xff0c;点击Format可以知道是让你输入flag,所以str即flag。v7为str长度&#xff0c;for循环对str进行遍历…

攻防世界逆向高手题之re2-cpp-is-awesome

攻防世界逆向高手题之re2-cpp-is-awesome 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的re2-cpp-is-awesome 下载附件&#xff0c;照例扔入exeinfope中查看信息&#xff1a; 64位ELF文件&#xff0c;无壳&#xff0c;运行一下查看主要显示字符串&#xff1a; …

ISCC之Re2

硬核rust逆向 首先去学了一天rust。。。我TMD IDA打开&#xff0c;跟踪主函数 看一下伪代码&#xff0c;发现有一串密文 跟进去发现一串数据&#xff0c;猜测有可能是flag的加密数据&#xff0c;于是回头去分析算法 发现一个关键点 if ( v16 v24 ) break; v2 ((*(_DWORD *)(v…

xctf攻防世界 REVERSE 高手进阶区 re2-cpp-is-awesome

0x01. 进入环境&#xff0c;下载附件 题目给出的是一个无后缀文件&#xff0c;我们将其下载。先看看是否有套壳&#xff0c;发现没有套壳。那么接下来就老套路了 0x02. 问题分析 我们使用IDA Pro打开文件&#xff0c;找到main函数&#xff0c;反编译文件&#xff0c;得到代码…

【比赛writeup】2023省赛-Reverse-Re2

2023省赛-Reverse-Re2 一、概要 1、标题&#xff1a;Re2 2、关键字&#xff1a;换表BASE64 3、比赛&#xff1a;2023省赛 4、工具&#xff1a;IDAx64、python 二、开始 1、题目分析 逆向的题目&#xff0c;找到关键字符串&#xff0c;找到关键函数&#xff0c;分析函数逻辑…

RE2:Simple and Effective Text Matching with Richer Alignment Features

原文链接&#xff1a;https://aclanthology.org/P19-1465.pdf 2019 ACL 介绍 问题 作者认为之前文本匹配模型中序列对齐部分&#xff0c;过于复杂。只有单个inter-sequence alignment层的模型&#xff0c;常会引入外部信息&#xff08;例如语法特征&#xff09;作为额外输入&am…

【NLP】文本匹配——Simple and Effective Text Matching with Richer Alignment Features阅读与总结(RE2)

背景 前文已经介绍了【NLP】文本匹配——Enhanced LSTM for Natural Language Inference&#xff0c;其实2017年发表的&#xff0c;文中使用了两个LSTM进行特征提取&#xff0c;总的来说参数多&#xff0c;速度慢&#xff0c;还不能并行处理。今天我们再来看看阿里巴巴和南京大…

Re2:读论文 CS-GNN Measuring and Improving the Use of Graph Information in Graph Neural Networks

诸神缄默不语-个人CSDN博文目录 论文下载地址&#xff1a;https://openreview.net/attachment?idrkeIIkHKvS&nameoriginal_pdf 代码&#xff1a;yifan-h/CS-GNN: Measuring and Improving the Use of Graph Information in Graph Neural Networks 论文引用方式&#xf…