2017-05-04 100 views
0

問題

一個插件,我使用,我的映射,或這兩個的組合造成的vim一些問題。特別是,當我按下鍵的特定組合將出現以下情況:VIM:查找最近使用的快捷方式的歷史

  • 在當前行中的第一數目它降低
  • 它跳轉到另一行

的問題是,我不我不知道我緊迫的組合是誰。我無法複製它。我是一個saving-the-buffers-constantly-freak,所以當我「空轉」(不要在vim上寫任何東西)時,我的手指可能會不自覺地進入/退出編輯模式,:wa,zz,也許還有其他幾個,相當快。我必須在這裏混合一些導致這個問題的捷徑。 你可能會說「停止做你所做的事」,但我無法提供幫助。這就像一個問題。無法控制。但是,還有一個捷徑,它正在做我不想做的事情,我無法複製它或在我的vim配置中找到它。

順便說一句我已經在我的.vimrc中設置了map <C-a> <Nop>,所以禁用了自動遞增的默認行爲。 (見礦here前一個問題)

問題

如何才能看到已經使用歷史快捷鍵? q:不給我這樣的信息。

+0

你是什麼意思「我不能複製」?你可能想檢查'verbose' – Kent

+0

@Kent我的意思是我無法找到究竟是什麼快捷鍵按下,導致它。 – Paschalis

+0

我終於找到了這個根本原因。回答[這裏](https://stackoverflow.com/questions/44890662/disable-timeout-on-esc-key) – Paschalis

回答

0

您可以通過鍵入轉儲活動的映射:

:map 
+0

是的,當然我可以,但由於插件等有他們噸!有沒有一種方法可以查看使用過的'maps'的歷史記錄? – Paschalis

1

我不知道Vim的任何方式來檢索具有被按下按鍵的歷史。

作爲替代方案,您可以使用您的操作系統功能來完成此操作。

如果你在Linux系統上,你可以很容易地記錄關鍵事件;嘗試在後臺運行這個小bash腳本,它會做的工作(沒有很好的測試,它可能需要一些修復);當然,所有事件將被記錄下來,即使是那些Vim的工作,而這並沒有發生:

#!/bin/bash 

xinput list | 
grep -Po 'id=\K\d+(?=.*slave\s*keyboard)' | 
xargs -P0 -n1 xinput test | 
awk ' 
    BEGIN { while (("xmodmap -pke" | getline) > 0) k[$2]=$4 } 
    /^key press/ { 
     cmd = "date +%H:%M:%S"; cmd | getline date; close(cmd) 
     printf("%s [ %s ]\n", date, k[$NF]) 
    } 
' | 
tee /tmp/keys.log # <-- pressed keys will be logged here