Vim 新手入门
发布在编辑器2014年1月9日view:5588
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

简介

工欲善其事,必先利其器。

Vim 是个神奇的编辑器(简称“神器”),Vim 运行在字符终端(命令行)下, 这意味着你可以在无图形界面(no-GUI)的情况下使用它, 相比 GUI 编辑器,Vim 在速度和通用性上都非常完美。

Vim 在许多人心目中是装13神器,至于是不是这样也只有用的人知道了。

Vim 家族中还有 gVim 和 VimTouch 等项目,Windows/*nix/OSX/Android 上都可以使用几乎相同的 Vim 配置对文件进行编辑。 (iOS 上有通过终端模拟器运行的 Vim 使用上较为不便)

现在的 Vim 已经走进了插件时代,本文将向您介绍 Vim 的基础配置和基础操作方法。

还有一件和 Vim 齐名的编辑器—— Emacs, 可以参见著名的 编辑器之战

使用 Emacs 前请把 Caps Lock 按键和 左 Ctrl 键位互换以保证您的肌肉组织不受到任何损害。

本文使用 Vim 编辑


安装

如果你使用的是 Linux 发行版,那么您可以通过各种包管理器方便的安装 Vim, 如 Fedora 使用 yum install vim,Ubuntu 使用 apt-get install vim 这样依次类推。

对于 Windows,个人建议配置 MinGW 环境后安装 Vim(具体方法自行 Google)或者直接使用 gVim。


基本使用 - 第壹节

使用 vimtutor 可以启动 Vim 自带的交互式 Tutorial 文本, 推荐先看(zuo)一次 Tutorial 来熟悉编辑环境(那样的话就可以跳过本节了呢~)

Vim Tutor

请已经熟悉本节的您跳过 基本使用

如果您未安装 Vim,可以配合使用 Cloud Vi 阅读本节。

终端下使用 vim <filename> 打开一个已存在的文件, 也可以直接 vim 进入 Vim 编辑器。

Vim 编辑器有明确的 编辑状态移动状态,默认是在移动状态下的, 此时可以通过 j k 进行上下移动 h l 进行左右移动。 (可能需要适应一段时间,但确实是十分方便的设定)

需要大幅度翻页的情况下可以使用 Ctrl + U Ctrl + D 上下翻页 (后文简写为<C-U> <C-D> 的形式,其他快捷键以此类推)

移动命令还有很多

  • $ 移动到行尾
  • 0 移动到行首
  • ^ 移动到本行内容开始处(不计行首的空白符)
  • w 移动到下一个词的词首
  • e 移动到光标下单词词尾
  • b 移动到光标下单词词首
  • % 移动到与当前光标下括号相匹配的括号(代码段跳转)
  • gg 移动到文件开头
  • G 移动到文件结尾

那么如何插入内容?在需要内容插入的位置按下 i, 出现 --INSERT-- 标识时即进入插入状态,此时就可以输入文本了。

进入 Insert 状态插入文本

完成文本的输入以后按 Esc 退回到原来的状态 (不确认在什么状态下的时候可以多按几下 Esc)。

还可以使用 a 可以从当前光标后进入插入状态,A 则从当前行尾进入插入状态。

Vim 还有一些用于编辑的命令(移动状态)

  • o 在本行下方新开一行进入插入状态
  • O 在本行上方新开一行进入插入状态
  • x 删除当前光标下的字符
  • dd 删除当前行(包括行尾)
  • r 替换当前光标下的字符为下一个输入的字符
  • R 进入 替换(REPLACE) 模式

那么编辑完成以后使用 :w <filename> 保存文件 (此处 <filename> 是可选的,如忽略则写入当前打开的文件)

使用 :q 退出 Vim 编辑器,没有保存更改的情况下 Vim 会提醒保存, 放弃更改可使用 :q! 强制退出编辑器。 使用 ZZ 直接保存并退出,相当于 :wq

另外一些非常有用的指令

  • u 撤销 (Undo) 最后的编辑
  • <C-R> 重做 (Redo)
  • yy 复制当前行,dd 在删除行的同时也会将被删除的内容放入剪贴板
  • p 粘贴到光标后
  • P 粘贴到光标前
  • cc 更改当前行(先删除当前行内容,然后进入插入状态)
  • . 重复执行上一个编辑命令

Vim 的学习曲线还是比较平的,可以先使用最笨的方法完成编辑, 等到习惯了已经掌握的操作以后自然去学习其他的操作就可以了, 也有一种状况是写东西的时候无意碰出了什么功能然后就顺手学学, 无论怎么样,切忌一口吃成胖子

突然吃了这么一大口看起来也有必要消化一下了~

练手

  1. 新建一个文本(连续使用 dd 把原来的文本删干净吧!)
  2. 输入一些多行文本

    Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems. Vim is distributed free as charityware. If you find Vim a useful addition to your life please consider helping needy children in Uganda.

  3. 使用 j k 在多行文本间上下移动光标

  4. 使用 w 移动光标到下一个词
  5. 使用 b 移动光标到词首
  6. 使用 gg 回到文章头部
  7. 使用 dd 删除第一行
  8. 使用 u 撤销上次编辑
  9. 使用 :w xxx 把文本保存到文件中
  10. 使用 /to 在文章中查找单词 “to”
  11. 使用 n N 移动到上一处/下一处匹配到的位置

基本使用 - 第贰节

接下来是稍微复杂一点的编辑命令(复合指令)和查找/替换。

上一节中吃掉的所有编辑指令都是可以带有 数词 的, 比如, 15iPark<Esc> 会一次插入 15 个 Park3dd 会删除 3 行; 10x 会删除 10 个字符。

gg 比较特殊,25gg 会跳到文件的第 25 行。

Vim 命令还支持范围操作,所有的移动指令都可以用于范围指定。 比如, dw 从当前光标开始删除一个单词; y$ 从当前光标开始复制到行尾; d% 删除当前光标括号到对应括号之间的内容。

另外还有一种更高级的指定范围的方法 —— VISUAL 模式

v 进入 VISUAL 模式(<C-V> 进入列选 VISUAL 模式) 可以通过移动指令操作光标,选定部分区域之后再输入对应的命令就可以执行操作了。 比如,veeed 相当于 3dw

Visual 模式

Vim 除了这些可以方便使用的命令之外还有以 : 开头的扩展命令。 比如,:set 用于设置 Vim 环境;:w 保存文件这样的。

查找/替换 是非常常用的功能

  • * 搜索当前光标下的单词
  • / 搜索指定文本(支持正则表达式)

    /something<Enter> 查找 ”something“

  • n 下一处匹配

  • N 上一处匹配
  • f 查找下一个输入的字符
  • F 查找上一个输入的字符
  • :s 替换

    :s/apple/rabbit/g 替换 当前行内 所有 apple 到 rabbit; :%s/rabbit/neko/g 替换 文件内 所有 rabbit 到 neko

    :<scope>s<d><search><d><replace><d><options>

    <d> 可以是任何字符用于分隔参数(习惯上用 @ 因为不容易在文字中出现), <search> 可以是正则表达式或者单纯的文本。

自己 练练手 吧!(其实是写累了……)


基本使用 - 附加

文档

使用 :help <关键字> 来查看 Vim 的内置文档吧。

Vim 的文档还是非常全面可靠的(有中文版的,还内置了 Tutorial)

剪贴板

Vim 内的剪贴板有许多的存储区,使用 "ayy 将本行内容复制进存储区 a"ap 则粘贴 a 存储区内的内容到光标后的位置。

在 gVim 里的 INSERT 模式下是支持 Ctrl + C 复制和 Ctrl + V 粘贴的, Vim 设定了指向系统剪贴板的名字,在移动状态下使用 "*yy 即将当前行复制进系统剪贴板,"*p 将系统剪贴板内容粘贴到当前光标后。

参考

更多的基础内容请参阅 Vim 参考手册

用什么奇技淫巧?请参阅 Vim Tips Wiki


环境设定

下面列出一点常见的设置

  • set nu 打开行号显示,set nonu 关闭行号显示
  • set hls 启用高亮搜索(所有匹配的结果会以高亮显示)
  • set fencs=utf-8,ucs-bom,gbk,shift-jis 设置自动编码检测的优先级 (支持 GBK 文件)
  • set mouse=a 启用鼠标(终端支持指针设备)

在 Vim 运行时需要在这些命令前面加上 ::set nonu

如果需要经常使用这些配置,请将这些命令存储到 .vimrc 或者 .gvimrc 文件内,这样每次启动 Vim 或者 gVim 就会自动应用这些设置了。

PS: .vimrc 是一个使用 VimL 编写的脚本文件

更多 Vim 内置的设定请参阅 :help


插件

这里的介绍比较简单,更多插件管理的内容请移步 最终兵器的制造方法(管理 Vim 插件)

If you don’t use Pathogen, you’re not a real Vim user.

在许多 Vim 插件的 README 都看到了这样的话语。于是我也用了 pathogen

Vim 的插件系统还是比较复杂的,有了 pathogen 以后, 只需要使用 Git 操作,插件管理就变得轻松简单了。

以 Submodule 的形式管理各种各样的 Vim 插件, 可以通过插件集成大多数开发所需要的服务。

将自己的 Vim 配置提交到 Github 就可以在任何地方同步自己的工作环境, 配置漫游搞起~切利哦!

同步 vimrc

cd ~/.vim
git init
git remote add origin https://github.com/shinohane/vimrc.git
git pull origin master 
git submodule init
git submodule update
ln -sf ~/.vim/vimrc ~/.vimrc

添加一个插件

cd ~/.vim
git submodule add <Repository>

下一篇文章分享常用的一些 Vim 插件,敬请期待。

评论
发表评论
4年前

@Junyue Cao 有代码写的话……一天应该也够了……(其实是写文章的技术不好……只能罗列出来了……

4年前

这么多快捷键也得用很久才能记熟

4年前

顶起

4年前

好厉害 顶

WRITTEN BY
羽音篠之
People die if they do
TA的新浪微博
PUBLISHED IN
编辑器

工欲善其事,必先利其器

我的收藏