扩展vim命令

时间:2013-04-17 16:07:09

标签: vim

如何在vim中扩展命令?

我想在两种情况下这样做,

  1. :diffget:diffput之后,我总是希望运行:diffupdate
  2. :NERDTreeToggle我希望运行<C-w>=
  3. 之后

3 个答案:

答案 0 :(得分:3)

我不知道会为您的方案触发任何autocmd事件。但是,一些自定义映射可能会有所帮助。

您可以更改默认的dpdo映射,以执行:diffupdate

nnoremap dp dp:diffupdate<cr>
nnoremap do do:diffupdate<cr>

请注意,有时您无法使用dp和/或do,必须使用:diffput / :diffget。在这些情况下,我建议您创建如下命令:

command! -nargs=? -range=1 -bar Diffput <line1>,<line2>diffput <args>|diffupdate
command! -nargs=? -range=1 -bar Diffget <line1>,<line2>diffget <args>|diffupdate

或者您可以映射:diffupdate

nnoremap <f8> :diffupdate<cr>

NERDTree

nnoremap <leader>N :NERDTreeToggle<cr><c-w>=

答案 1 :(得分:0)

也许您可以查看vim macro。它可能适合你想做的事情:)。

答案 2 :(得分:0)

在包含多个命令的.vimrc中的VimScript中创建自己的自定义函数。

这是我使用几个插件在缓冲区中启动Clojure Repl的一个:

fun! LeinCMD()
    execute 'ConqueTerm lein repl'
    execute 'set syntax=clojure'
    execute 'normal! i'
endf
command! Repl call LeinCMD()

然后我用:Repl调用此命令(请注意,您的自定义命令必须始终以大写字母开头)。

来源:Automate running several vim commands and keystrokes