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

原文 标签 vim vi hotkeys

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

打个比方,在 emacs 中,很多自定义的按键命令都是通过 C-c 顺序添加的。为了更具技术性,vim 中是否有允许用户自定义的未绑定(bind)键?换句话说,是否有可供用户使用的免费 key 空间?

最佳答案

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

My question is, if one is to create additional custom operators, motions, commands and map them to keys, what is the best way to add them in so they don't conflict with existing bindings?



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

此外,您可以使用 <leader>我用,有些用\。

例如:let mapleader = ","
然后,您可以使用领导者将其与其他键结合,例如 ,p 调用命令,本地或自定义,见下文:
:map <leader>p :MyCustomCommand<CR>
自定义 Action 示例。删除光标后的第三个单词。
nnoremap <leader>x :normal 2wdw<CR>
几个命令可以用来新建 , 删除 列出映射 ,这里是工作模式列表,来自 :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')
  • :MoveTo newFile.txt
  • 关于vim - 在 vim/vi 中添加自定义键映射的最佳方法是什么? (是否存在用于自定义的未绑定(bind)键空间?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784993/

    相关文章:

    vim - 每行转换文件一个单词

    delphi - 为什么 SendInput Ctrl+V 在 Outlook 中不起作用?

    java - 如何配置Syntastic将在何处生成.class文件?

    vim - 删除字节时如何在vim中为 "xxd -r"进行有效输入?

    linux - 无法运行脚本

    vim - 在 Vim 中映射 Esc 键

    delphi - 运行时分配的操作的快捷方式不会在自定义组件中触发

    node.js - Node Webkit热键示例不起作用

    scala - 是否可以通过 Scala REPL shell 命令打开交互式 vim 进程?

    vim - VIM自动插入PHPdoc