🔗

Vim 修行之路

遗忘你所有关于编辑器的知识。放下尘世间的执着,开启 Vim 修行之路。

vimdiff 配置

Vim-Practice Git Tmux Vim Diff

vimdiff 命令相当于 vim -d a.txt b.txt,用来查看两个文件的 diff。 可以通过 :highlight 命令来进行 diff 配色,也可以将 vimdiff 设置到 Git 的 diff 工具。

Vim 中使用 eslint 检查代码风格

Vim-Practice JavaScript Vim 代码风格 快捷键 ESLint

eslint 是一款可配置的插件式架构的代码风格检查工具。可配置不足为奇,但插件式的架构却能带来很多方便。 例如在单元测试代码中,引入 mocha 插件便可自动引入一系列额外的语法规则。

打造前端开发的 Vim 环境 一文中提到了使用 Syntastic 对代码进行代码风格检查。 但同时我们需要按照同样一份规则(就是下文的 eslintrc)来进行代码格式化。 本文详细介绍如何在 Vim 中引入 eslint,以及用 eslint 规则来格式化代码。

在 Vim 中执行 Shell 命令

Vim-Practice Shell Tmux Vim 进程 快捷键

刚开始使用终端和 Vim 工作时,桌面上总是铺满了执行各种任务的终端窗口,任务切换极其困难。 尤其在使用 Vim 编辑文件时每次想执行一些 Shell 命令就会新开一个窗口。 虽然搭建终端工作环境的终极方式是终端复用,但有一些更加轻巧的办法可以在 Vim 中快速执行 Shell 命令。

比如 :!cmd Vim 命令和 :sh Vim 命令,以及 Ctrl+Z Shell 快捷键。 除此之外还可以使用 benmills/vimux 来在 Vim 中操作 Tmux, 这可以达到类似 IDE 的效果:按下编译快捷键打开命令窗格并开始编译, 编译过程中 Vim 不会失去焦点,编译成功后自动关闭命令窗格。

Vim 中的变量类型与作用域

Vim-Practice Vim 作用域 寄存器 环境变量 变量

有没有想查看一个 vim 变量的值却无从下手? 有没有被 Vim 变量作用域前缀搞晕? 有没有在 Vim 脚本中不知如何变量赋值? 本文梳理了 Vim 变量的赋值、取值与打印,以及在脚本中如何使用变量及其作用域。

TL;DR

  • 在命令模式、Ex 模式或 Vim 脚本中都可以操作变量。
  • 使用 let, echo, unlet 进行赋值输出和销毁,Vim 选项还可用 set 来操作。
  • $前缀表示环境变量、@前缀表示寄存器变量、&表示 Vim 选项。
  • 使用 b:,g:,l:,t: 等前缀可以限制变量的作用域。

在 Vim 中进行文件目录操作

Vim-Practice Vim 剪切板 寄存器 快捷键

很多时候我们希望在Vim中可以操作文件和目录,例如备份当前文件、 重命名当前文件、创建和删除旧文件、创建和删除目录等。 这些操作在Bash中当然可以很好地完成,但退出Vim会丢失光标位置、Buffer等信息, Harttle当然希望在Vim中完成这些操作。

本文介绍文件和目录的增删改查,同时编辑多个文件请参考这几篇文章:

Vim 中为 Markdown 配置回车展开

Vim-Practice Markdown Vim Jekyll

靠Vim写Jekyll博客已经很久了,编写代码块(Code Fence)时键入前后的```, 以及手动编写文章头信息(Front Matter)一直是个麻烦的事情。 Harttle今天就通过Vim键盘映射来对这两种语法提供回车展开支持。最终效果如下:

使用 Vim 寄存器

Vim-Practice Linux Vim Windows X11 剪切板 寄存器 正则表达式

常见文本编辑器都会提供剪切板来支持复制粘贴,Vim也不例外。 不同的是Vim提供了10类共48个寄存器,提供无与伦比的寄存功能。 最常用的y操作将会拷贝到默认的匿名寄存器中,我们也可以指定具体拷贝到哪个寄存器中。

一般来讲,可以用"{register}y来拷贝到{register}中, 用"{register}p来粘贴{register}中的内容。例如: "ayy可以拷贝当前行到寄存器a中,而"ap则可以粘贴寄存器a中的内容。

用Ag/Ack在Vim中搜索项目代码

Vim-Practice Vim Vundle grep 快捷键

Ag(The Silver Searcher)和Ack都是 CLI 的全局搜索工具,其中Ag更快一些,而Ack也比Vim自带的grep快很多。这些工具的Vim插件可以通过Vim Quickfix窗口来提供代码搜索的结果。 本文便来详细介绍如何在Vim中使用Ag全局搜索。

那么什么是Quickfix窗口呢? Quickfix是Vim的一个特殊编辑模式,该模式的提出最初是受启发于Aztec C编译器: 把编译错误写入一个文件中,然后从这个文件一一跳转到对应出错的源文件。

Vim 多文件编辑:窗口

Vim-Practice Bash Linux Vim 快捷键

标签页(tab)窗口(window)缓冲区(buffer)是Vim多文件编辑的三种方式,它们可以单独使用,也可以同时使用。 它们的关系是这样的:

A buffer is the in-memory text of a file. A window is a viewport on a buffer. A tab page is a collection of windows. –vimdoc

本文主要介绍Vim窗口的创建与维护,另外两种编辑方式的使用可以参考: Vim 多文件编辑:缓冲区Vim 多文件编辑:标签页。先上图:

Vim 多文件编辑:标签页

Vim-Practice Bash Linux Vim 快捷键

多文件编辑的场景太常见了:代码比对、项目重构、模块构建… 最初harttle在碰到这些问题时直接转向IDE了,其实Vim不仅支持多文件编辑,而且支持多种风格:标签页(tab)窗口(window)缓冲区(buffer)等。 今天harttle就来介绍一下Vim强大的多文件编辑!本文介绍Vim标签页的使用,另外两篇文章在这里:

要做一个强大的IDE,除了多文件编辑技巧,你可能还需要终端复用目录树

如何用Vim搭建IDE?

Vim-Practice Bash Git Linux NERDCommenter Tmux Vim Vundle YCM 剪切板 快捷键

一年前我从Vim切换到了WebStorm,是因为WebStorm强大的重构功能,以及Super Search功能。涉及多文件编辑和重构时WebStorm的优势便非常明显。

最近到手了HHKB,从键盘到触摸板的切换还是挺麻烦的,于是Vim编辑的需求又来了。。加之WebStorm经常假死,我决定重新启用Vim。同时重新打造了我的Vim,使它能够满足我在IDE中的所有需求。这篇文章便来记述整个过程,或许有些帮助。先上图:

在VIM下写C++能有多爽?

Vim-Practice C++ NERDCommenter Vim YCM 快捷键 代码风格

我是坚定的Vim党,因为和命令行的集成如此之好,Vim可以解决任何问题。然而在这个世界上,即便是最好用的工具也是需要配置的。 由于最近在写C++,经过一番配置后,小编写C++已经感到非常爽了,于是决定用一篇文章来记录如何打造一个适合写C++的Vim编辑器! 包括C++的自动补全、括号引号匹配、格式化、注释、编译运行快捷键等。

如果你还不了解 Vim 基本操作和配置方法,请参考 Vim初级:配置和使用。 如果你和 Harttle 一样也做前端开发,可以参考 打造前端开发的 Vim 环境

感受Vim的强大:进阶技巧

Vim-Practice Bash Markdown Unix Vim 寄存器 快捷键

Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。 如果你还没有使用过Vim,建议你先去看这个:Vim初级:配置和使用。本文介绍一些Vim的高级特性。包括块编辑、宏录制、语法高亮、键盘映射、函数定义、文件类型识别与对应插件加载等。

Vim初级:配置和使用

Vim-Practice Bash Unix Vim sed 编译

Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

文档参见:http://vimdoc.sourceforge.net/htmldoc/

中文文档:http://vimcdoc.sourceforge.net/doc/

🔝