6

次のように、現在のvim環境のすべてのキーボードマッピングの順序付きリストを表示する方法はありますか?

a: append
b: back one word
c: ...
.
.
.

---- Ctrl mappings ----
<C-a> (I dont know...)
.
.
.
<C-p> Default mode for CrtlP
...

---- Alt mappings ----
...

これは私にとって非常に便利です。

4

3 に答える 3

5

:mapセッションで定義されたマッピングのリストを:verbose map表示しますが、そのように順序付けられていません。AFAIK、Vimはそのような素晴らしいフォーマットを提供していません:あなたはそのためのカスタム関数を書かなければならないでしょう、私は恐れています。

編集

また、CtrlPがマッピングであるという意味でa、およびフレンズは「マッピング」ではないことに注意してください。それらをまったく表示しません。b<C-p>:map

したがって、あなたのアイデアは興味深いものですが、おそらく1つのライナーで実行できるものではありません。から情報を取得し:h index、その結果を追加して、:mapすべてを自分にとって意味のある順序で並べ替えることができますが、それは簡単な作業ではないようです。python / ruby​​ /phpスクリプトにぴったりのようですね。

endedit

于 2012-12-21T12:47:25.617 に答える
2

未使用のキーを検索するための現在のマッピングのソートされた検索可能なリストが必要な場合は、次のようにすることができます。

function! s:ShowMaps()
  let old_reg = getreg("a")          " save the current content of register a
  let old_reg_type = getregtype("a") " save the type of the register as well
try
  redir @a                           " redirect output to register a
  " Get the list of all key mappings silently, satisfy "Press ENTER to continue"
  silent map | call feedkeys("\<CR>")    
  redir END                          " end output redirection
  vnew                               " new buffer in vertical window
  put a                              " put content of register
  " Sort on 4th character column which is the key(s)
  %!sort -k1.4,1.4
finally                              " Execute even if exception is raised
  call setreg("a", old_reg, old_reg_type) " restore register a
endtry
endfunction
com! ShowMaps call s:ShowMaps()      " Enable :ShowMaps to call the function

nnoremap \m :ShowMaps<CR>            " Map keys to call the function

これは、のソートされた出力で垂直分割を作成するための堅牢な関数です:maps。私はそれを私のに入れましたvimrc

最後の行は\m、関数を呼び出すための2つのキーをマップしています。これは、必要に応じて変更してください。

i注:@romainlが言及しているように、これにはテキストを挿入するようなコマンドは含まれません

于 2016-08-03T06:02:57.143 に答える
1

FZFプラグインを使用して、ファジー検索可能なポップアップウィンドウと:Maps同じ情報を表示するコマンドを使用することもできます。:verbose mapトム・ヘイルズの回答と本質的に同じですが、fzfバージョンです。にマッピングしました<leader>F1

于 2021-08-28T16:01:23.507 に答える