2017-05-04 101 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