在vim / vi中添加自定义键映射的最佳方法是什么? (是否存在用于自定义的未绑定密钥空间?)

时间:2011-10-16 14:44:04

标签: vim vi hotkeys

我知道您可以在imap文件中使用.vimrc向vim添加自定义键映射。我的问题是,如果要创建其他自定义运算符,运动,命令并将它们映射到键,那么添加它们的最佳方法是什么,这样它们就不会与现有绑定冲突?

类似地,在emacs中,通过C-c序列添加了许多自定义键命令。为了更加技术化,vim中是否存在允许用户自定义的未绑定密钥?换句话说,用户可以使用免费密钥空间吗?

1 个答案:

答案 0 :(得分:14)

:imap Enter 将显示插入模式映射的列表。

  

我的问题是,如果要创建其他自定义运算符,   运动,命令和映射到键,什么是最好的添加方式   他们这样他们不会与现有的绑定冲突?

在我看来,最好的方法是创建自定义命令,它们以大写的本地命令开头。


此外,您可以使用<leader>我使用部分使用 \

e.g。 :let mapleader = ","

然后,你可以使用领导者将它与其他键组合,比如 p 来调用命令,本机或自定义,见下文:

:map <leader>p :MyCustomCommand<CR>

自定义动画示例。删除光标后的第三个单词。

nnoremap <leader>x :normal 2wdw<CR>


可以使用多个命令来创建新的删除列出映射,这是一个工作模式列表,来自{{ 1}}

:help map-overview

进一步的信息 Normal Visual+Select Operator-pending ~ :map :noremap :unmap :mapclear yes yes yes :nmap :nnoremap :nunmap :nmapclear yes - - :vmap :vnoremap :vunmap :vmapclear - yes - :omap :onoremap :ounmap :omapclear - - yes


这是一个示例函数,转换为自定义命令

:help map

现在,以下两行是等效的

  • function! MoveLastLines(f) exe '$-9,$w ' . a:f "write last ten lines to the passed filename $-9,$d "delete last ten lines endfunction command! -nargs=1 -range MoveTo :call MoveLastLines(<f-args>)
  • :call MoveLastLines('newFile.txt')