听说,撸代码,ide与vim更配哦vim折腾记vim常用命令

vim折腾记

在选择编辑器上面,我是一个纠结的人,曾经年少的我执着地追求一款万能的编辑器,可以支持所有编辑语言,灵活可定制,可纯粹用键盘操作。符合这种条件的编辑器,非vim莫属。

在投入vim阵营之前,我对其是敬而远之的。第一次使用vim,我的第一感觉是:

"挖槽,这是什么鬼?行号没有,语法高亮没有,自动提示也没有,这跟txt有什么区别... 赶紧退出,靠,怎么还退不出?这反人类的东西还被誉为编辑器之神?“

后来看了大神们对于vim的配置,才知道vim原来还可以这么玩,推荐阅读 老司机乱谈编辑器之神,这篇文章让我惊叹于vim的牛逼,感觉vim无所不能,开始想象着自己学会vim后,在其他人都用各种ide的情况下,我将vim窗口最大化,键指如飞,犹如弹钢琴的艺术家。这个装逼的场景,想想都觉得飘飘然...

在各种酷炫功能的吸引下,我开始沉迷于如何折腾vim

vim装逼插件

装逼是人类的刚需

vim的学习曲线比较陡峭,如果你是纯粹的小白,强烈推荐 简明 VIM 练级攻略,跟着此文练习几天,vim最基本的功能就熟悉了。

对vim有初步的认知后,要进一步系统地学习vim,《Vim实用技巧(第2版)》是不二选择

Vim实用技巧(第2版)

掌握vim的基础命令后,我就开始了折腾vim的辛酸血泪史,一开始是自己配置.vimrc,后来看到网上有很多现成的配置,如号称vim终极配置的 spf13-vim,国内的 spacevim 将vim配置得如同开箱即用的ide

在尝试各种vim配置后,没有哪一个配置是真正用得称手的,总有些坑在等着我,而且将vim打造得如此复杂,总感觉格格不入,貌合神离,且并没有ide好用。

既然如此,为何要去折腾vim? 直接用ide不就行了?

可是习惯了vim的模式切换,键位操作,再也无法去用ide那些奇奇怪怪的快捷键组合。

最终的解决方案就是用 jetbrains全家桶,然后安装ideavim插件,既能享受ide集成环境的便利,又得继续使用强大的vim, 而且jetbrains全家桶已经囊括了主流编程语言,不管是写PHP(phpstorm), 还是撸python(pyCharm), 又或者是玩golang(GoLang),都有对应的ide,但使用起来就如同在用同一款编辑器

vim常用命令

vim是学不完的,即使是用了vim十年的老手,也不敢说完全掌握了vim。但常用的vim指令并不是很多,以下列举我常用的指令:

光标移动

  • 0 到行头
  • ^ 到本行第一个不是blank的位置
  • $ 到行尾
  • g_ 到本行最后一个不是blank的位置
  • NG 到第N行 或者是 :N
  • w 到下一个单词的开头
  • e 到下一个单词的结尾
  • % 匹配括号移动
    • 和 # 匹配光标当前所在的单词,移动光标到下一个/上一个匹配单词
  • f{char} 到下一个{char}
  • t{char} 到{char}前的一个字符
  • Nf{char} 在当前行查找第N个出现的{char} 如:3fa
  • F 和 T 与 f 和 t 反方向
  • dt{char} 删除{char}之前的所有内容
  • ; 与 , 跳到下/上一个由f/F, t/T查找的字符

替换

  • :%s/原文本/替换的内容/g 全文替换
  • :10,20/原文本/替换的内容/g 指定行号替换

指定行数操作

  • :10,20y 复制10至20行
  • :10,20d 删除10至20行

高效操作

  • . 重复上一次的命令
  • N<command> 重复某个命令N次
2dd 删除2行
3p 粘贴文本3次
100idesu[ESC] 会写下100个 desu

跳转

  • ctrl + o 回到上一处
  • ctrl + i 回到下一处

书签

  • ma 设置当前文件的书签
  • mA 设置全局文件的书签
  • `a 跳到书签a
  • `A 跳到书签A
  • :marks 查看当前所有书签

宏操作

  1. 首先,按下 q,然后按下你想要保存的寄存器,任何小写字母都可以。比如我们来把它保存到 q 这个寄存器中。按下 qq,你会发现命令行里已经显示了 "recording @q"。
  2. 如果你已经录制完成,那么只需要再按一次 q 就可以结束录制。
  3. 如果你想调用刚才录制的宏,只需要 [count]@q
  4. 如果你想调用上一次使用的宏,只需要 [count]@@

实例:一个插入字符串 "abc" 后换行的宏,重复调用十次:

qq
iabc<cr><esc> # <cr> 表示回车键
q
10@q

Tip: 如果是windows系统,ide启用vim插件的体验不太好,因为ctrl既是vim的功能键,又是windows功能键,两者会有冲突,用着不是很爽。mac的功能键是command键,避免了冲突问题

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漏斗社区

黑客游戏| Owasp juice shop (一)

0x01 前言 最近看到一篇关于owasp juice shop的文章,觉的很有意思,斗哥就自己撸了个环境,上手后深深觉的这是一个很棒的漏洞靶场,所以就把该...

5058
来自专栏大数据挖掘DT机器学习

python爬取网易云音乐并分析:用户有什么样的音乐偏好?

发现自己有时候比挖掘别人来的更加有意义,自己到底喜欢谁的歌,自己真的知道么?习惯不会骗你。 搭建爬虫环境 1.安装selenium pip install s...

2K8
来自专栏偏前端工程师的驿站

Thinking in React Implemented by Reagent

前言  本文是学习Thinking in React这一章后的记录,并且用Reagent实现其中的示例。 概要 构造恰当的数据结构 从静态非交互版本开始 追加交...

20910
来自专栏進无尽的文章

扒虫篇- Bug日志 Ⅷ

不执行的原因是 在VC中使用这个ImageUploaderManager时,需要设置为全局变量,如果是局部变量的话,很快会被销毁掉,其中的代理自然不会执行了。

1963
来自专栏中国Android研究院

番外篇-Flutter初识三问

在Android中,您可以通过直接对view进行改变来更新视图。然而,在Flutter中Widget是不可变的,不会直接更新,而必须使用Widget的状态。

1343
来自专栏ionic3+

【技巧】ionic3自动聚焦暴力实现

很早前和群里的人探讨过自动聚焦,在android上可以,但是在ios上失败,后来在网上看到这个:

862
来自专栏androidBlog

360面试总结(Android)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

901
来自专栏偏前端工程师的驿站

Thinking in React Implemented by Reagent

1063
来自专栏哲学驱动设计

产品前端重构(TypeScript、MVC框架设计)

最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容。 公司期望把某一管理类信息系统从项目代码中抽取、重构为一个可复用的产品。该系统的...

2698
来自专栏phodal

让你的「微信小程序」运行在Chrome浏览器上,让我们使用WebStorm

「微信小程序」的开发框架体验起来,还不错——自带了UI框架。但是问题是他的IDE,表现起来相当的糟糕——其实主要是因为,我当时买WebStorm License...

7256

扫码关注云+社区

领取腾讯云代金券