关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

Vim编辑器

guanshanw 2023-08-22 03:10 27 浏览 0 评论

Vim 是从 vi 发展出来的一个文本编辑器。它类似于vi但又存在区别,因为它功能强大且高度可配置,在vi的基础上进行了很多的改进。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,还可以创建和更改任何类型的文本,效率非常高。

而从 vi 发展出来的 Vim 具有很多模式,这种独特的设计容易使初学者产生混淆。

Vim 具有6中基本模式和5中派生模式

?

普通模式

在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim 启动后的默认模式。Vim 强大的编辑能力来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令”dd”删除当前行,但是第一个”d”的后面可以跟另外的移动命令来代替第二个”d”,比如用移动到下一行的”j”键就可以删除当前行和下一行。另外还可以指定命令重复次数,”2dd”(重复”dd”两次),和”dj”的效果是一样的。在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按”a”(append/追加)键或者”i”(insert/插入)键。

插入模式

在这个模式中,大多数按键都会向文本缓冲区中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。在插入模式中,可以按ESC 键回到普通模式。

可视模式

这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim 的”文本对象”也能和移动命令一样用在这个模式中。

选择模式

这个模式和无模式编辑器的行为比较相似。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim 会用这个字符替换选择的高亮文本块,并且自动进入插入模式。

命令行模式

在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(”:”键),搜索(”/”和”?”键)或者过滤命令(”!”键)。在命令执行之后,Vim 返回到命令行模式之前的模式,通常是普通模式。

Ex模式

这和命令行模式比较相似,在使用”:visual”命令离开 Ex 模式前,可以一次执行多条命令。

派生模式

操作符等待模式/strong>

这个派生模式指普通模式中,执行一个操作命令后 Vim 等待一个”动作”来完成这个命令。Vim 也支持在操作符等待模式中使用”文本对象”作为动作,包括”aw”一个单词(a word)、”as”一个句子(a sentence)、”ap”一个段落(a paragraph)等等。比如,在普通模式下”d2as”删除当前和下一个句子。在可视模式下”apU”把当前段落所有字母大写。

插入普通模式

这个模式是在插入模式下按下 ctrl+o 键的时候进入。这个时候暂时进入普通模式,执行完一个命令之后,Vim 返回插入模式

插入可视模式

这个模式是在插入模式下按下 ctrl+o 键并且开始一个可视选择的时候开始。在可视区域选择取消的时候,Vim 返回插入模式。

插入选择模式

通常这个模式由插入模式下鼠标拖拽或者 shift 方向键来进入。当选择区域取消的时候,Vim返回插入模式。

替换模式

这是一个特殊的插入模式,在这个模式中可以做和插入模式一样的操作,但是每个输入的字符都会覆盖文本缓冲中已经存在的字符。在普通模式下按”R”键进入。

其他

Evim

Evim(Easy Vim)是一个特殊的GUI模式用来尽量的表现的和”无模式”编辑器一样。编辑器自动进入并且停留在插入模式,用户只能通过菜单、鼠标和键盘控制键来对文本进行操作。可以在命令行下输入”evim”或者”vim -y”进入。在 Windows 下,通常也可以点击桌面上 Evim(Easy Vim)的图标。

Vim 的正确学习方式

在正式接触到 Vim 之前,你一定从别人那里听说过 Vim 是多么多么的强无敌,虽然它的命令的确非常方便,但是要正确的入门却不是一件容易的事。一不小心就会弄成《Vim——从入门到放弃》。

要学习这个工具,首先得明白以下几点:

1,学习Vim在开始是痛苦的

2,不要希望你3天就能精通,实际上你可能需要2周甚至更久。

3,需要不断的练习。

学习顺序

1,在 Insert/Normal 模式下编辑文档(五个命令:i,x,:wq,dd,p)

2,学习更多的命令(插入模式,移动光标,拷贝/粘贴,Undo/Redo,打开/保存/退出/改变文件)

3,学习技巧型命令(如何更好,更快,更强)

4,学习超能力(超能力级功能)

Vim的常用命令

Vim中的命令数不胜数,它可以让你只需要看你的键盘就可以完成所有的事情,但是其中并不是所有的命令都那么常用,这里就列举那些最有用的命令。

这些命令也可以分为以下四级

1,在 Insert/Normal 模式下编辑文档(五个命令:i,x,:wq,dd,p)

2,学习更多的命令(插入模式,移动光标,拷贝/粘贴,Undo/Redo,打开/保存/退出/改变文件)

3,学习技巧型命令(如何更好,更快,更强)

4,学习超能力(杀手级功能)

在 Insert/Normal 模式下编辑文档

打开vim之后默认是Normal模式。Normal模式下你可以操作你的光标,接下来是Normal模式中的一些简单命令,在Normal模式下,几乎所有的键都是功能键。

i —— 插入模式,这个模式让你你可以像记事本一样的输入文本,如果已经输入完了,按ESC返回Normal模式。

x —— 删除当前光标所在处的字符

:w —— 存盘

:q —— 退出,你可以使用 :wq来同时进行这两个操作

dd —— 剪切当前行

p —— 粘贴

hjkl —— 效果等同于←↓↑→,用于移动光标

:help<command> —— 显示相关命令的帮助

学习更多的命令

除了i之外,还有别的插入模式可以选择

a —— 在光标后插入

o —— 在当前行后插入新行

O —— 在当前行前插入新行

一些快速移动光标的指令

0 —— 数字零,到行头

^ —— 到本行第一个不是空字符的位置

$ —— 到行尾

g_ —— 到行尾最后一个不是空字符的位置

/pa —— 搜索 pa 这个字符串,按n查找下一个

关于文件的指令

:e <path/to/file> —— 打开一个文件

:saveas <path/to/file> —— 另存为

:q! —— 不保存退出 :qa!可以退出所有编辑中的文件

:bn :bp ——当你打开了很多文件,用这个切换到下一个/上一个

其他的指令

u —— 撤销

ctrl+r —— 重做

学习技巧型命令

Vim重复自己的方法

. —— 小数点,重复上次命令

N<command> —— 重复一个命令N次

下面是一个特殊的例子

100imeow[ESC] —— 写下100个“meow”

. —— 重复上一个命令 也就是再写100个“meow”

3. —— 重复3次命令 写下3个(而不是300个)“meow”

进阶级移动光标的命令

NG —— 移动到第N行 ,:N也可以

gg —— 到第一行

g —— 到最后一行

w —— 到下一个单词开头

e —— 到下一个单词结尾

% —— 当光标在括号上时,可以移动到与之对应的另一个括号

*和# —— 移动到下一个/上一个光标所在的单词上

实际上这些命令都可以组合输入,格式为:<start position><command><end position> 举个简单的例子

0y$ —— 0和 $ 是位置,y是指令,这个指令的意思就是从行头拷贝到本行最后一个字符。

除了 y,还有不少命令可以这么做,比如

d —— 删除

gU/gu —— 变为大写/小写

v ——可视化选择

学习超能力

更高级的移动光标

Fa/fa —— 移动到上一个/下一个a字符,a可以换成其他字符

T,/t, —— 移动到逗号后/前的那一个字符,逗号可以换成其他字符

3fa ——到第三个a字符处

dt” —— 在遇到”前删除所有内容

区域选择

区域选择的命令格式一般为<action>a<object> 和 <action>i<object>

用一个简单的例子来区别a和i

假如说有这样一个字符串——[123((abcd))],你的光标在b上

vi)——会选择abcd

va)——会选择(abcd)

v2i)——会选择(abcd)

v2a)——会选择((abcd))

自动补齐

在 insert 模式下输入一个词的开头,然后按ctrl+p或+n,就可以使用自动补齐了

qa——开始录制宏,并把你的操作记录在a

@a—— replay你在a录制的宏

@@—— replay最新的宏

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: