前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于新手vim的使用和常用命令

关于新手vim的使用和常用命令

作者头像
程思扬
发布2022-01-11 15:17:11
5810
发布2022-01-11 15:17:11
举报
文章被收录于专栏:程思阳的专栏

在本文的开头分享一首远唯美忧伤缠绵轻抚感的美乐!🎶

vim是什么?

Vim是一个文本编辑器。Vim具有代码编译、补完以及错误跳转等编程功能,在程序员中被广泛使用。Vim的第一个版本由布莱姆·米勒在1991年发布,最初的简称是ViMitation,随着功能的不断增加,正式名称改成了ViIMproved。 Vim普遍被推崇为类 Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年 Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳 开放源代码文本编辑器大奖,又将Emacs推至二线, 总的来看, Vim和Emacs同样都是非常优秀的文本编辑器

想要了解更多的小伙伴可去百度了解更多相关内容 在上文使用Ubuntu安装Jdk中我提到了Vim 其实,我们只要记住一些常用的命令,在工作中经常使用 Vim 进行编辑,就可以了

为什么要用vim?

一个1991年正式发布,如今已经的高龄代码编辑器Vim,为什么如此受欢迎?

大家可以查看几乎排名前列的主流IDE,他们的编辑器模式排名第一的插件,都是vim。也就是说。学习了vim的操作。将来无论你用哪个ide,无论你用哪个终端,无论你用何种环境,都可以使用一套统一的编辑模式与命令操作。对程序员来说,掌握vim算是性价比最高的知识了

接下来是一段转载自知乎的一段话,觉得说的很对原文链接

狭义的vim: 指命令行文本编辑软件vim和neovim。 广义vim: 采用vim键位绑定的一切插件和配置。 可以依据对vim的态度将程序员分为以下几种 反vim或对vim无感者。觉得IDE的各类补全功能和快捷键已经非常好用,而且编程最重要的是思考的时间,不需要为了一点点编码效率的提升而去入门艰深的vim,最多在命令行快速改文件时临时使用一下。少部分极端的不相信真的有人可以通过vim提高编码速度,认为大多数vim使用者只是装逼。 广义vim支持者。认同vim的输入模式,但很少使用纯vim,在不同的ide中开启vim插件。在享受ide带来的好处的同时也能通过vim提高自己的编码效率。 vim原教旨主义者。认为纯vim或neovim才是真正的vim,信仰通过插件vim可以达到一切IDE有的功能。近乎强迫症地使用键盘。 大部分程序员属于第一种人。知乎和B站上很多直播编程的大佬也不使用vim,但能看出他们的编码速度绝对不慢。 第一种人可以向第二种转化,而且这种转化基本上是不可逆的。一旦一个人通过一段时间的训练习惯了vim的输入方式,那他几乎不可能再回到过去的输入方法。至于第三种,我曾经尝试向第三种转化,但是一次次被繁重的配置和很多图形化功能的缺失劝退了。 比如说作为一个算法研究员,你需要去vscode里改代码,去jupyter notebook里可视化输出,去overleaf写论文,去leetcode找工作刷题。你几乎不可能只用vim,因此很难成为第三种人。但如果你是一个纯粹的程序员,每天绝大多数时间都是在写代码,你必然会有很多时候觉得IDE不顺手。 而vim允许你重度自定义,把它改造成任意你需要的样子,也许就会慢慢成为第三种人了。 我们需要vim,不是因为在终端不得不用vim,而是vim更好用*

vim的使用

vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

代码语言:javascript
复制
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

代码语言:javascript
复制
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

代码语言:javascript
复制
q 退出程序
w 保存文件

按ESC键可随时退出底线命令模式。

进入vim的命令

代码语言:javascript
复制
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename….filename :打开多个文件,依次编辑

移动光标类命令

代码语言:javascript
复制
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字j至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

屏幕翻滚类命令

代码语言:javascript
复制
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令

代码语言:javascript
复制
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令

代码语言:javascript
复制
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令 :

代码语言:javascript
复制
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置

代码语言:javascript
复制
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • vim是什么?
  • 为什么要用vim?
  • vim的使用
    • 进入vim的命令
      • 移动光标类命令
        • 屏幕翻滚类命令
          • 插入文本类命令
            • 删除命令
              • 搜索及替换命令 :
                • 选项设置
                相关产品与服务
                云直播
                云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档