在这一次的学习中我们会介绍一些更多的关于缩写和键盘映射的问题.
我们在编辑的过程中可以用:abbreviate命令来设置一个缩写,那么我们如何来移除一个缩写呢?我们可以用命令:unabbreviate来移除一个缩写.例如我们用下面的命令来设置一个缩写:
:abbreviate @a fresh
如果我们要移除这个缩写我们可以用下面的命令:
:unabbreviate fresh
如果我们要清除所有的缩写,我们可以用下面的命令:
:abclear
我们用上面的命令定义的缩写可以正常的工作在插入模式和命令行模式两种状态下.如果我们是在文本中输入@a,他就会扩展为fresh,而如果我们在:命令行中输入@a,他也可以扩展成为fresh.如果我们要定义一个只工作在插模式下的缩写,我们可以用这样的命令:
:iabbreviate @a fresh
这也就是说如果我们在命令行输入@a,那么他仅是@a,而不会扩展为fresh.如果要取消一个插入模式的缩定义,我们可以用下面的命令:
:iunabbreviate @a
同样的我们可以用下面的命令来清除所有的插入模式的缩写定义:
:iabclear
相类似的,如果我们要定义一个只在命令行模式下工作的缩写,我们可以用命令:cabbreviate来完成,而取消这个定义的命令为:cunabbreviate,如果要清除所有的缩写列表,我们可以用下面的命令:
:cabclear
如果我们要列出所有的缩定,我们可以用下面的命令:
:abbreviate
在这个命令的执行结果第一列显示出缩写的类型,标记如下:
c 命令行模式
i 插入模式
! 两种模式均可
CTRL-C命令可以使得Vim离开插模式.这个命令与<Esc>命令的不同之处就在于在回到正常状态的过程中并不会检查一个缩写.
map命令可以使得我们将一定的模式与键盘对应起来.例如如果我们要使用F5来复制来选中的文本到寄存器v中,我们可以用下面的命令来定义:
:map <F5>"vy
这样的定义的F5在正常以及可视模式下都可以使用.但是也许我们真正希望的是只在可视模式下来使用这个命令,这时我们可以用下面的命令来进行定义:
:vmap <F5>"vy
这里的v是告诉Vim这样定义的命令是只在可视模式下使用.
如下面的列表:
Command Normal Visual Operator Pending Insert Command Line
命令 正常 可视 运算符延伸 插入 命令行
:map y y y
:nmap y
:vmap y
:omap y
:map! y y
:imap y
:cmap y
现在假如我们要定义<F7>以使得命令d<F7>可以删除C程序的文本块.与此相类似的,y<F7>可以将程序块复制到未命名寄存器中.所以我们要做就是要傅F7来选择当前的文本块.我们可以使用下面的命令:
:omap <F7>a{
这个命令会使得<F7>在operator-pending模式下选择文本块.有了这样的映射,当我们输入d<F7>命令中的d时,我们就进入了operator-pending模式.然后执行命令<F7>就可以地命令a{了,这样我就可以选择文本块了.因为我们执行了d命令,所以这个文本块被删除了.
其他的一些映射命令如下:
:map lhs rhs
这个是将lsh映射到rhs,所以当我们按下lhs时我们实际上执行的是rhs
如下面的映射命令:
:map ^A dd
:map ^B ^A
执行了这样的命令以后,当我们输入CTRL-A时Vim会删除一行.而CTRL-B也会是同样的作用.当我们使用控制字符时,我们必须用CTRL-V来引用他.换句话说如果我们要达到:map ^A dd的目的,我们就可以用下面的命令来完成:
:map CTRL-VCTRL-A dd
(似乎这个命令这样的做是不成的)
如果我们要重新映射,我们可以使用命令:noremap,例如:
:noremap lhs rhs
如果我们要取消一个映射,可以使用:unmap命令,如:
:unmap lhs
如果我们取消所有的映射,我们可以使用命令:
:mapclear
但是我们在使用这个命令时要注意,因为这个命令也会移除所有我们自定的默认映射.
如果我们要列出所有的映射,我们可以用下面的命令:
:map
第一列的标记指明了这样的映射可以在哪一种模式下工作:
字符 模式
<space> 正常,可视,运算符(operator-pending)
n 正常
v 可视
o operator-pending
! 插入和命令模式
i 插入模式
c 命令模式
第二列指出各种lhs的任何映射.第三列是rhs的映射值.如果rhs是以*开头的,那么这个rhs是不可以重新映射的.
:map命令可以列出所有的映射,而:map!只列出插入和命令行模式的映射.而:imap,:vmap,:omap,:nmap命令只是列出指定模式的映射.在默认的情况下,Vim允许循环映射,要关掉这个特征,可以执行下面的命令:
:set noremap
如果我们执行下面的命令:
:abbreviate @a ad
:imap ad adder
这样当我们输入@a时,字符ad会被插入,然而ad又映射到插入模式的字符串adder,所以字符串adder会被插入到文本中.如果我们使用用命令:noreabbrev就可以避免这样的问题.
分享到:
相关推荐
学习使用Vi编辑器建立、编辑、显示及加工处理文本,并了解Vi编辑器在Linux系统中的重要性。 二、实验内容 1. 进入和退出Vi 2. 利用文本插入方式建立一个文件 3. 在新建的文本文件上移动光标位置 4. 对文件执行删除...
"学习使用 vi 编辑器" 在 Linux 操作系统中,vi 编辑器是一个功能强大且广泛使用的文本编辑器。学习使用 vi 编辑器可以提高用户的工作效率和编程能力。下面是学习使用 vi 编辑器的一些知识点: 实验目的 * 练习 ...
vi编辑器的学习曲线可能较陡峭,但一旦掌握,就能大大提高文本编辑效率,尤其是在系统管理和服务器维护等场景下,它的强大功能和高效操作将为你带来极大的便利。尽管现代有许多图形化编辑器,但vi作为基础工具,对于...
### vi编辑器的使用(一)笔记 #### 一、vi编辑器的三种模式及其切换命令 vi编辑器是Linux中最基本也是最强大的文本编辑工具之一,在系统管理和服务器配置方面有着不可替代的作用。掌握vi编辑器的基本操作对于任何...
《学习vi和Vim编辑器(中文版第7版)》将说明使用这两种程序编辑文档的基础技巧,并讨论高级工具,例如交互式宏与扩展编辑器的脚本——我们的内容编写成容易遵循步骤操作的风格,成就本书的经典地位。读者将学到: ·...
Linux下的vi编辑器是一款强大的文本编辑工具,它具备丰富的文本操作功能,允许用户根据个人需求进行定制。vi编辑器的特点在于它不包含图形界面菜单,而是通过命令模式进行操作,分为命令模式、插入模式和末行模式三...
对于初学者来说,理解并熟练使用`.vimrc`文件是一个重要的里程碑,它标志着你对Vi编辑器的使用进入了一个新的层次。不断探索和优化你的配置,你会发现Vi不仅是一个工具,更是一种高效的工作方式。
通过这本书,读者可以深入学习vi编辑器,掌握文本编辑的高效技巧,无论是进行日志分析、系统配置还是代码编写,vi编辑器都能提供强大而灵活的文本处理能力。而对于Linux公社(***)提供的信息,尽管它在书中被重复...
### Linux操作系统实验vi编辑器的使用 #### 实验目的 本次实验旨在使学习者能够熟练地运用Linux系统中的vi编辑器进行文本编辑工作。通过实际操作掌握以下技能: 1. **掌握Linux系统的vi编辑器的基本操作**:了解vi...
本文是针对初学Unix Vi编辑器的网友的,而文后所付的详尽的命令表也可作为已经熟练使用vi的网友的参考之用, 因此你最好下载本文或打印本文然后对照实践学习。 编辑器是使用计算机的重要工具之一,在各种操作系统...
### VI编辑器的使用知识点详解 #### 一、VI编辑器简介及启动与退出 **VI编辑器** 是一种在Unix及其衍生系统中广泛使用的文本编辑器,它以功能强大著称,尤其受到Linux用户的喜爱。尽管现代有许多图形界面的编辑器...
总的来说,"WinVi32.exe"为Windows用户提供了在熟悉的环境中使用VI编辑器的可能性,使得跨平台开发变得更加便捷。对于习惯于VI编辑器的开发者来说,无论是在Linux还是Windows系统下,都能保持一致的工作流程,提高...
但是,用户需要花一些时间来学习和熟悉 vi 编辑器的命令和模式,以便更好地使用 vi 编辑器。 知识点: 1. vi 编辑器是一种功能强大的屏幕编辑器,提供了一个视窗设备,通过它可以编辑文件。 2. vi 编辑器有三个...
**一、vi编辑器简介** vi(Visual Editor)是Linux/Unix系统下的一款强大的文本编辑器,它以其简洁高效的操作方式深受程序员和系统管理员的喜爱。vi的名字来源于“Visual”首字母,但在无图形界面的终端环境下,它更...