`
lantian_123
  • 浏览: 1370098 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

每日一Vim(12)ab与map命令

 
阅读更多

每日一Vim(12)ab与map命令

ab命令:

ab命令可以将一长串字符用缩写来定义,这有点象Linux中的alias,比如Linux中的ll命令就是ls -l的别名,ab的语法为:

:ab abbr phrase

abbr就是对phrase的简写,在insert 模式中,输入abbr,再按非字母字符(比如空格,点号等)Vim就自动把phrase插入到光标处位置。此情景一般用在频繁输入的字符中,通常建议abbr选择使用频率很低的字符,比如Eclipse常用的一个快捷键syso,你可以定义成如下:

:ab syso  public static void main(String[] args) 

这样一来,每次输入syso的时候,整个main方法就自动插入到文本行了。如果你就是想输入'syso'这个原生字符串,那么您可以用下面这个命令取消:

:unab syso

列出当前定义的缩写有哪些可以用命令:

:ab

map命令

图

上图是执行:map命令显示的内容,我们暂且先不对图做说明,稍后再分析,map的功能比ab更强大,它不仅可以在insert 模式下定义宏(快捷键)而且可以normal,visual等模式下定义。其语法举例说明:(目标:在normal下用lv选中光标所在行)

:map lv 0v$ 

解析:0代表光标移至行首,v就是visual模式(该模式下可以通过hjkl来选中文本),$代表行尾,这样一来,在normal模式输入lv就能选中光标所在行了。

:map 列出所有已定义的映射命令
:unmap lv 取消lv映射的命令
:mapclear  清空所有映射

需要注意的是:

  1. 默认情况下,map命令是作用在normal模式下的
  2. 如果是想在virsual模式下新建某个命令的宏,可以使用:vmap,举例::vmap d <esc>dd就可以在virsual模式下把光标所在行删除。<esc>是纯粹的5个原始字符,意思是回到normal模式。
  3. 默认情况下,map是采用递归映射的,比如a映射成b,:map a b,然后c 又映射成了a,:map c a ,那么最终c也会自动映射成b,等同于:map c b,您现在可以试一试a,b,c的效果都是光标向前移动一个单词的长度。如果要不想使用递归,那么就要用:noremap
  4. 现在你应该能看明白上图的内容了吧,第一列就是宏会在哪中模式下生效,第二列代表快捷键了,第三列就是真正的命令序列集合了。您可以注意一下最后一个命令:(Shift+Insert)就是前些天分享过的,代表在normal模式下粘贴系统剪切板中的内容。

实用例子:

:map <C-a> <Esc>ggVG   实现类似于Widnows下的Ctrl+a全选 
:inoremap ( ()<esc>i   插入模式下输入'('后自动补全')',同理还可以实现'[','{'

更多的例子就要靠您的创造力和想象力的,如果您能把基本的命令学好了,这些命令组合在一起使用的话,威力无比。
ps:"+y可以把光标所在行或选选中的字符copy到系统剪切板中。

转载请注明出处,谢谢合作。作者---zhijun

2
4
分享到:
评论
5 楼 lantian_123 2013-03-22  
isensen 写道
忘 了问一个问题, :mapclear 是清除所有吗? 这样的话.VIM预置的也会清除掉吗?还是说只清除用户自定义的.VIM 程序本身有区别用户自定义吗?感觉好像没有..没敢试

嗯,是清除所有的,不过不要紧,清除只对当前的session有效,不影响其他的,另打开一个vim预设的还是存在的。
4 楼 lantian_123 2013-03-22  
shidan66 写道
不错~不过syso快捷键貌似不是main方法吧,呵呵

sorry ,写错了,eclipse中对应预设的快捷键应该是“main”。呵呵
3 楼 isensen 2013-03-22  
忘 了问一个问题, :mapclear 是清除所有吗? 这样的话.VIM预置的也会清除掉吗?还是说只清除用户自定义的.VIM 程序本身有区别用户自定义吗?感觉好像没有..没敢试
2 楼 isensen 2013-03-22  
恩今天 讲的这个实用.就像把宏保存起来一样.
1 楼 shidan66 2013-03-22  
不错~不过syso快捷键貌似不是main方法吧,呵呵

相关推荐

    linux的文本编辑器vim

    vim的常用操作,vim没有菜单,只有命令 插入模式 定位命令 4. 删除命令 5. 复制和剪切 6. 替代和取消 7.搜索与替换 6. 保存与退出 7. 导入命令执行结果. ‘:r ! 命令’ 导入文件。 ‘:r 文件’ 导入该文件到...

    VI&VIM常用命令及快捷键.pdf

    - :map key command_seq:定义一个快捷键来执行一系列命令。 - :unmap key:取消定义快捷键。 - :ab string1 string2:定义缩写。 9. 进阶编辑技巧: - &gt; 和 增加或减少缩进。 - Ctrl+e, Ctrl+y, Ctrl+u, Ctrl+d:...

    Vim使用技巧

    Vim是一款功能强大的文本编辑器,广泛应用于Unix、Linux及MAC OS等类Unix操作系统中。它有着不同于其他文本编辑器的操作方式,被许多程序员和系统管理员所推崇。Vim能够通过各种命令模式提高编辑效率,因此掌握其...

    Hacking Vim

    《Hacking Vim》是一本专注于提升 Vim 编辑器使用效率和技术深度的指南书籍。对于已经熟练掌握 Vim 基础操作(如 hjkl 导航、i 插入模式、yy 复制、dd 删除等)但尚未深入自定义 `.vimrc` 文件的用户来说,本书具有...

    Vim命令高级用法

    Vim是一款强大的文本编辑器,其高级用法能够极大地提高程序员和文本工作者的效率。以下是一些关于Vim高级命令的详细说明: 1. **启动Vim**: - `-R` 参数允许以只读模式打开文件,但在有权限的情况下仍可强制保存...

    VI高级命令集锦详细介绍vi编辑器的使用

    - **命令**: `:map key new_seq` - **作用**: 定义键盘映射,将一个键映射为一系列的命令。 #### 5. 设置与状态显示 - **命令**: `:set [all]` - **作用**: 显示所有设置的信息。 - **命令**: `:set nu` - **...

    VI高级命令集锦

    8. **缩写与自动补全**:`:ab`命令创建缩写,例如`:ab usa United States of America`。在文件中输入`usa`,就会自动扩展为`United States of America`。取消缩写用`:unabbreviate`,删除所有缩写用`:abclear`。 9....

    Vi 学习笔记

    - **记录与回放命令**:使用宏记录一系列命令,然后回放。 - **替换**:`:%s/old/new/g`全局替换,`:/pat/s//new/g`在匹配模式的行中替换。 - **命令范围**:`1,5s/old/new/g`在特定行范围内替换。 - **global命令**...

    H12-222 V10.02.IENP.pdf

    华为 HCNP(Huawei Certified Network Professional)是华为认证体系中的一个重要部分,专注于网络技术的深入学习与实践。H12-222 V10.02.IENP 是华为针对HCNP-R&S(Routing & Switching)IESN(Implementing ...

    vi使用高级技巧(精简版)

    12. **自定义命令与映射** - `:ab abbreviation expanded`: 定义缩写,例如`:ab usa United States of America`。 - `:map key new_sequence`: 映射按键,例如`:map j k`将`j`键映射为`k`键。 13. **设置与状态...

    兄弟连学习笔记

    - **find /etc -name "jiangwen" = locate**:说明locate与find命令的区别。 - **locate 实时性实时性**:locate依赖于数据库更新,而find则实时扫描文件系统。 - **updatedb**:用于更新locate数据库。 - **which、...

Global site tag (gtag.js) - Google Analytics