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

vim 从嫌弃到依赖(4)——.命令

guanshanw 2023-08-24 00:16 37 浏览 0 评论

通过之前几篇文章的介绍,如果各位小伙伴能够勤加练习,并在日常工作上经常使用,那么相信那些内容已经会对工作效率的提升产生好的影响。但是如果那些就是vim的全部的话,我们也就没那么大的必要花这么大的精力来学习如何使用它,而且它也不会在程序员中口口相传,并且令很多程序员对它如此着迷。接下来让我们更加深入到vim中,去学习更多更好的,可以进一步提升效率的技巧

Don’t Repeat Yourself. Let vim repeat it for you

不要进行重复的操作,让vim替你自动完成这些重复的操作。

vim之所以好用,效率高。就是它对重复操作进行了大量的优化,并且提供了一些方式方法能让你不必做重复操作。而且尽量让这些方法简单易用。最简单的就是使用. 来重复上次修改(确实是够简单的)

废话不多说,还是以例子来说明吧
假设我有这样一段Python代码

if user == "vim":
print("vim is best!")
else:
print("vim is not best")

我需要将第2行和第3行进行缩进,可以这么做,先使用j 移动光标到第二行,然后使用 >> 缩进代码,接着使用 2j 跳转光标到第四行,然后使用 . 重复上一次的修改


配合搜索命令可以完成对文本的快速修改,但是我们现在还没介绍到搜索相关操作,所以先按下不表

如何定义上次修改

不同的编辑器对上次修改的定义不同,有的可能是词、句子、段甚至有的可能按照输入时间来算,一段时间内的输入算作上次修改,而vim可以自己定义上次修改范围是多少。

vim一般将从进入插入模式开始,到从插入模式退出这段时间内做的修改做为上次修改,或者在普通模式下将我们使用一次operat = operator + motion 公式作为一次修改,例如我们有这么一段话

this is no more one line
this is no more one line

我们将光标移动到 第一个n 处。然后使用d2w 删除两个单词,然后再下一行再次使用. 发现它执行与上一行一样的操作


在进入插入模式时,连同进入插入模式的操作一起与在插入模式下输入的内容一同被算作上次修改,例如

this is only one line
this is only one line

改为

this is no more one line
this is no more one line

我们可以先将光标移动到 only 的首位,然后使用 cw 进入插入模式,输入 no more 退出输入模式,接着使用j 移动到下一行,再使用 2b 移动到第二行同样的位置,最后使用 . 来重复


上一次修改仅限于进入插入模式的一次操作,而之前进行的移动光标之类的操作就不再统计为一次修改。例如有这么一段代码

var foot = "foot"
var ball = "ball"
var football = foot + bar

我们要在每行的后面加上一个分号。

  • 方案一:可以先使用 $移动光标到行尾,然后使用 a 插入模式,接着添加一个分号,在下一行需要先使用$ 移动光标到行尾,然后使用. 直接使用,就会变成这样

    针对这种情况只有事先手动地调整光标位置,然后使用点命令。这里就不演示了

针对这个例子,我们有更高效的方法,可以使用复合命令。使用A 可以直接从行尾进入插入模式

  • 方案二:使用 A 在行尾进入插入模式,节省后续移动光标的步骤

    通过这个例子,我们看到了使用复合命令加上. 可以极大地简化重复操作,提高效率。在这里再给出一些类似的复合命令给各位小伙伴参考

复合命令

等效长命令

含义

A

$a

在行尾进入插入模式

I

^i

在行首进入插入模式

o

A<CR>

在下一行进入插入模式

O

ko(k$a<CR>)

在上一行进入插入模式

S

^c$

删除当前行并进入插入模式

C

c$

删除当前光标位置到行尾的内容并进入插入模式

s

cl

删除光标后的一个字符并进入插入模式

在《vim实用技巧》这本书中,作者介绍了一个实用vim的经典范式——一个键移动、另一个键操作。例如上述使用. 命令的操作中,使用j 来移动行,然后使用. 来执行操作。后续将有许多操作使用该范式。

最后还是做一个总结:本篇讲述了vim中比较强大的一个命令——. 命令,它能重复上次修改。但是需要注意以下几点:

  • 上次修改是从进入插入模式开始,到回到普通模式为止这段时间内做的修改,或者在普通模式下使用一条命令进行的修改
  • . 命令并不关心上次修改的位置,只会简单地重复上次修改。所以在使用前尽量考虑该使用哪些命令能最大限度地让. 重复更多操作。
  • 使用复合命令不光能减少输入字符数,配合. 命令将产生强大的效果

相关推荐

七条简单命令让您玩转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

取消回复欢迎 发表评论: