原文:http://vimcdoc.sourceforge.net/

文章目录

    • 词移动
    • 移动到一个指定的字符
    • 括号匹配
    • 移动指定行
    • 滚屏
    • 搜索
    • 简答的查找模式
      • 匹配特殊字符
    • 标记
    • 其它
    • 操作符
    • 可视模式
      • 按行选择
      • 列块选择
    • 移动文本
      • 拷贝文本
      • 替换模式
    • 小结
  • `vimrc` 实例解释
    • 简单的键盘映射
    • VIM 插件
      • 选项窗口
      • 显 示 TAB 键
    • 编辑多个文件
      • 文件列表
      • 文 件 标 记
      • 使 用 寄 存 器
      • 显示文件
    • 分隔窗口
      • 关 闭 窗 口
      • 关 闭 所 有 其 它 窗 口
      • 用另一个文件分割窗口
      • 窗口大小
      • 垂直分割
      • 在 窗 口 间 跳 转
      • 移动窗口
      • 用 vimdiff 显示文件差异
      • 标签页
  • 可视列块模式
      • 插 入 文 本
      • 修 改 文 本
      • 以 一 个 字 符 填 充
    • 查找文件
    • 加密
    • 补 全 源 代 码

:help turor进入中文教程。

  1. 在VIM 中你可以使用 J来把两行连起来。意味着删去两行之间的空格。
  2. dw to make the word disappear
  3. d$ to delete to the end of the line.
  4. 指定计数
    1. 向上移动9行,可以输入 kkkkkkkkk也可以使用9k来代替
    2. 也可以在很多命令前面加数字,计数9代表的是将后面的命令执行多少次。比如3x代表删除3个字符。
    3. 计数总放到要处理命令的前面
  5. 如果放弃修改后还想重新编辑,使用e!来重新加载文件

词移动

  1. w移到下一个单词的词头,b移动到上一个单词的词头。

  2. e移动到下一个单词的词末,ge移动到上一个单词的词末。

  3. 大写字母可以用来移动字符串。而不是一个单词。

    [外链图片转存失败(img-jOLgRfaB-1568813927681)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1568298376329.png)]

移动到一个指定的字符

  1. 本行字符查找命令 fx,f:查找命令,x:待查找的字符
  2. 3fl表示,查找本行中第三次出现字符l的位置
  3. f表示向右查找,F表示向左查找。

括号匹配

%跳转到对应()[]{}的位置

移动指定行

33G跳转到指定行

50%移动到文件的中间

99%移动到文件的尾部

滚屏

当使用j向下滚动时,光标是在底部的,如果希望光标在中间可以使用zz,对应的光标在底部zb,顶部zt

搜索

使用/来启动查找对应的字符串。查找方式是正向查找。

使用?为反向查找。

N查找下一个匹配对象。

简答的查找模式

^ 匹配行头

$匹配行末

.匹配任意单个字符,比如c.m,将匹配。“com became cumin”

匹配特殊字符

如果你想匹配点字符。可以在.前添加一个\进行转义。eg: ter\.

标记

自定义标记位置,使用m+[a-z],二十六个字母。来标记26个位置。eg:ma,标记当前位置。使用``a`,跳转到这位置。

使用:marks,来查看当前标记列表。当然有一些特殊标记。

你会注意到有一些特殊的标记,包括:

   '       跳转前的光标位置"       最后编辑的光标位置[       最后修改的开始位置]       最后修改的结束位置

其它

使用:edit + 文件名,在当前vim窗口中编辑文件


操作符

操作符+动作:首先输入一个操作符命令,然后再附加一个动作命令。d$

另一个操作符c,单独一个c,没有什么作用。如果是cw的作用则是,删除光标所在的一个单词。如果光标在空格上,则会删除一个空格。并进入输入模式。比如:cc,删除一整行并进入输入模式。c$,删除当前行到末尾,并进入输入模式。等同于d$a

.重复一个修改,它重复最后一个修改工作。

dw命令为删除一个单词。dfm表示删除一个单词中所有的mf意味的查找。dfm意味着删除当前单词中所有找到的m

可视模式

按行选择

使用V进入可视模式。使用Vjj,选中三行内容。

列块选择

CTRL-V启用列块模式。

移动文本

当使用d,x命令删除的字符

拷贝文本

关键字为y,对应的配合有yw,yy,y$

替换模式

R会进行替换模式,你输入的每一个字符都会替换当前光标上的字符。直到Esc,退出这个模式

雷同于Insert按键,当你使用BackSpace按键时,原来被替换的字符又回来了。

小结

[外链图片转存失败(img-d35KGIOV-1568813927683)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1568534405393.png)]

vimrc 实例解释

  1. 文件类型探测

  2. 使用文件类型相关的插件

  3. 使用缩进文件

    autocmd FileType text setlocal textwidth=78

    autocmd FileType text 定义自动命令,表示当文件类型被设置为text时,后面的命令自动执行。textwidth选项为78,表示在一行长于 78 个字符的时候自动换行。

简单的键盘映射

映射可以把你一系列的VIM命令绑定为一个单独的按键。假设你要用一个大括号将一个特定的单词括起来。例如,将“amount”变成“{amount}”。用“:map”命令,就可以让F5来完成这个动作。命令如下:

map <F5> i{<Esc>ea}<Esc>

分解一下命令:

<F5>        F5 功能键。这是命令的触发器。当这个键被按下时,相应的命令即被执行。i{<Esc>     插入 { 字符。<Esc> 键用于退出插入模式。e           移动到词尾。a}<Esc>     插入 } 到单词尾。

执行 “:map” 命令后,要在单词两端加上 {},只需要移到单词的第一个字符上并按 F5。

在这个例子中,触发器是单独一个键;它还可以是任何字符串。但若你使用一个已经存在
的 Vim 命令,该命令将不再有效。最好避免出现这种情况。
一个可用于映射的键是反斜杠。因为你很可能想定义多个映射,那就加上另一个字
符。你可以映射 “\p” 为在单词两端加圆括号,而映射 “\c” 为加花括号,例如:

    :map \p i(<Esc>ea)<Esc>:map \c i{<Esc>ea}<Esc>

你需要在敲入 \ 后,立即敲入 p,以便 Vim 知道它们组成一个命令。

VIM 插件

选项窗口

如果要找一个选项,你可以在这里寻找帮助:options。另一个方法是用如下命令:

    :options

这会打开一个新窗口,其中给出一个选项的列表,并对每个选项提供一行解释。这些选项
根据种类分组。将光标移到一个主题上然后按 就可以跳转到那里。再按一下
或者 CTRL-O 就可以跳回来。

你可以通过这个窗口改变一个选项的值。例如,移到 “displaying text” 主题。然后把
光标下移到这一行:

    set wrap        nowrap

当你在上面键入回车,这行会改变为:

    set nowrap      wrap

现在,这个选项被关闭了。

这行的上方是对这个选项的简要描述。将光标向上移动一行,然后按 ,你可以跳
转到 ‘wrap’ 的完整帮助,再用 CTRL-O 可以跳回来。

对于那些值为数值或者字符串的选项,你可以编辑它的值,然后按 来启用该
值。例如,把光标移动到下面这行:

    set so=0

用 $ 移到行尾,再用 “r5” 命令修改为五,然后按 使修改生效。现在如果你移
动一下光标,你会发现在你的光标移到窗口边界前,你的文字就开始滚动了。这就是选项 ‘scrolloff’ 完成的功能:它指定在距离边界多远的地方开始滚动文字。

显 示 TAB 键

文件中有 TAB 键的时候,你是看不见的。要把它显示出来:

    :set list

现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字
符在哪里。
这样做的一个缺点是在有很多 TAB 的时候看起来很丑。如果你使用一个有颜色的终
端,或者使用 GUI 模式,Vim 可以用高亮显示空格和 TAB。使用 ‘listchars’ 选项:

    :set listchars=tab:>-,trail:-

现在,TAB 会被显示成 “>—” ("-" 的个数不定) 而行尾多余的空白字符显示成 “-”。
看起来好多了,是吧? 【个人感觉,超难看】

编辑多个文件

文件列表

你可以在启动 Vim 的时候指定一堆文件。例如:vim one.c two.c three.c

这个命令启动 Vim 并告诉它你要编辑三个文件。Vim 只显示第一个。等你编辑完第一个
以后,用如下命令可以编辑第二个::next

要回到前一个文件::previous

这个命令与 “:next” 相似,只不过它是向相反的方向移动。同样地,这个命令有一个快
捷版本用于 “保存再移动”::wprevious

要移动到列表中的最后一个文件: :last

而要移动到列表中的第一个文件: :first

你可以在 “:next” 和 “:previous” 前面加计数前缀。例如要向后跳两个文件::2next

现在你在 two.c。现在使用 CTRL-^ 回到 one.c。再按一下 CTRL-^ 则回到 two.c。又按
一下 CTRL-^ 你再回到 one.c。如果你现在执行::next

现在你在 three.c。注意 CTRL-^ 不会改变你在文件列表中的位置。只有 “:next” 和
“:previous” 才能做到这点。

你编辑的前一个文件称为 “轮换” 文件。如果你启动 Vim 而 CTRL-^ 不起作用,那可能
是因为你没有轮换文件。

文 件 标 记

在第四章,我们介绍过使用 “mx” 命令在文件中增加标记,那只在一个文件中有效。如果
你编辑另一个文件并在那里加了标记,这些标记都是这个文件专用的。这样,每个文件都
有一个自己的标记集,并只能在该文件中使用。
到此为止,我们都用小写字母的标记。实际上还可以使用大写字母标记,这种标记是
全局的,它们可以在任何文件中使用。例如,你在编辑一个文件 “foo.txt”。在文件的中
间 (50%) 并建立一个 J 标记 (J 表示甲):

    50%mJ

现在编辑文件 “bar.txt” 并在文件的最后一行放一个标记 Y (Y 表示乙):

    GmY

现在你可以使用 “J" 命令跳回到 foo.txt 的中间。或者在另一个文件中输入 "Y” 跳
回到 bar.txt 的末尾。

文件标记会被一直记住直到被重新定义。这样,你可以在一个文件中留下一个标记,然后
任意做一段时间的编辑,最后用这个标记跳回去。
让文件标记符和对应的位置建立一些关系常常是很有用的。例如,用 H 表示头文件
(Head File),M 表示 Makefile 而 C 表示 C 的代码文件。

要知道一个标记在什么地方,在 “:marks” 命令中加上标记名作为参数即可:

    :marks

使 用 寄 存 器

当你需要拷贝一个文件的几个地方到另一个文件,用上面的方法,你就得反复在两个文件
间跳来跳去。要避免这种情况,你可以把不同的文本拷贝到不同的寄存器中。
寄存器是 Vim 用来保存文本的地方。这里我们使用名称为 a 到 z 的寄存器 (后面
我们会发现还有其它寄存器)。

先知道有这个玩意吧

显示文件

有时,你只是想查看一个文件,而没打算修改它。有一个风险是你想都没想就输入了一个
“w” 命令。要避免这个问题,以只读模式编辑这个文件。
要用只读模式启动 Vim,可以使用这个命令:vim -R file

在 Unix,如下命令可以完成相同的功能:view file

现在,你就在用只读模式阅读这个文件 “file” 了。但你执行 “:w” 命令的时候,你会得
到一个禁止写入的错误信息。
当你试图修改这个文件时,Vim 会给你一个告警提示:

W10: Warning: Changing a readonly file

即使这样,你的修改还是会被接纳的。有可能你只是想排列这些文本,以便阅读。
如果你确实要改动这个文件,在 write 命令前面加上 ! 可以强制写入。

如果你的确想禁止文件修改,用这个命令:vim -M file

分隔窗口

打开新窗口最简单的命令如下::split

这个命令把屏幕分解成两个窗口并把光标置于上面的窗口中

关 闭 窗 口

以下命令用于关闭窗口::close

实际上,任何退出编辑的命令都可以关闭窗口,象 “:quit” 和 “ZZ” 等。但 “close” 可
以避免你在剩下一个窗口的时候不小心退出 Vim 了。

关 闭 所 有 其 它 窗 口

如果你已经打开了一整套窗口,但现在只想编辑其中一个,如下命令可以完成这个功能::only

用另一个文件分割窗口

下面命令打开另一个窗口并用该窗口编辑另一个指定的文件:

    :split two.c

窗口大小

:split 命令可以接受计数前缀。如果指定了这个前缀,这个数将作为窗口的高度。例如
如下命令可以打开一个三行的窗口并编辑文件 alpha.c:

    :3split alpha.c

对于已经打开的窗口,你可以用有几种方法改变它的大小。如果你有鼠标,很简单:把鼠
标指针移到分割两个窗口的状态栏上,上下拖动即可。

要扩大窗口CTRL-W +
要缩小窗口:CTRL-W -

这两个命令接受计数前缀用于指定扩大和缩小的行数。所以 “4 CTRL-W +” 会使窗口增高
4 行。

垂直分割

“:split” 命令在当前窗口的上面建立窗口。要在窗口左边打开新窗口,用这个命令 :vsplit或者 :vsplit two.c

在 窗 口 间 跳 转

由于你可以用垂直分割和水平分割命令打开任意多的窗口,你就能够任意设置窗口的布
局。接着,你可以用下面的命令在窗口之间跳转:

   CTRL-W h        跳转到左边的窗口

CTRL-W j 跳转到下面的窗口
CTRL-W k 跳转到上面的窗口
CTRL-W l 跳转到右边的窗口
CTRL-W t 跳转到最顶上的窗口
CTRL-W b 跳转到最底下的窗口

你可能已经注意到这里使用移动光标一样的命令用于跳转窗口。如果你喜欢,改用方向
键也行。

移动窗口

CTRL-W H 把当前窗口移到最左边

CTRL-W J 把当前窗口移到最下边

CTRL-W L 把当前窗口移到最右边

用 vimdiff 显示文件差异

有一种特殊的启动 Vim 的方法可以用来显示两个文件的差异。让我们打开一个 “main.c”
并插入一些字符。在设置了 ‘backup’ 选项的情况下保存这个文件,以便产生 “main.c~”
备份文件。
在命令行中输入如下命令:(不是在 Vim 中)

    vimdiff main.c~ main.c

Vim 会用垂直分割的方式打开两个文件。你只能看到你修改过的地方和上下几行的地方。

标签页

你会注意到窗口永远不会重叠。这意味着屏幕空间很快会用完。这个问题的解决方法叫做
标签页。

假设你正在编辑文件 “thisfile”。下面的命令可以建立新的标签页:

    :tabedit thatfile

这会在一个窗口中编辑文件 “thatfile”,这个窗口会占满整个 Vim 窗口

你可以通过单击顶端的标签切换标签页。如果没有鼠标或者不想用它,可以使用 “gt” 命
令。助记符:Goto Tab。

在任何打开窗口的 Ex 命令前面,你都可以放上 “:tab”。这个窗口在新标签页中打开。
另一个例子:

    :tab help gt

它将在新的标签页中显示关于 “gt” 的帮助。

使用标签页可以完成更多的工作:

  • 在末尾标签后面的空白处单击鼠标
    选择下个标签页,同 “gt”。

  • 在右上角的 “X” 处单击鼠标
    关闭当前标签页,除非当前标签页中的改变没有保存。

  • 在标签行上双击鼠标
    建立新标签页。

  • “tabonly” 命令
    关闭除了当前标签页以外的所有标签页,除非其它标签页中的改变没有保存。

可视列块模式

插 入 文 本

你用 CTRL-V 进入可视列块模式,然后移动光标定义一个列块。接着输入 I 进入插入模式,并随后输入文
本。这时,你输入的内容只出现在第一行。 然后你输入 结束输入,刚才输入的字符串将神奇地出现在每一行的可视区的左边。

如果选中的块经过一个短行,并且这行没有任何内容包括在可视列块中,则新的文本不会
被插入到该行中。如下。

This is a long line
short
Any other long line^^^^ 用可视列块选中的部分

“A” 命令的效果与 “I” 命令一样,只是把文字插入可视列块的右边,而且在短行中会插
入文字。

修 改 文 本

可视列块中的 “c” 命令会删除整个可视列块并转入 “插入” 模式,使你可以开始文本,
这些文本会被插入可视列块经过的每一行。

与 “I” 命令一样,短行不会发生变化。

以 一 个 字 符 填 充

要以某一个字符完全填充整个块,可以使用 “r” 命令。再次选中上例中的文本,然后键
入 “rx”:

查找文件

假定现在你在编辑一个 C 程序,该程序有这样7行:

#include “inits.h”

你想要查看文件 “inits.h” 里有些什么。把光标移到该文件名上,并键入:

gf

Vim 就会找到并打当这个文件。

那么,如果该文件不在当前目录里怎么办?Vim 将利用 ’path’ 选项来寻找这个文

件。该选项是/系列目录名,Vim 会在其中为你寻找文件。

假设你把你的头文件存放在目录 “c:/prog/include” 里。下面这个命令把该目录加入

’path’ 选项:

:set path+=c:/prog/include

这个目录名是/绝对路径。不管你在哪儿,它都指向同 目录。如果你已经知道要编辑的

文件位于当前文件所在目录下某个子目录里,你该怎么办呢?那样的话,你可以指定一个

相对路径。相对路径以 “.” " 始:

加密

有些信息你希望保留给自己。例如,当你在计算机上写一份给学生用的试卷。你不会愿意

在考试开始之前给聪明的学生琢磨出偷阅试题的方法。Vim 能为你给文件加密,为你

提供一些保护。

要开始编辑一个* 要加密的新文件,可以用 “-x” 参数来启动 Vim。例如:

vim -x exam.txt

Vim 提示你确定一个密码,用于为文件加密和解密:

如果你试图用另一个程序来阅读这个文件,你将读到丰堆垃圾。如果你用 Vim 来编辑

这个文件,但输入了错误的密码,但是可以编辑这个文本。

补 全 源 代 码

源代码文件有良好的结构。这使通过某种智能方式补全成为可能。在 Vim 中,这被称为

全能补全。在其他编辑器中,它被称为智能补全(intellisense),但这是一个注册商标。

全能补全的热键是 CTRL-X CTRL-O。显然,O 在这里代表全能 (Omni),这样方便我们记

忆。让我们以编辑 C 程序为例:

*{* ~struct foo *p; ~p-*>* ~`

光标在 “p->” 之后。现在键入 CTRL-X CTRL-O

为使全能补全工作, 要做一些初始化。起码,要保证打当文件类型插件。你的 vimrc

文件应该包含形如:

filetype plugin on

或:

filetype plugin indent on

VIM 教程文档的学习相关推荐

  1. ps免费学习资料,教程文档

    ps免费学习资料,教程文档 马上扫码关注公众号 发送"ps文档" 获取免费资料吧!

  2. Intel技术教程文档【持续更新】

    基于英特尔架构的AI与HPC融合应用实践 [教程地址] OpenVINO工具介绍与PaddleX高性能工业质检方案实践 [教程地址] Intel 边缘计算云开发平台 & 英特尔功能介绍与案例分 ...

  3. webpack搭建vue项目开发环境【文档向学习】

    为何有这篇文章 各个社区已经有无数篇帖子介绍如何使用webpack搭建前端项目,但无论是出于学习webpack的目的还是为了解决工作实际需要都面临着一个现实问题,那就是版本更新.别人的帖子可能刚写好版 ...

  4. 【转】(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration

    原创至上,移步请戳:(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration 5.Animation Integration(动画集成) 动画 ...

  5. jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档。

    jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档. jquery.cookie中的操作: jquery.cookie.js是一个基于jquer ...

  6. atitit.微信支付的教程文档 attilax总结

    atitit.微信支付的教程文档 attilax总结 1. 支付流程概览 1 2. 设置支付起始目录   host/app/paydir/ 1 3. 设置oauth验证域名 1 4. 测试目录 可以使 ...

  7. 【转】(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components

    原创至上,移步请戳:(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components 4.Interaction Components 本节涵盖了处 ...

  8. vim 写文档 (自身功能tags, txt2tags生成网页pdf等)

    Table of Contents Vim进阶索引[7]::TAGS 1 基本的tags用法 2 tags文件格式 3 相关命令 4 tags进阶 4.1 编写/转换为Vim文档 4.2 exuber ...

  9. VIM快速文档整理技巧

    VIM整理文档具有非常好的效果,我最近由于开发的需要,在网上收集了大量有关中中医的文章,需要整理优化调整成需要的格式,存入数据库中供前端调用.使用过WORD,excel等工具都不尽如意,后来使用VIM ...

最新文章

  1. struts2的文件上传和文件下载
  2. 解决push的时候有时候会卡一下的问题
  3. javascript中使用重载
  4. bzoj3714:[PA2014]Kuglarz
  5. alert中添加表格_Excel设置表格边框的几种方法,还有自动添加边框哟
  6. java中白盒测试用例_基于JAVA开发的中国象棋游戏的开发与研究白盒测试用例.doc...
  7. webpack2 实践系列(二)— entry 和 output
  8. Apache Maven 3.0.3 (yum) 安裝 (CentOS 6.4 x64)
  9. jenkins插件更换源_jenkins快速入门,自动构建一个hello world项目(devops,ci/cd)
  10. Windows 8 Directx 开发学习笔记(十)纹理贴图实现旋转的木箱
  11. HDU4508 完全背包
  12. hdu 1233还是畅通工程 最小生成树(入门题)prim算法
  13. [译]记一次Kotlin官方文档翻译的PR(内联类)
  14. Kettle 添加备注
  15. php远程下载头像,Laravel 项目中 远程把图片下载到本地
  16. STM32F207核心版的LwIP例程的心得
  17. matlab演奏《起风了》代码
  18. 解决问题:ImportError: The 'enchant' C library was not found. Please install it via your OS package manag
  19. 元神一直显示连接服务器失败,原神连接服务器失败怎么办
  20. 性价比很高的三款ePUB阅读器(转载)

热门文章

  1. 今年的 WWDC 2017 为我们带来了什么?
  2. 华为机试HJ53:杨辉三角的变形
  3. 2021-10-09 将多张电子发票pdf合并成一个pdf文件
  4. 微信小程序语音识别、语音合成(微信同声传译)使用代码实例
  5. Java微信语音amr格式转mp3格式
  6. Cesium|xt3d旋转椎体
  7. 基于单片机技术的自动停车器的设计
  8. 第3章 Linux系统介绍与虚拟环境的准备
  9. CDH FAILED: SemanticException 81:5 Schema of both sides of union should match:
  10. 如何用python做表_如何使用Python中的Tkinter制作钟表?