有没有办法在Vim中查看当前Map的键?

owfi6suc  于 2022-11-24  发布在  其他
关注(0)|答案(7)|浏览(247)

基本上,我想查看当前缓冲区中所有插件、vimrc等创建的所有键Map。有什么办法可以做到这一点吗?

gorkyyrv

gorkyyrv1#

您可以使用:map命令来执行此操作。

  • :nmap用于正常模式Map
  • :vmap用于视觉模式Map
  • :imap用于插入模式Map

上面的列表不完整。在Vim中键入:help map将为您提供更多信息。

ufj5ltwl

ufj5ltwl2#

:redir! > vim_keys.txt
:silent verbose map
:redir END

这会将快捷键及其定义位置输出到文本文件。

tp5buhyn

tp5buhyn3#

除了关于:map的答案之外没有任何参数:不要错过它的详细形式(:verbose map),它显示了定义Map的位置(请参见:help map-verbose)。

mwngjboj

mwngjboj4#

很简单,只需要运行:map变量,不需要任何参数。

:map
:imap
:vmap
fd3cxomn

fd3cxomn5#

:map和它的朋友是关键字,:verbose添加信息,并且:redir允许搜索后细化。
它们是一个完美的组合,显示什么命令绑定到什么快捷方式,反之亦然,但如果你想搜索一些键,并避免临时文件,每当你需要搜索Map,看看scriptease:Verbose命令。
它是:verbose上的一个 Package 器,用于在预览窗口中显示结果。
这样你就可以在结果中搜索任何你想要的东西,而不需要使用临时文件
键入:Verbose map并照常使用/?。

kse8i1jr

kse8i1jr6#

另一种方法是将会话保存到文件中,然后编辑此文件,因为它包含所有Map和设置。
:mks[ession] [file]-编写一个Vim脚本来恢复当前编辑会话。

s4n0splo

s4n0splo7#

1.按如下方式安装插头:Plug 'https://github.com/tpope/vim-scriptease'
1.什么知道什么<M-C-F10>(我自己的Map)做什么?试试这个

:Verbose nmap <M-C-F10> |  omap <M-C-F10> | vmap <M-C-F10> | imap <M-C-F10> | cmap <M-C-F10> | tmap <M-C-F10>

将其放入函数中:

func! Leo_keymap(keys)
                exe "verbose map " . a:keys
                exe "verbose map! " . a:keys
                exe "verbose tmap " . a:keys

                " 不好 / not good:
                    " exe "verbose nmap " . a:keys
                    " exe "verbose omap " . a:keys
                    " exe "verbose vmap " . a:keys
                    " exe "verbose imap " . a:keys
                    " exe "verbose cmap " . a:keys
                    " exe "verbose tmap " . a:keys
                " 不行 / not work
                    " exe "Verbose map " . a:keys  . <Bar> . "verbose map! " . a:keys . <Bar> .  "verbose tmap " . a:keys
            endfunc

        cnoreabbrev <expr> map   getcmdtype() == ":" && getcmdline() == 'map'          ? 'Verbose call Leo_keymap("")<left><left>'                       :   'map'
                " 不行 / not work
                    " command! -nargs=* Map :new<CR>:put = Vim_out('call Leo_keymap(input())')
                " 不行 / not work
                    " :put = Vim_out("call Leo_keymap('ls')")

        " may be take placed by the above line
            cnoreabbrev <expr> nmap  getcmdtype() == ":" && getcmdline() == 'nmap'          ? 'Verbose map'                       :   'map'
            cnoreabbrev <expr> imap  getcmdtype() == ":" && getcmdline() == 'imap'         ? 'Verbose imap'                      :   'imap'
            cnoreabbrev <expr> cmap  getcmdtype() == ":" && getcmdline() == 'cmap'         ? 'Verbose cmap'                      :   'cmap'
            cnoreabbrev <expr> tmap  getcmdtype() == ":" && getcmdline() == 'tmap'         ? 'Verbose tmap'                      :   'tmap'

旧内容可能无用:

func! Leo_keymap(keys)
    exe "verbose map " . a:keys
    exe "verbose map! " . a:keys
    exe "verbose tmap " . a:keys
    " exe "Verbose map " . a:keys  . <Bar> . "verbose map! " . a:keys . <Bar> .  "verbose tmap " . a:keys
    " exe "verbose nmap " . a:keys
    " exe "verbose omap " . a:keys
    " exe "verbose vmap " . a:keys
    " exe "verbose imap " . a:keys
    " exe "verbose cmap " . a:keys
    " exe "verbose tmap " . a:keys
endfunc

command! -nargs=* Map :call Leo_keymap(<q-args>)

现在:Map d得到:

n  dL          * v$hhd
        Last set from ~/dotF/cfg/nvim/plug_wf.vim line 712
n  df          * ggdG
        Last set from ~/dotF/cfg/nvim/clipboard_regis.vim line 250
n  dB          * %dab
        Last set from ~/dotF/cfg/nvim/clipboard_regis.vim line 230
n  d"          * da"
        Last set from ~/dotF/cfg/nvim/clipboard_regis.vim line 212
n  dw          * diw
        Last set from ~/dotF/cfg/nvim/clipboard_regis.vim line 211
n  d'          * :call DoubleAsSingle()<CR>da'
        Last set from ~/dotF/cfg/nvim/clipboard_regis.vim line 195
No mapping found
No mapping found
Press ENTER or type command to continue

到目前为止,我还不知道如何将其与以下内容结合起来:Verbose .....

相关问题