×

vi 命令手册

vi/vim 命令大全

vim 命令手册

Vim 关于Vim 安装Vim 用法Vim 配置vim 配置.vimrc方案vim 配置.vimrc方案1vim 配置.vimrc方案2Vim 文件合并Vim 技巧和建议Vim 插件Vim 参阅

Vimscript 编程参考

Vimscript 前言Vimscript 鸣谢Vimscript 预备知识Vimscript 打印信息Vimscript 设置选项Vimscript 基本映射Vimscript 模式映射Vimscript 精确映射Vimscript LeadersVimscript 编辑你的Vimrc文件Vimscript AbbreviationsVimscript 更多的MappingsVimscript 锻炼你的手指本地缓冲区的设置和映射Vimscript 自动命令Vimscript 本地缓冲区缩写Vimscript 自动命令组Operator-Pending 映射Operator-Pending 更多映射Vimscript 状态条Vimscript 负责任的编码Vimscript 变量Vimscript 变量作用域Vimscript 条件语句Vimscript 比较Vimscript 函数Vimscript 函数参数Vimscript 数字Vimscript 字符串Vimscript 字符串函数Vimscript Execute命令Vimscript Normal命令Vimscript 执行normal!Vimscript 基本的正则表达式Grep 运算符Operator 第1部分Grep 运算符Operator 第2部分Grep 运算符Operator 第3部分Vimscript 列表Vimscript 循环Vimscript 字典Vimscript 切换Vimscript 函数式编程Vimscript 路径Vimscript 创建一个完整的插件Vimscript 基本插件配置方式用Pathogen配置插件Vimscript 检测文件类型Vimscript 基本语法高亮Vimscript 高级语法高亮Vimscript 基本折叠Vimscript 高级折叠Vimscript 段移动原理Vimscript Potion段移动Vimscript 外部命令Vimscript 自动加载Vimscript 文档Vimscript 发布Vimscript 还剩下什么?

Vimscript 模式映射


上一章中我们谈论了如何在Vim中映射按键。我们使用的命令map在normal模式下工作。 如果阅读本章之前你自己已经折腾了,可能会注意到这个映射在visual模式一样工作。

你可以使用nmapvmapimap命令分别指定映射仅在normal、visual、insert模式有效。

执行如下命令:

:nmap  dd

在normal模式下,按下。Vim会删除当前行。

现在进入Visual模式,再次按下。什么都不会发生,因为我们告诉了Vim这个映射仅在normal 模式下工作(同时的默认行为是什么都不做)。

运行如下命令:

:vmap  U

进入visual模式并选中一些文字,按下。Vim将把选中文本转换成大写格式。

分别在normal模式和visual模式测试按键,注意不同模式下的效应。

增强记忆

起初,将同样的按键根据当前模式的不同映射到不同的功能听起来很可怕。为什么每次按下 那个键之前都要停下想想我们现在是在什么模式?那样是不是更浪费时间?

实践中我们发现那真不是个问题。一旦你经常使用Vim,你就不会在意你按下的键了。 你会想“删除一行”,而不是“按`dd·”。你的手指和大脑都会记住你的映射,潜意识中你就会 按下那些映射按键。

insert模式

现在我们已经知道如何在normal模式和visual模式下映射按键。现在我们谈谈insert模式下的 映射方法。运行如下命令:

:imap  dd

你可能猜想这个命令的作用是在insert模式下通过按键Ctrl+d删除整行。这个映射很实用, 因为你不必每次都要为了删除某些行而切回到normal模式。

好的我们试一下。它并不如我们想象那般工作,而仅仅是在文件中添加了两个d字符! 它压根就没用。

问题就在于Vim只按我们说的做。这个例子中,我们说:“当我按下时,相当于我 按了两次d”。而当你在insert模式下,按下两次d的作用就是输入两个字符d

要想让这个映射按我们的期望执行,我们需要更加明确的指令。修改映射并运行如下命令:

:imap  dd

告诉Vim按下ESC按键,即退出insert模式。

现在再试试这个映射。它能够正常工作,但是注意你是如何回到normal模式的。这是因为我们 告诉Vim要退出insert模式并删除一行,但是我们没有告诉它再回到insert模式。

运行如下命令,修复映射问题:

:imap  ddi

结尾的i告诉Vim进入insert模式,至此我们的映射才最终完成。

练习

设置一个映射,当你在insert模式时,可以通过按下将当前光标所在的单词转换成 大写格式。每次我写一个类似MAX_CONNECTIONS_ALLOWED这样很长的常量时都能感觉到这个 映射的实用性。因为这样我就可以以小写的格式敲写常量,然后用这个映射将其转成大写, 不必一直需要按着shift键。

将那个映射添加上到你的~/.vimrc文件中。

设置一个映射,当你在 normal 模式时,可以通过按下将当前光标所在的单词转换成 大写格式。这个映射和上面那个有点区别,因为你必须要进入normal模式,也不需要结束时 切到insert模式。

将那个映射添加上到你的~/.vimrc文件中。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)