【问题标题】:vim: Find history of recently used shortcutsvim:查找最近使用的快捷方式的历史记录
【发布时间】:2017-05-04 08:02:42
【问题描述】:

问题

我正在使用的插件、我的映射或这两者的组合在 vim 上造成了一些问题。特别是,当我按下特定组合键时,会发生以下情况:

  • 当前行的第一个数字减少
  • 它跳到另一行

问题是我不知道我按下的组合是谁。我无法重现它。我是saving-the-buffers-constantly-freak,所以当我“闲置”(不要在vim 上写任何东西)时,我的手指不自觉地可能进入/退出编辑模式,:wazz,也许还有其他几个,相当快。我必须在这里混合一些导致此问题的快捷方式。 你可能会说“停止做你所做的事情”,但我无能为力。这就像一个问题。不能控制那个。但是,仍然有一个捷径,它正在做我不想做的事情,我无法重现它或在我的 vim 配置中找到它。

顺便说一句,我在.vimrc 中设置了map <C-a> <Nop>,因此自动增量的默认行为被禁用。 (见我之前的问题here

问题

如何查看已使用的历史快捷方式? q: 不给我这样的信息。

【问题讨论】:

  • “我无法复制它”是什么意思?你可能想检查verbose
  • @Kent 我的意思是我无法准确找到导致它按下的快捷方式。
  • 我终于找到了这个问题的根本原因。回复here

标签: vim keyboard-shortcuts shortcut


【解决方案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

【讨论】:

    【解决方案2】:

    您可以通过键入以下内容来转储您的活动映射:

    :map
    

    【讨论】:

    • 是的,当然可以,但由于插件等原因,它们有很多!有没有办法可以查看使用过的maps 的历史记录?
    猜你喜欢
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2023-03-27
    • 2017-05-04
    • 1970-01-01
    • 2011-07-20
    • 2021-10-02
    • 2022-01-09
    相关资源
    最近更新 更多