前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何用Vim提高开发效率

如何用Vim提高开发效率

作者头像
企鹅号小编
发布于 2018-01-08 02:41:36
发布于 2018-01-08 02:41:36
1.9K0
举报
文章被收录于专栏:编程编程

背景

虽然笔者是Android开发工程师,但也接触过各种IDE(不限于Android开发)。不同的IDE往往都有不同的快捷键,我们总不能对每种IDE都进行配置吧。实际上,现在大部分IDE都能通过插件的形式支持Vim了。所以,只需要掌握Vim的基本使用,在支持Vim的IDE都能很快上手,熟悉的操作,熟悉的手感。

Vim模式

Vim可分为3种模式,分别是Normal模式、Visual模式和Insert模式。以下的基本操作都是在Normal模式进行。三种模式的区别这里不详解了,Bing搜索有很多相关的基础教程。

三者的关系可用下图简单描述

基本操作

光标移动

注意区分字母大小写

上下左右

直接看表格,简单易懂。一开始会有点别扭,但是熟悉之后你会爱上他的。

单词间定位

键位

如果是大写,则单词允许包含标点

w(向前跳到单词词首)

e(向前跳到单词词尾)

b(向后跳到单词词首)

行内定位

键位

$(定位到行尾)

0(定位到行首)

^(定位到行首,忽略空格)

f正向搜索ch字符,ch如果是字母则区分大小写

F反向搜索ch字符,ch如果是字母则区分大小写

块定位

键位

{(跳到上一个代码块)

}(跳到下一个代码块)

%(定位到另一个匹配的括号)

页面定位

键位

gg(定位到页面的第一行)

G(定位到页面的最后一行)

H(定位到当前页面的顶部,High首字母大写)

M(定位到当前页面的中部,Middle首字母大写)

L(定位到当前页面的底部,Low首字母大写)

nG或ngg(定位到指定行,n表示行数,需大于0,

如果大于最大行数,则会直接跳转到页面最后一行)

m和'(这是一对很强大的命令,可标记一个位置,然后在同页面快速定位到该标志。m表示mark,a是一个字母,可以是26字母的其中一个,'是单引号,后面跟上前面标记的字母)

屏幕滚动

整屏滚动

键位

Ctrl + f (向下滚动一屏内容,Foward首字母小写)

Ctrl + b (向上滚动一屏内容,Backward首字母小写)

半屏滚动

键位

Ctrl + d(向下滚动半屏内容,Down首字母小写)

Ctrl + u(向上滚动半屏内容,Up首字母小写)

行滚动

键位

Ctrl + e(向下滚动一行内容)

Ctrl + y(向上滚动一行内容)

编辑模式

插入

键位

i(在光标处插入,insert首字母小写)

I(在行首插入,insert首字母大写)

a(在光标处后一个字符插入,append首字母小写)

A(在行尾插入,append首字母大写)

o(在上一行插入)

O(在下一行插入)

cc/S(清除当前行并进入插入模式)

s(清除当前字符并进入插入模式)

恩,这个很简单,就不贴图了。

查找

键位

/pattern(正向查找)

?pattern(反向查找)

n(查找下一个)

N(查找上一个)

*(当光标定位在某个单词时,查找下一个该单词)

#(当光标定位在某个单词时,查找上一个该单词)

替换

键位

:%s/old/new/g(全局替换old为new)

:s/old/new/g(替换当前行old为new)

注意,替换操作仅在当前页面生效,使用该替换操作需谨慎。

建议使用IDE自带的重命名操作,可以将对应的引用也一起重命名!

剪切、复制、粘贴

键位

dd(剪切当前行的内容)

D(剪切光标后到行尾的内容)

yy/Y(复制当前行的内容)

p(粘贴到光标后)

P(粘贴到光标前)

撤销

键位

u(撤销上一步,IDE一般都是Cmd + Z)

这个简单,也不贴图了。

组合操作

组合操作可以看作是op+i/a+scope公式的应用,解释一下这个公式,op就是我们前面提到的插入(c)、剪切(d)、复制(y)以及还未提到的选择(v),i表示scope范围内,a表示包含scope标签,scope就是操作的范围了。这样讲比较抽象,下面举例几个常用组合。

选择文本

键位

以下如果将i换成a,则会将符号也包含进去

vib(选中小括号内的内容)

viB(选中大括号内的内容)

vi"(选中双引号内的内容)

vi'(选中单引号内的内容)

vi

同理,将选择操作(v)替换成插入(c)、剪切(d)或者复制(y),也能实现类似的效果。

神奇操作

IDE支持跳转到变量(方法)的定义处或者调用处,Vim也支持,而且也很方便。只需要将光标定位到方法名,然后输入即可。配合Android Studio的Navigate Back,可以十分方便地查看方法的调用。

Navigate Back设置

碎语

当掌握了Vim,以后如果使用了新的IDE或者开发环境,只要支持Vim,我们就能很快的熟悉开发环境。当然,很多IDE提供了更完善的快捷键,笔者的观点是,Vim和IDE配合着使用,互补缺点。

参考链接

https://jasonliao.me/posts/2016-08-09-you-dont-know-vim.html

https://vim.rtorr.com/lang/zh_cn/

●本文编号408,以后想阅读这篇文章直接输入408即可

●输入m获取到文章目录

推荐↓↓↓

C/C++编程

更多推荐《18个技术类公众微信》

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、JavaPython、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

本文来自企鹅号 - Linux学习媒体

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

本文来自企鹅号 - Linux学习媒体

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
PS:本文节选自开源电子书《AI 辅助软件工程:实践与案例解析》第一部分《AI4SE 体系设计》(https://aise.phodal.com/design-aise.html)
Phodal
2024/11/22
4030
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
深入核心的敏捷开发
如何破局? 正如《管理3.0:培养和提升敏捷领导力》所说,所有变革最后的失败都是管理的问题。应该把绩效考核这种管理手段当成『敏捷铁三角』中一角来对待,那就是调整约束
yeedomliu
2021/03/16
1.4K0
深入核心的敏捷开发
2022年软件开发的趋势
今年早些时候,我们参加了几个关于软件开发的会议。我们汇编的清单是会议参加者听到的最重要的观点。这里是 ◆ 1.可观察性[跟踪、监控和记录]是至关重要的 你正在开发你的软件,你已经准备好部署它了。所有的测试都通过了,测试覆盖率也达到了一个不错的水平。知道这一点后,我们可以部署我们的代码,并继续平静地工作。尽管这不是最理想的情况(而且很罕见),我们的代码仍然可能失败。是的!因此,开发人员需要一直观察他们的代码,并让它一直报告指标。万一有什么故障,你需要让你的系统准备好向你提供日志。正如Andrzej所写的。 可
IT大咖说
2022/08/26
3210
2022年软件开发的趋势
七种提高软件质量和开发效率的先进实践
运维开发王义杰
2023/08/10
7150
七种提高软件质量和开发效率的先进实践
React 毁了 Web 开发!
React 是一个很好的库,对于Web开发很重要,因为它引入了声明式与反应式模板,这在当时是每个人都需要的范式转变。当时(也就是6~7年前),我们面临着需要的范式转变的问题,而React 很好地解决了这个问题。
开发者技术前线
2021/07/23
8060
React 毁了 Web 开发!
互联网企业的敏捷开发之道
个人介绍:1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理、产品总监。2007年后创业4年,开发过视频直播社区,及多款页游产品。2011年后就职于腾讯游戏研发部
韩伟
2016/10/10
3.2K1
Python初学者必读丨五分钟内教你如何学习Python
许多Python初学者都不知道该如何开始学习。软件工程师Daniel Moniz分享了他自己的故事,他是如何在辞职后从零开始学习Python,并找到自己心仪的工作。 大家好,欢迎来到我的五分钟讲座——关于如何学习Python。我叫Daniel Moniz,我在Points公司工作。我作为一名软件工程师在那儿工作了一年。 针对那些想进入Python领域的人群,那些想学习Python的人群,我们有责任尽可能地帮助他们,关于如何学习Python的讲座并不多。 这个讲座的目的是帮助初学者学习,最终能够找
CDA数据分析师
2018/02/05
7880
Python初学者必读丨五分钟内教你如何学习Python
如何有效提升软件测试质量?
软件质量保障 | 测试质量保障、自动化工具/框架、平台开发、算法测试、BAT/TMD大厂测试岗面试题/面经分享、测试团队建设与管理、测试新技术的分享。 偶尔也聊聊个人工作的收获与经验。可以帮忙内推字节、阿里、百度等大厂。
互联网金融打杂
2022/08/01
1.2K0
如何有效提升软件测试质量?
12年程序员职业生涯得到的12个经验教训
12年程序员职业生涯得到的12个经验教训 我已经在ThoughtWorks工作了12年。是不是有点不可思议?回首我的职业生涯,我想写一写我在这些年中经历的困难,以及总结得到的12个非常重要的经验教训。
用户1289394
2018/02/27
5540
12年程序员职业生涯得到的12个经验教训
一位高级数据科学家典型的一天:从结对编程、敏捷开发,到编写代码
数据科学家通常被认为拥有一份超级酷和令人兴奋的工作,但事实上它并不像看起来那样迷人。但这不一定是坏事,我只是发现新晋的数据科学家没有意识到他们正在进入什么领域。 翻译 & 整理 | 杨阳 出品 | AI科技大本营 最近,我遇到了很多有兴趣转行到数据科学领域的人。他们总是问我的第一件事是:“典型的一天是什么样的?”。我看过很多概述数据科学家应用技能和工具的文章,但我看不到很多展现日常工作的真实案例。 虽然每一天都不一样,但这些任务代表了我作为一家大型金融机构的高级数据科学家的典型的一天。 每日一览 8:
AI科技大本营
2023/04/06
2970
一位高级数据科学家典型的一天:从结对编程、敏捷开发,到编写代码
培养敏捷态度
关于敏捷方法论的文章已经很多了。其中,相当一部分文章讲述了敏捷方法技术方面的问题,比如测试驱动开发和持续集成。同样,还有相当一部分文章讨论了敏捷 方法论的应用问题,例如发布计划,跟踪生产率,如何使用度量数据对过程“调优”,甚至让公司里的业务人员确信需要采纳一种特别的方法。读过这些有关敏捷方 法的文章后,很容易让人产生一种感觉,即通过购买一套工具并遵从一系列看上去很简单的实践,就算采纳了像极限编程和Scrum这样的敏捷方法。然而,现实 世界的经验表明,成功地采纳敏捷要比那复杂得多。它涉及到如何培养一些正确的做
张善友
2018/01/30
6310
React 毁了 Web 开发!
译者 | 弯月 责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews)
五月君
2021/11/18
2830
React 毁了 Web 开发!
敏捷开发
现在有许多公司专门从事软件开发项目。他们中的一些人正在使用标准的业务方法(瀑布),有些人已经涉及敏捷原则。产品开发人员和开发团队一直在寻找更有效的生产方式。虽然瀑布过程在过去被广泛采用,但越来越多的团队正在转向敏捷开发,这是一种现代化的项目管理和产品开发方法。在本文档中,我们想向您介绍敏捷的世界,并揭示与在工作中使用敏捷方法的开发团队合作的好处。
杜金房
2022/12/12
1.3K0
敏捷开发
如何提高团队代码质量
在开发阶段我们更多的是通过SQ来做自动化的代码检查,SQ的高版本已经可以发现代码中的BUG,漏洞,坏味道,智能省时。可以过滤大多代码级别的问题。
海哥@开发
2022/04/06
6280
如何提高团队代码质量
在实践中总结出的几条 CodeReview 实用经验
资深的程序员都知道 Code Review 可以对代码质量,代码规范,团队代码能力提升带来很大的提升,还有著名的技术专家“左耳朵耗子”也说过:
phoenix.xiao
2020/08/13
6460
初级 vs 高级开发者 哪个性价比更高?
许多公司倾向于雇佣有经验的软件开发者——因为这些人基本上不需要培训就可以开始工作。特别是在刚创业的公司里,如果为了节省资金,低薪雇佣一些没有经验的开发者,而这些人又不能在短期内给公司带来效益,那你给再
李海彬
2018/03/22
6300
初级 vs 高级开发者 哪个性价比更高?
代码审查如何保证软件质量
在软件行业,您可能经常会听到术语“代码审查”。但是,代码审查的概念经常被误解。人们通常认为它在软件开发生命周期中被忽视执行测试应足以满足验证过程。因此,他们倾向于对代码审查过程视而不见。但是,忽略代码审查过程可能会反弹并产生重大后果。我们也有一个误解,认为代码审查过程是开发团队的责任。它不是!代码审查是一个过程,不仅应包括开发人员,还应包括质量保证人员和产品经理。本文是我的尝试,旨在帮助您意识到代码审查的重要性以及您应该如何参加质量检查。
FunTester
2019/11/10
1.1K0
《硝烟中的Scrum和XP》第13章 我们怎样结合使用Scrum和XP
第13章 我们怎样结合使用Scrum和XP Scrum注重的是管理和组织实践,而XP关注的是实际的编程实践。这就是为什么它们可以很好地协同工作——它们解决的是不同领域的问题,可以互为补充,相得益彰 ---- 结对编辑 结对编程可以提高代码质量 结对编程可以让团队的精力更加集中。(比如坐在你后面的那个人会提醒你,“嘿,这个东西真的是这个sprint必需的吗?”) 令人惊奇的是,很多强烈掏结对编程的开发人员根本就没有尝试过,而一旦尝试之后就会迅速喜欢上它 结对编程令人精疲力竭,不能全天都这样做 常常更换结对是有
yeedomliu
2020/04/14
9380
敏捷模型-开发方法入门系列
在这篇博客中,我们将讨论敏捷模型的关键功能、阶段、测试方法及其优缺点,但在探索所有这些之前,让我们看看引入敏捷模型的必要性以及它何时出现。我们不断扩大的数字世界越来越渴望更复杂和多样化的应用程序。不幸的是,这种需求与高软件开发失败率相冲突。为了解决这一失败,敏捷方法应运而生。敏捷方法最初是在软件开发业务中管理软件开发的一种新技术。许多软件开发项目都失败了,或者需要很长时间才能完成,行业领导者明白他们需要提出一个新的、创造性的解决方案。
jack.yang
2025/04/05
1680
敏捷模型-开发方法入门系列
【敏捷1.4】敏捷开发环境:领导与团队
敏捷中,最重要的是什么呢?基本上所有的教材都会说,敏捷是以人为本的,以团队为核心的。第一,敏捷不提倡加班,第二,敏捷让团队自管理,第三,敏捷中的领导都是服务员而不是命令者。是不是看着很激动呀,敏捷对员工这么友好吗?没错,相比传统的项目来说,在敏捷中做项目是快乐开心的。那么,要实现敏捷,我们的团队需要怎样的领导与团队环境呢?
硬核项目经理
2021/10/26
1.2K0
相关推荐
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档