Vim是一款文本编辑工具,她本身并无像 VSCode 或 Jetbrain系列 那样的功能,例如:代码的诊断,重构分析等IDE功能。

但这并不意味着 :Vim不能拥有IDE的功能。

如何拥有呢? 需要我们慢慢配置,不断折腾,因折腾的过程 艰辛 且 迷茫,而导致大多数人中途放弃,有的甚至找不到方向,最后配置出来的Vim也并不能提高生产力(可以说是倒退)。

经过数不尽的开发者的努力,Vim沉淀了28年(从1992起),活跃至今,历经磨砺,现今是 当之无愧的 编辑器之神。

学习本文后,你可以像IDE那样使用Vim,而且 写代码的时候,从不使用鼠标,一下都不用!

没错!许多电影里面的黑客镜头:

别人眼中的程序员 VS 真实的程序员_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

哈哈哈哈哈! 其实上面视频的前半部分,我们都是可以用Vim来实现的。而且装得还挺有效率的。

好了,在这里我们就可以明确目标:

像IDE那样使用Vim,而且不用鼠标。

本文是快速入门版,并不提供特别详细的Vim教程,只是为了吸引更多的开发者(并无广告费)来使用Vim。

看完本文:

1. 你懂得基本的Vim 操作

2. 你可以完全弃用鼠标

3. 大大地提高写代码的效率

4. 像IDE那样使用Vim

为了更更简单,本文还提供了一个 完全 开箱即用的,配置好的,拥有IDE功能的 Vim压缩包,大家可以:下载→解压→运行 ;即可得到体验。

但这压缩包并不建议使用在实际的工作中,只是为了演示。最终在工作中使用的Vim应该是你自己慢慢配置(折腾)好的,你非常熟悉的。

我坚守的原则:

适合自己的才是最好的

如果Vim的配置不是你亲自配置的,那么这Vim并不是合适你自己的,你对他并不熟悉,所以并不是最好的。同样地,如果你在使用Vim的过程感觉到Vim并不合适你的,觉得 Vs 、Jetbrain系列 、 Emacs 更适合自己的,我希望你同样能遵守原则,马上放弃Vim,时间是宝贵的,最好的就是最好的。

本文以Windows系统为例,使用gvim,gvim是vim的GUI版本,也就是带窗口的。


直接下载 我已帮你准备好的,开箱即用的vim。 再次强调,这个开箱即用的vim只是供你参考,供你学习。决不能 不加思索 拿来就用的,更不能用于实际的开发(虽然真的可以用于开发)。 你需要慢慢学习,慢慢配置属于你个人的vim。

1.下载

2.解压

3. 打开。即可体验本文的Vim。

压缩包下载地址:
链接: https:// pan.baidu.com/s/1QaW0lg -k8XFo9uXv7gKcBA 提取码: 39g4

下面 演示一下 开箱即用vim 的一些功能!

  1. 使用leaderf 快速打开一个文件,并不需要一个个去找,只需输入文件名

在命令模式下键入下面命令即可使用快速打开文件的功能。

:Leaderf file

Tip:我们每次要搜索文件前,都要输入这么长的(Leaderf file)一段 文字吗?

这对于追求效率的vimer来说肯定是不可以接受的。我们希望 把他绑定在一个按键上;按一次就可以使用 “文件搜索”了。例如:你想按下 <F7> 是就打开“文件搜索”,你可以把

下面这条代码放进的vimrc,保存,重启vim。

nmap 

然后你就得到:按下 <F7> 是就打开“文件搜索”。

什么是 vimrc呢(请看后文)? 上面那条代码又是什么意思呢(请自行查阅vim的文档)?

很显然,你需要更进一步的学习;学习vim 的过程是曲折(折腾)的,如果你直接拿别人的配置,以为拿来就可以上手使用了,实际上别人的配置,你是不熟悉的,你最希望按下哪个键打开文件搜索呢? 这些只有你知道答案的问题,别人是不知道的,所以应该由你来配置vim。最熟悉你的人应该是你自己,与vim融为一体,才能发挥vim的最大作用。

学习vim的过程是艰难的。但你学会后,受益无穷。

2.使用 snippet(片段), 尽量避免重复的输入

片段补全的功能由 ultisnips 提供的。

你可以输入一个 html 然后按下 <tab> 就自动展开了。这个按键 是ultisnips 默认的,你可以修改这个默认按键。

3.使用easymotion 来快速移动。 不用鼠标也可以快速移动的终极武器。

easymotion这个插件默认使用<leader><leader>w 来向前移动。

所谓<leader>就是 你在vimrc设定的好的键,相当于一个变量,如果你在vimrc中设定<leader> 为<Ctrl>,那么你在命令模式中按两下<Ctrl>然后再按一下 w 就可以向前快速移动。

默认不配置的<leaderf>的情况下,vim会自动把它设置成 ,也就是你按两下 再按w 就可以向前移动。

4. 使用 leaderf 快速定位文本

假设我们现在在写python语言,我们想跳转到 一个名叫 dashen的 方法的实现。可是代码已经 超过了一千行了。

用鼠标滚动吗? 一个屏幕根本显示不了一百行代码,更别说一千行 。

使用模糊搜索!

Everything in vim can be located by search.
在vim中所有的东西都可以通过 搜索 来 定位.

这是一个新生的哲学! 是谁发明的呢? —— 我。。。。。 哈哈哈哈

在命令行模式下使用

:LeaderfFunction

leaderf 对文本的解析依赖额外工具,需要leaderf能检索到工具的存在的地方。新司机配置的时候遇坑比较多。

5. 浏览树形目录

很多时候,我们上手一个新的项目,我们必须要看看这个项目的基本目录结构,才能进行下一步的功能。

使用下面命令,将打开当前文件的目录。

:NERDTree

6.语义级别的 代码补全

什么是语义级别? 通常编译器在 把代码生成成机器码前,都要先对代码解析,得到很多种数据结构,最常见的一种称为 抽象语法树(AST)。 得到抽象语法树后,就得到语言的基本逻辑,例如:名叫 helloClass 的这个类有什么属性,有什么方法;通过树这种数据结构,我们可以轻易地遍历出 这个类的属性和方法。

我们目前使用的模糊补全插件,在语义层面上再加上 字串符的模糊匹配,尽量减少打字的次数。

通常vim的补全插件有很多,其中最著名的有:

https://github.com/ycm-core/YouCompleteMe​github.com

7. 代码的实时诊断

写代码的时候难免会错误, 如果没有代码的实时诊断,我们就要在编译的时候才能知道有什么错误。特别是 动态语言,即使编译成功后,运行时还是可能会有一时糊涂导致的错误。


本文只会大概地讲 如何入门vim,介绍一些简单的操作。

基本Vim操作

基本上 vi/vim 共分为三种模式(并不是全部),主要使用的 分别是命令模式(Command mode)输入模式(Insert mode)选择模式(Visual mode)。 这三种模式的作用分别是:

命令模式:

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

此状态下敲击键盘动作会被Vim识别为 命令 ,而非输入字符。

比如: 我们此时按下 i ,并不会输入一个字符,i 被当作了一个命令。

我们按下 j ,并不会显示 j ,而 j 是向下滚动的命令。

在命令模式下,我们使用 : (引号)来输入命令,然后按一下回车键,就可以执行该命令(非常重要)。

输入模式

在命令模式下按下 i 就进入了输入模式。你可以输入你想输入的任何东西。

在插入模式下使用 ESC 键退出插入模式,回到 命令模式。

在命令模式下 我们可以使用,著名的:hjkl 来移动光标。

也就说,在vim 的命令模式下,键盘上的 hjkl (小写),是命令;命令Vim做 屏幕滚动操作。

h,向左移动一个字符

l,向右移动一个字符

j,向下移动一行

k,向上移动一行

选择模式

在命令模式下,使用 v 就可以进入选择模式。

然后使用 hjkl 来移动光标,选择你想选择的东西。

仅仅使用hjkl效率是极其低下的,建议读者在命令模式下一个个试试下面的命令,会得到意想不到的效果。

行首行尾

0或,移动到行开始(注意是数字0)$或,移动到行尾^, 移动到当前行的第一个非空白字符上g_, 移动到当前行的最后一个非空白字符上

移动词首尾

w,移动到下个单词的词首b,移动到上个单词的词首e,移动到下个单词的词尾ge,移动到上个单词的词首

跳转指定行

nG,跳转到指定的第n行gg,跳转到第一行

屏幕适应

G,跳转到最后一行M,跳转到当前屏幕的中间一行L,跳转到当前屏幕的尾行ZZ,将当前行放到屏幕中央

更多且详细关于Vim的基本操作,可以看这里:

简明 Vim 练级攻略 | | 酷 壳 - CoolShell​coolshell.cn


使用Vim脚本

配置vim,如何配置vim? 配置是什么鬼? 配置就是一系列你定义vim的行为。

例如说:希望vim的窗口的背景色是 红色的 ;希望vim在我按下 回车键就可以退出vim的

这些都是配置,你想要vim做什么!?

Vim使用的是:配置文件

在windows下 vim的安装包里面都有一个文件名叫:vimrc的 东西,这个vimrc 就是你的配置文件。

Vim想要加载配置,就必须要事先知道配置文件在哪里。那么就有一个很重要的问题:你的vimrc应该放在哪里?

——事实上每个操作系统的对应的vim的配置文件的位置都可能不一样,拿windows来说,vimrc 和 vim程序目录 放在同一个目录即可,vim会检索到 如下图 vimrc。

打开你的vimrc。 怎么打开? 你直接把 vimrc 拖进vim的窗口就好了。

里面是空白的! 就如同一张白纸,等你去乱涂乱画!

现在我们打开一个 helloword.c 文件,

可以看到如下效果

这种颜色太丑了,颜值太低了。应该怎么办呢?

很简单,开始乱涂乱画你的 vimrc

把下面代码放进的vimrc,保存,重启vim。

colorscheme blue

怎么保存? 在gvim下会在关闭前询问 用户是否要保存的。

同时你也可以使用命令(在命令模式下输入 引号wq,然后回车)

 :wq

意思为保存后退出vim。

然后你就看到:

你的vimrc ----》

你可以参考一下这篇详细的文章,如何美化你的vim?

美化你的vim​github.com

把下面的代码放进的vimrc,你看看是不是可以开始装逼了呢?

" 禁止光标闪烁
set gcr=a:block-blinkon0
" 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R
" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T

记得放进vimrc后保存,重启vim。

有如下效果:


使用vim插件

对vim来说,插件的形式是一堆代码,这堆代码又以文件夹的形式发布;

从用户的角度来看,文件夹(包含代码的)就是vim的vim的一个插件。

去哪里找插件呢? GitHub有一堆!

我们以 这个为例:

vim的注释插件​github.com

先下载下来

解压后,你可以看到vim插件的文件夹是这样子的;

你不懂文件夹里面的东西用来干嘛的,这没有关系。

你的目标:就是让vim可以使用这个插件而已。

然后我们为了简单使用,我们需要先安装一个 插件管理 插件。

就是 用来 管理插件的 插件。你没看错,就是这么拗口,先安装一个vim插件 用来 管理其他插件!

在这里我们使用 vim-plug 这个插件管理插件。

这是一篇快速入门版,所以按照我的操作来做就好了,先不需了解这么多。

  1. 去这里 https://github.com/junegunn/vim-plug 下载 vim-plug
  2. 把下载好的压缩包解压
  3. 在 vim的目录下新建一个文件夹如下图:

4.把解压好的 vim-plug 文件夹 放进 myplugins

5.打开你的vimrc, 把 下面代码放进去,保存,重启vim:

" for ms-windows

这就算安装了 vim-plug

回到上面的例子——安装一个实际插件

vim注释插件​github.com

你已经把这个下载到你的电脑了。

也按照上面步骤把 vim-plug 安装好了。

1.再把 下载好的 vim注释插件 放在 myplugins 里。

如图:

2.把下面代码放进 你的vimrc(代码位置要按照图片所示),保存后重启vim

Plug 

重启后,你的vim会自动加载 那个 vim注释插件。我们来看看效果:

在命令模式下,输入 :gcc 可以注释一条 代码。

在选择模式下,输入:gc,可以把选中的代码都 注释掉。

为什么要按 gcc ? 因为这是那个 插件默认 按键,你可以通过vimrc修改这个默认按键。


会安装插件后,我们就来开车了!

因为vim的社区有一堆优秀的插件

废话不多说,你把他们都下载下来就对了:

1.https://github.com/mhinz/vim-startify 美化启动界面

2.https://github.com/Raimondi/delimitMate 成对输入标点符号

3.https://github.com/vim-airline/vim-airline 美化状态栏

4.https://github.com/easymotion/vim-easymotion 快速跳转(逢人必推荐)

5. https://github.com/Yggdroot/LeaderF 需要python的支持才能正常使用

6. https://github.com/preservim/nerdtree 树形目录

7. https://github.com/honza/vim-snippets 预设片段

8.https://github.com/SirVer/ultisnips 片段补全引擎,需要Python的支持

9.https://github.com/nathanaelkane/vim-indent-guides 代码块对齐

都放进myplugins那个文件夹

然后再修改vimrc,把下面代码放进合适的位置,如图所示

Plug 

保存vimrc,重启vim。

我们得到我们想要的效果:

一重启,我们就可以看到首界面了(这是由插件提供的)

你可以试试按一下, 012345,这些数字。 这样就可以快速地打开 历史打开过的文件了。


把python 融合进vim,有许多 vim 的插件都依赖python。

怎么让vim支持python呢?

最简单的方法:直接安装好python,让操作系统(例如说windows)能检索 到python。

就是如图:

我们在shell里面输入 python 能运行python即可让vim支持python。

特别地,vim仅支持对应版本的python,也就是说:如果你安装python的版本不合适vim的话,那么vim就无法使用你系统安装的python。

如果查看你vim支持哪些python呢?

在命令行模式 输入:

:

按 d 往下滚动,看到如图:

上图的vim支持的python2.7版本和 python3.8版本。所以你要下载安装版本为 3.8的python

记得架构也要与vim对应,同样是 32位 或 64位 的。

下载对应的安装包,然后让path给操作系统检索到(添加到 系统环境变量)。


想要发挥vim的最大功力,需要有曲折的学习过程,单单看快速入门真的只是入门!

请参考最好的vim教程(在vim命令模式下输入如下即可从零开始学习)!

:help

ide怎么设置方法中间加一道横线_像IDE那样使用VIM(快速入门版)相关推荐

  1. ide怎么设置方法中间加一道横线_word文档编辑:如何快速设置批量脚注?

    编按:说到Word脚注,不少小伙伴们就开始头疼了,觉得它非常难.其实只要你弄懂了脚注操作方法,就会觉得脚注非常简单,再复杂的脚注格式,你也能几分钟就轻松搞定. * * * * * * * * * * ...

  2. ide怎么设置方法中间加一道横线_苹果手机怎么录屏_iPhone如何录屏_iOS录屏方法...

    将手机系统升级到iOS 11或更高版本(iOS 12)之后,很多人发现小伙伴的苹果手机上集成了录屏的功能,而自己的iPhone却怎么也找不到屏幕录制功能的开关在哪儿. 方法/步骤 1找到桌面上的设置图 ...

  3. Vmware15进入bios设置方法Vmware加载光盘

    Vmware15进入bios设置方法&Vmware加载光盘 一.Vmware15进入bios设置方法 我搜索的原由:因为今天装系统的时候找不到固件进入bios的选项 1.Vmware中有打开电 ...

  4. 计算机增加一个硬盘怎么设置方法,电脑加硬盘【操作教程】

    很多小伙伴都遇到过电脑加硬盘的困惑吧,一些朋友看过网上零散的电脑加硬盘的处理方法,并没有完完全全明白电脑加硬盘是如何解决的,今天小编准备了简单的解决办法,只需要按照 1:首先,我们在自己的桌面上找到自 ...

  5. GoLand ide编辑器设置方法注释模板(例如author,date)

    设置后的使用: 设置完了,输入自定义的快捷键回车即可出现自定义的模板内容. 效果: 设置步骤: File|Settings|Editor|Live Templates| 注意: 不要修改为/** 或者 ...

  6. js页面初始化方法只调用一次_跟我学 “Linux” 小程序 Web 版开发(三):云开发相关数据调用

    介绍 在完成了界面的实现后,接下来可以开始进行和云开发相关的数据对接.完成数据对接后,应用基础就打好了,接下来的就是发布上线以及一些小的功能的加入. 配置 在进行相关的配置调用的时候,你需要先登录腾讯 ...

  7. keil设置c语言字体大小,Keil C51 µVision IDE 配置文件修改字体大小的方法

    最近在用keil的时候,发现默认字体实在太小了.正常来讲应该直接在config里面修改字体,不过这软件在我的win8.1上可能有问题.无法弹出配置框,直接卡死掉.所以我只能希望直接修改配置文件,来修改 ...

  8. vue.config.js配置代理不生效_iMac各种代理设置方法汇总

    ↑ 点击上方"子勰随笔"关注我 写在前面 由于各种各样的墙的原因,导致日常开发中我们会遇到各种各样的因为网络的问题导致的不能访问.超时等问题.每次遇到都会去查一遍,很是费时,今天专 ...

  9. CSS实战样式:文字两侧加居中横线

    CSS实战样式:文字两侧加居中横线 原文: https://www.freesion.com/article/4444809147/ 在日常的开发中,会遇到这样的需求,比如移动web开发中的登录页的底 ...

最新文章

  1. 创建git项目的feature分支以及下载特定分支的仓库代码
  2. javaweb:Cookie
  3. Zend Studio 默认模板和输入代码提示时间的修改方式
  4. 一个程序猿和非程序猿都会关注的重大事件
  5. 图像优化算法(HE、AHE、CLAHE)简单介绍
  6. NumSharp v0.6.5 .NET矩阵计算库,与TensorFlow.NET无缝融合
  7. AI 重塑 IT 的 5 种方式
  8. 虚拟机安装Centos 7网上教程整合
  9. leetcode python 042收集雨水
  10. winpe加载raid_winpe集成raid驱动~
  11. EasyTalking微博系统
  12. 基于韦东山视频 regulator 学习笔记
  13. 一款好玩的关联微信运动的云遛狗微信小程序
  14. flash驱动(一):Linux MTD子系统
  15. 胡凡算法之——快速幂
  16. Android通过MediaStore获取音乐文件信息的方法
  17. 一次真实的应急响应案例(Centos)——暴力破解、替换ps命令、留多个后门——事件复现(含靶场环境)
  18. Frame Interpolation
  19. vue-router 路由 pushstate replacestate popstate 详解
  20. 【统计学】【2018.05】【含源码】时间序列:以密度预测评价方法为中心的预测与评价方法

热门文章

  1. Vim安装与使用详细教程
  2. 第32篇:某运营商链路劫持(被挂博彩页)溯源异常路由节点(上篇)
  3. R语言入门:正态分布中dnorm(),pnorm(),qnorm(),和rnorm()函数的使用
  4. 制作iOS越狱deb插件+dpkg命令行教程
  5. 第一天之C语言到C++
  6. ES6 入门—ES6 Reflect 与 Proxy
  7. 100个人围成一个圈(编号从1到100),然后报数,报到3的下去,然后从4开始继续从1开始报数,报到3的下去,依此类推,最后剩下人的编号是?
  8. C++ | 内联函数
  9. 脑电图(EEG)基础知识
  10. 互联网金融的冲击主要来自于余额宝等以协议存款为主要收益的货币基金