次のように、現在のvim環境のすべてのキーボードマッピングの順序付きリストを表示する方法はありますか?
a: append
b: back one word
c: ...
.
.
.
---- Ctrl mappings ----
<C-a> (I dont know...)
.
.
.
<C-p> Default mode for CrtlP
...
---- Alt mappings ----
...
これは私にとって非常に便利です。
次のように、現在のvim環境のすべてのキーボードマッピングの順序付きリストを表示する方法はありますか?
a: append
b: back one word
c: ...
.
.
.
---- Ctrl mappings ----
<C-a> (I dont know...)
.
.
.
<C-p> Default mode for CrtlP
...
---- Alt mappings ----
...
これは私にとって非常に便利です。
:map
セッションで定義されたマッピングのリストを:verbose map
表示しますが、そのように順序付けられていません。AFAIK、Vimはそのような素晴らしいフォーマットを提供していません:あなたはそのためのカスタム関数を書かなければならないでしょう、私は恐れています。
編集
また、CtrlPがマッピングであるという意味でa
、およびフレンズは「マッピング」ではないことに注意してください。それらをまったく表示しません。b
<C-p>
:map
したがって、あなたのアイデアは興味深いものですが、おそらく1つのライナーで実行できるものではありません。から情報を取得し:h index
、その結果を追加して、:map
すべてを自分にとって意味のある順序で並べ替えることができますが、それは簡単な作業ではないようです。python / ruby /phpスクリプトにぴったりのようですね。
endedit
未使用のキーを検索するための現在のマッピングのソートされた検索可能なリストが必要な場合は、次のようにすることができます。
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が言及しているように、これにはテキストを挿入するようなコマンドは含まれません
FZFプラグインを使用して、ファジー検索可能なポップアップウィンドウと:Maps
同じ情報を表示するコマンドを使用することもできます。:verbose map
トム・ヘイルズの回答と本質的に同じですが、fzfバージョンです。にマッピングしました<leader>F1
。