文档章节

关于vim的实用插件

x
 xiangyunyan
发布于 08/27 14:14
字数 1262
阅读 4
收藏 0
Vim 是 Linux 下的常用文本编辑器,但也经常被称为是一个上古神器,因为它对于初学者而言相当不友好,也不好入门。

但是,对于高手而言,他们不仅将 Vim 玩得很溜,而且还将它当作代码开发的主要工具。为什么?因为 VS 等 IDE 比较庞大,运行起来比较慢,而 Vim 就相当轻量了,瞬间就能打开代码并开始工作,这对于追求效率的高手而言自然是爱不释手。

但是,如果是官方版的 Vim ,依然是局限性相当大,十分不方便。但是高手毕竟是高手,高手懂得使用插件。下面良许就介绍高手常用的 3 个很实用的插件。

1、括号自动补全插件

这个插件叫 Auto Pairs ,它可以自动补全配对的符号,比如:花括号、方括号、圆括号、引号等。这对于我们程序员而言非常有用,因为在代码里我们大量使用到了上述的几种配对符号,如果能自动补全那将很大提高我们的写 bug 效率。

使用这个插件后,当我们敲入一个符号时,会自动补全它的所匹配的另一个符号。比如,我们敲入 [ 时,它会自动补全 ] 。当我们删掉 [ 时,] 也自动被删除了。

如果我们开启了自动缩进,那么它不仅会在合适的位置补全匹配的符号,还会将光标插入到合适的位置。比如下面这段 Go 代码:

package main

import "fmt"

func main() {
    x := true
    items := []string{"tv", "pc", "tablet"}

    if x { 
        for _, i := range items
    } 
}
现在,我在倒数第 3 行 items 后面插入一个花括号 { ,然后敲一下回车,我们就得到这样的结果:

package main

import "fmt"

func main() {
    x := true
    items := []string{"tv", "pc", "tablet"}

    if x {
        for _, i := range items  {
            | (光标在这里了)
        }
    }
}

当然 Auto Pairs 还提供了很多选项,我们可以在它的 Github 仓库查看更多用法。但是,以上的这些基本用法就已经可以节约我们很多时间了。

2、代码块注释插件

作为一个合格的上古神器,Vim 没办法像那些 IDE 一样去注释代码块。但是有了 NERD Commenter 这个插件,我们就可以实现这样的目标。

NERD Commenter 很智能,它可以自动识别代码,并给出对应语言的注释风格。最简单的方法,我们可以在命令模式下通过敲 +空格 来快速注释代码块。在这里,键默认是反斜杠 键,我们也可以进行自定义。

我们怎么选中多行呢?那就是要在 visual mode (可视化模式)下进行了,这是 Vim 的基本操作了。

还有一个很有用的特性是 Sexy Comment (性感模式),我们可以使用 +cs 来触发。性感模式可以将代码块用很优雅的方式来注释,比如下面这种风格的注释就是性感模式:

package main

import "fmt"

func main() {
/*
 *    x := true
 *    items := []string{"tv", "pc", "tablet"}
 *
 *    if x {
 *        for _, i := range items {
 *            fmt.Println(i)
 *        }
 *    }
 */
}

3、添加包围符号插件

Vim Surround 插件堪称是一个大杀器,因为它可以将现有的代码添加成对包围符号。比如我们现在有这么一句代码:

"Vim plugins are awesome !"

如果我们想把引号去掉,只需敲 ds" 即可:

Vim plugins are awesome !

如果我们想将双引号改成单引号,我们可以敲 cs"':

'Vim plugins are awesome !'

想要换成其它符号也是一样的道理。不仅如此,它还对 HTML 或 XML 标记语言支持非常好。比如有这么一句 HTML 语句:

Vim plugins are awesome !

现在我们想要加粗 awesome 这个词,我们可以将光标放在这个单词上,然后敲 ysiw ,它就会自动添加标记:

Vim plugins are awesome !

Vim Surround 还可以以锯齿的方式,在语句的上下方添加包围符号,并将当前语句自动缩进。比如我们想在上面那条代码添加标签,我们可以敲 ySS

Vim plugins are awesome !

同样地,它的功能不仅于此,我们可以进它的 Github 仓库查看更多强大的功能。

小结

以上 3 个 Vim 插件,熟练使用的话将为我们节约很多时间,而且用起来也非常顺手,可以提高我们的效率。当然 Vim 社区里还有非常多大牛开发的很有用的插件,后续良许也会再推送一些好玩的插件,敬请期待!

本文地址:https://www.linuxprobe.com/vim-practical-plug-in.html

本文转载自:https://www.linuxprobe.com/vim-practical-plug-in.html

x
粉丝 2
博文 184
码字总数 62471
作品 0
长沙
私信 提问
开发者的实用 Vim 插件(一)

作为 Vi 的升级版,Vim 毫无争议是 Linux 中最受欢迎的命令行编辑器之一。除了是一个多功能编辑器外,世界各地的软件开发者将 Vim 当做 IDE(集成开发环境Integrated Development Environmen...

局长
2016/10/28
10.3K
24
使用 neovim 的浮动窗口让你再次爱上 fzf

fzf 是一个非常高效实用且美观的命令行工具,并且配置有对应的 vim 插件 fzf.vim, 相信很多人都用过。这里就不在赘述,如果你还没有用过,很推荐一试。 自从 neovim 的浮动窗口 PR https://g...

liuchengxu
04/13
0
0
Vim的初步折腾

最近的操作系统实验和数据结构的课程设计都需要在Linux下的环境编程完成,因此需要一个强有力的工具,在“世上只有EMACS、VIM和其他”这句话的指导下,选择了折腾VIm。 我使用的是Ubuntu14....

日生三金
2017/12/19
0
0
关于Linux的那些事

一些和编程无关的问题一直让我很疑惑: 1. 大多Linux发行版不自带g++,搞不懂为什么这些发行版要拆散gcc和g++这对好基友呢,既然带gcc,为何不顺便带上g++? 2. 有些Linux发行版不自带OpenG...

痞子蔡
2014/10/20
568
10
zend studio 的vim插件,扔掉鼠标

公司严格要求zendStudio做开发环境, 习惯了vim的我可真憋屈了,光标移动都要鼠标,查找也悲催, 一直想着有没有插件能让zs可以像vim一们操作,终于让我找到了 在zendstudio中的帮助安装新软...

firmy
2012/11/23
992
0

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(五)——接口默认方法

Java8新加入一个特性,允许在接口方法中给定一个默认实现。前提是在方法前面加一个default关键字。 public interface InterfaceMethod {default void say() {System.out.println("hello...

猿敲月下码
13分钟前
7
0
weed3-2.3.3.查询之缓存控制

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 缓存控制,是查询中的重点 框架提供的是控制服务。而非缓存服务本身...

刘之西东
17分钟前
9
0
Java Web 中对 ServletRequest 的一些非常规操作解决方案

1. 前言 ServletRequest 是我们搞 Java Web 经常接触的 Servlet Api 。有些时候我们要经常对其进行一些操作。这里列举一些经常的难点操作。 2. 提取 body 中的数据 前后端交互我们会在 body...

码农小胖哥
今天
33
0
《Dual Encoding U-Net for Retinal Vessel Segmentation》阅读笔记-MICCAI2019

作者:Bo Wang1,2, Shuang Qiu2, and Huiguang He1,2,3 目的:Retinal Vessel Segmentation is an essential step for the early diagnosis of eye-related diseases, such as diabetes and ......

JungleKing
今天
32
0
一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
今天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部