`
venus585625
  • 浏览: 252857 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

vim 自定义命令 自定义快捷键(转)

    博客分类:
  • vim
 
阅读更多
有五种映射存在
- 用于普通模式: 输入命令时。
- 用于可视模式: 可视区域高亮并输入命令时。
- 用于操作符等待模式: 操作符等待中 ("d","y","c" 等等之后)。
见下: |omap-info|。
- 用于插入模式: 也用于替换模式。
? 用于命令行模式: 输入 ":" 或 "/" 命令时。

下表是map绑定中,对应的模式代号。现在先了解一下,等看完之后再回过头看这个模式代号就会明白了。
字 符 模 式 ~
<Space> 普通、可视、选择和操作符等待
n 普通
v 可视和选择
s 选择
x 可视
o 操作符等待
! 插入和命令行
i 插入
l 插入、命令行和 Lang-Arg 模式的 ":lmap" 映射
c 命令行


我主要讲解一下“n(普通模式)”下的两个绑定命令,等看完之后就对应的明白别的模式下的命令了。
适用于普通模式的映射命令主要有:
1. :map
[语法] :map {lhs} {rhs} |mapmode-nvo| *:map*
1.1 作用模式: n、v、o (普通、可视和选择、操作符等待)
1.2 命令格式:
:map {lhs} {rhs}
含义: 在:map作用的模式中把键系列 {lhs} 映射为 {rhs},{rhs}可进行映射扫描,也就是可递归映射。
1.3 举例:
:map td :tabnew .<cr>
含义:在其作用模式(普通、可视、操作符)下,输入td等价于输入 :tabnew . <cr>。而普通模式下输入:tabnew . <cr>就是打开当前目录
如果再定义绑定 :map ts td,就是指在其作用模式下输入ts等价于td,也就是打开当前目录。不过如果没有特殊需要,一般不建议递归映射。

2. :noremap
:moremap和:map命令相对,作用模式和命令格式都相同,只不过不允许再对{rhs}进行映射扫描,也就是{lhs}定义后的映射就是{rhs}的键序列,不会再对{rhs}键序列重新解释扫描。它一般用于重定义一个命令,当然如果:map不需要递归映射的话,建议试用:noremap
比如:
:noremap ts td
它的意思是在其作用模式下,输入ts就是输入td,但是和:map不同的是,此时td再不会做进一步扫描解释。虽然之前已经定义了td,但是不会对td再做扫描

3. :unmap
:unmap是对应取消:map绑定的{lhs},作用模式相同,命令格式 :unmap {lhs}。
例如:
:unmap td
就是取消在其作用模式中td的绑定,比如之前td被绑定为:tabnew .<cr>,此时此绑定消失。
4. :mapclear
:mapclear时对应取消所有:map绑定的,慎用!

5. :nmap
:nmap是:map的普通模式板,也就是说其绑定的键只作用于普通模式。
例如:
:nmap td :tabnew .<cr> 和 :map td :tabnew .<cr> 在普通模式下等效
6. :nnoremap
:nnorempa和:nmap的关系和:noremap和:map的关系一样,只是:nmap的非递归版
7. :nunmap
:nunmap和:nmap的关系和:unmap和:map的关系一样,取消:nmap的绑定。
8. :nmapclear
:nmapclear是对应取消所有:map绑定的,慎用!

看完以上,应该可以发现一个规律,前4个是一组,后4个时一组,后一组比前一组多一个n就是指只作用于普通模式。其中每组内*nore*是其对应的非递归版、*un*是取消绑定某个<lhs>绑定、clear后缀是取消所有绑定。发现了这个规律,再翻到前面的模式代号表,你大体可以猜到vmap、xmap、smap、omap是什么意思了吧,以及相对应的nore版本、un版本、clear版本。

另外:
{rhs} 之前可能显示一个特殊字符:
* 表示它不可重映射
& 表示仅脚本的局部映射可以被重映射
@ 表示缓冲区的局部映射

到这一步你可以轻松的长吸一口气,因为相关的命令已经都了解了,记不住没关系,可以随时:help map一下。不过别急,后面还有map更多的选项等着去攻克。

键表 |key-notation|
<k0> - <k9> 小键盘 0 到 9 *keypad-0* *keypad-9*
<S-...> Shift+键 *shift* *<S-*
<C-...> Control+键 *control* *ctrl* *<C-*
<M-...> Alt+键 或 meta+键 *meta* *alt* *<M-*
<A-...> 同 <m-...> *<A-*
<t_xx> termcap 里的 "xx" 入口键

特殊参数:
1. <buffer>
2. <silent>
3. <special>
4. <script>
5. <expr>
6. <unique>
它们必须映射命令的后边,在其他任何参数的前面。

<buffer>如果这些映射命令的第一个参数是<buffer>,映射将只局限于当前缓冲区(也就是你此时正编辑的文件)内。比如:
:map <buffer> ,w /a<CR>
它的意思时在当前缓冲区里定义键绑定,“,w”将在当前缓冲区里查找字符a。同样你可以在其他缓冲区里定义:
:map <buffer> ,w /b<CR>
比如我经常打开多个标签(:tabedit),想要在各自标签里定义",w"键绑定,那么你只要在每个标签页里分别定义就可,其作用域也只在各自的标签里。同样要清除这些缓冲区的键绑定也要加上<buffer>参数,比如:
:unmap <buffer> ,w
:mapclear <buffer>

<silent>是指执行键绑定时不在命令行上回显,比如:
:map <silent> ,w /abcd<CR>
你在输入,w查找abcd时,命令行上不会显示/abcd,如果没有<silent>参数就会显示出来

<special>一般用于定义特殊键怕有副作用的场合。比如:
:map <special> <F12> /Header<CR>

<unique>一般用于定义新的键映射或者缩写命令的同时检查是否该键已经被映射,如果该映射或者缩写已经存在,则该命令会失败

<expr>. 如果定义新映射的第一个参数是<expr>,那么参数会作为表达式来进行计算,结果使用实际使用的<rhs>,例如:
:inoremap <expr> . InsertDot()
这可以用来检查光标之前的文本并在一定条件下启动全能 (omni) 补全。
一个例子:
let counter = 0
inoremap <expr> <C-L> ListItem()
inoremap <expr> <C-R> ListReset()

func ListItem()
let g:counter += 1
return g:counter . '. '
endfunc

func ListReset()
let g:counter = 0
return ''
endfunc
在插入模式下,CTRL-L插入顺序的列表编号,并返回;CTRL-R复位列表编号到0,并返回空。


<Leader> mapleader
mapleader变量对所有map映射命令起效,它的作用是将参数<leader>替换成mapleader变量的值,比如:
:map <Leader>A oanother line<Esc>
如果mapleader变量没有设置,则用默认的反斜杠代替,因此这个映射等效于:
:map \A oanother line<Esc>
意思时输入\A键时,在下一行输入another line并返回到普通模式。
如果设置了mapleader变量,比如:
let mapleader = ","
那么就等效于:
:map ,A oanother line<Esc>

<LocalLeader> maplocalleader
<LocalLeader>和<Leader>类似,只不过它只作用于缓冲区。
因此在设置mapleader和maplocalleader时最好区分开,不要出现冲突。

大体上映射的主要部分已经都提到了,还有很多具体的映射相关的内容可以参见:help map
分享到:
评论

相关推荐

    Windows快捷键与Vim快捷键冲突解决

    - 找到与系统快捷键冲突的Vim命令,例如: ``` " 原始代码 map &lt;C-a&gt; :call WinSelectAll() " 注释后的代码 " map &lt;C-a&gt; :call WinSelectAll() ``` 4. **保存并重启Vim**:保存文件后重新启动Vim,以确保新的...

    VI&VIM常用命令及快捷键

    ### VI&VIM常用命令及快捷键:深入解析 #### 光标控制命令:精确操控文档每一处 在VI和VIM编辑器中,光标控制是基础且关键的操作之一,它允许用户精确地移动光标,从而进行文本编辑。以下是一些常用的光标移动命令...

    idea vim自定义配置文件

    本篇文章将深入探讨如何在IntelliJ IDEA中进行Vim自定义配置,以提升开发效率。 首先,我们需要了解IntelliJ IDEA中的Vim Emulator插件。该插件使得IDEA拥有类似于Vim的键绑定和编辑模式,让习惯于Vim操作的开发者...

    vim自定义主题

    **vim自定义主题详解** Vim,全称Vi Improved,是一款功能强大的文本编辑器,深受程序员们的喜爱。它以其高效的操作方式和高度可定制性著称。本篇将重点介绍如何自定义Vim的主题,以适应C++开发的需求,使编程环境...

    vim的自定义配置文件

    - **快捷键映射**:使用`nnoremap`、`inoremap`、`vnoremap`等命令创建自定义快捷键,提高编辑效率。 - **自动缩进**:设置`autocmd`和`indentexpr`来实现不同语言的自动缩进规则。 - **语法高亮**:启用`syntax on`...

    VIM最全快捷键图,超清版本,包含超清PDF版本

    此外,VIM支持自定义配置,用户可以通过`.vimrc`文件设置个人喜好,包括快捷键绑定、颜色方案、自动补全等。例如,你可以将`nnoremap &lt;leader&gt;w :w&lt;CR&gt;`添加到`.vimrc`中,使`&lt;Leader&gt;w`成为保存文件的快捷键。 ...

    VIM中文版-自定义配置

    快捷键的绑定是VIM自定义配置的另一大亮点,它能大大提高工作效率。例如,你可以将常用的命令绑定到特定的键上,比如: ```vim nnoremap &lt;Leader&gt;s :w&lt;CR&gt; " 保存当前文件 nnoremap &lt;Leader&gt;e :e&lt;CR&gt; " 重新载入...

    vim基本使用快捷键

    以上仅为Vim众多快捷键中的一部分,Vim的强大之处在于其高度的自定义能力和丰富的插件生态系统。熟练掌握这些快捷键,并根据个人需求进一步探索和配置,将极大地提升代码编写和文本处理的效率。

    vim命令壁纸改进

    7. **自定义设置**:对于有经验的Vim用户,壁纸可能还提供了自定义快捷键的区域,允许用户根据自己的习惯设置常用命令。 通过这些改进,用户可以更直观地学习和记忆Vim命令,提高工作效率。同时,壁纸作为一个常驻...

    linux-Swatch是一个Vim插件可以更轻松地使用十六进制颜色代码和配色方案

    4. **安装插件**:运行Vim并执行对应的插件管理器命令来安装Swatch。 5. **重启Vim**:重启Vim后,Swatch应该已经被成功安装,现在可以开始享受它带来的便利了。 通过Swatch,Linux开发人员和设计师可以在Vim这个...

    Vim命令手册(较全)

    - `.vimrc`:个人Vim配置文件,用于自定义快捷键、设置选项等。 - **安装插件**:如Vundle、Pathogen等工具可以帮助管理Vim插件。 11. **帮助系统** - `:help`:打开内置的帮助系统。 - `:help topic`:查找...

    CentOS安装教程、Linux系统管理、用户管理、Linux常用命令、Vim编程+操作快捷键及使用

    此外,Vim是一个强大的文本编辑器,学习它的编程和快捷键能提高工作效率。例如,通过操作模式的切换(插入模式和命令模式),使用`i`进入插入模式,使用`:wq`保存并退出,`/`进行正向搜索,`?`进行反向搜索,`dd`...

    linux下vim命令练习.rar

    在Linux操作系统中,`vim`(Vi Improved)是一款强大的文本编辑器,被...对于更复杂的编辑任务,可以深入学习更多高级功能,例如使用正则表达式进行搜索和替换,或者自定义快捷键和插件,使vim完全适应个人的工作习惯。

    vim常用命令1

    - `:map`:自定义快捷键,例如:`:map P I#&lt;ESC&gt;`快速添加行注释。 以上命令可以通过在`.vimrc`配置文件中定义,以方便日常使用。对于普通用户,`.vimrc`通常位于`/home/username/`目录下,对于root用户,则位于`/...

    vim增强功能脚本 vim配置脚本使用与Windows Linux Unix

    此外,Vim的脚本语言 VimL(也称为Vimscript)允许用户编写自定义命令、映射快捷键、定义函数等。学习VimL,可以让你创建自己的工具和扩展,进一步定制编辑器。例如,你可以编写一个脚本来自动格式化代码,或者创建...

    VI和VIM编辑器快捷键图文教程.zip

    - `.vimrc`:个人VIM配置文件,可以自定义快捷键、颜色方案等 通过熟练掌握这些快捷键和技巧,用户可以极大地提高在VIM编辑器中的工作效率,无论是编写代码还是日常文本编辑,都将变得更加得心应手。记得多多练习...

    vim常用快捷键介绍.rar

    以上仅是Vim众多快捷键的一部分,熟练掌握这些常用快捷键能极大地提高你在Vim中的工作效率。Vim还有更多高级特性等待你去探索,如宏的使用、插件管理等。不断学习和实践,你将会发现Vim的魅力所在。

    Ubuntu12.04通过命令安装vim及配置文件

    5. 自定义快捷键,例如,设置 `&lt;Leader&gt;` 为逗号 `,`,然后映射保存并退出的命令: ```vim let mapleader =", map &lt;Leader&gt;w :w map &lt;Leader&gt;q :q! ``` 6. 保存并退出 `.vimrc` 文件。在Vim中,按下 `Esc` ...

    idea vim 快捷键设置配置导出

    为了更贴近Vim的使用习惯,你可以在`Keymap`设置中自定义这些快捷键。例如,如果你觉得某个操作在默认配置中不方便,可以通过右键点击该操作,选择`Add Keyboard Shortcut`来添加新的快捷键组合。 配置完成后,我们...

    eclipse中加入vim

    这个插件使Eclipse的内置编辑器模仿Vim的行为,允许开发者使用Vim的命令和快捷键进行代码编辑。以下是如何在Eclipse中安装和配置Vim插件的步骤: 1. **获取Vrapper插件**:首先,你需要访问Vrapper的官方网站或者...

Global site tag (gtag.js) - Google Analytics