We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[help keystrokes] Help keystrokes has longnames for about 20 commands
**Small description**
Keystrokes in HelpSheet display commands not keystrokes for about 20 commands.

**Expected result**
Keystroke values

**Actual result with screenshot**

sheet	longname	keystrokes
TableSheet	go-next-selected	next-selected
TableSheet	go-prev-selected	prev-selected
TableSheet	setcol-clipboard	paste-cells
TableSheet	search-prev	prev-search
TableSheet	setcol-input	edit-cells
TableSheet	setcol-fill	fill-nulls
TableSheet	go-next-value	next-value
TableSheet	go-right-page	page-right
BaseSheet	jump-prev	prev-sheet
TableSheet	go-prev-value	prev-value
BaseSheet	open-new	add-sheet
TableSheet	go-next-null	next-null
TableSheet	go-left-page	page-left
TableSheet	go-prev-null	prev-null
TableSheet	open-row	dive-row
DirSheet	open-row	dive-row
BaseSheet	open-statuses	statuses
Canvas	zoomout-mouse	2097152
BaseSheet	show-status	status

**Steps to reproduce with sample data and a .vd**
Visit the help sheet, and look for the long commands above.

**Additional context**
Please include the version of VisiData. Latest from develop


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `visidata/help.py`
Content:
```
1 from visidata import *
2 
3 
4 class HelpSheet(MetaSheet):
5     'Show all commands available to the source sheet.'
6     rowtype = 'commands'
7     precious = False
8     _ordering = [('sheet', False), ('longname', False)]
9 
10     columns = [
11         ColumnAttr('sheet'),
12         ColumnAttr('longname'),
13         Column('keystrokes', getter=lambda col,row: col.sheet.revbinds.get(row.longname)),
14         Column('description', getter=lambda col,row: col.sheet.cmddict[(row.sheet, row.longname)].helpstr),
15         ColumnAttr('execstr', width=0),
16         Column('logged', width=0, getter=lambda col,row: isLoggableCommand(row.longname)),
17     ]
18     nKeys = 2
19 
20     def iterload(self):
21         from pkg_resources import resource_filename
22         cmdlist = VisiDataMetaSheet('cmdlist', source=None)
23 
24         self.cmddict = {}
25         itcmds = vd.commands.iterall()
26         for (k, o), v in itcmds:
27             yield v
28             v.sheet = o
29             self.cmddict[(v.sheet, v.longname)] = v
30 
31         for cmdrow in cmdlist.rows:
32             k = (cmdrow.sheet, cmdrow.longname)
33             if k in self.cmddict:
34                 self.cmddict[k].helpstr = cmdrow.helpstr
35 
36         self.revbinds = {}  # [longname] -> keystrokes
37         itbindings = vd.bindkeys.iterall()
38         for (keystrokes, _), longname in itbindings:
39             if keystrokes not in self.revbinds:
40                 self.revbinds[longname] = keystrokes
41 
42 
43 @VisiData.api
44 @asyncthread
45 def help_search(vd, sheet, regex):
46     vs = HelpSheet(source=None)
47     vs.rows = []  # do not trigger push reload
48     vd.push(vs)   # push first, then reload
49     vd.sync(vs.reload())
50 
51     # find rows matching regex on original HelpSheet
52     rowidxs = list(vd.searchRegex(vs, regex=regex, columns="visibleCols"))
53 
54     # add only matching rows
55     allrows = vs.rows
56     vs.rows = []
57     for rowidx in rowidxs:
58         vs.addRow(allrows[rowidx])
59 
60 
61 @VisiData.global_api
62 def openManPage(vd):
63     from pkg_resources import resource_filename
64     import os
65     with SuspendCurses():
66         os.system(' '.join(['man', resource_filename(__name__, 'man/vd.1')]))
67 
68 
69 # in VisiData, ^H refers to the man page
70 globalCommand('^H', 'sysopen-help', 'openManPage()', 'view vd man page')
71 BaseSheet.addCommand('z^H', 'help-commands', 'vd.push(HelpSheet(name + "_commands", source=sheet, revbinds={}))', 'view sheet of command longnames and keybindings for current sheet')
72 BaseSheet.addCommand('gz^H', 'help-commands-all', 'vd.push(HelpSheet("all_commands", source=None, revbinds={}))', 'view sheet of command longnames and keybindings for all sheet types')
73 globalCommand(None, 'help-search', 'help_search(sheet, input("help: "))', 'search through command longnames with search terms')
74 
75 BaseSheet.bindkey('KEY_F(1)', 'sysopen-help')
76 BaseSheet.bindkey('KEY_BACKSPACE', 'sysopen-help')
77 BaseSheet.bindkey('zKEY_F(1)', 'help-commands')
78 BaseSheet.bindkey('zKEY_BACKSPACE', 'help-commands')
79
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/visidata/help.py b/visidata/help.py
--- a/visidata/help.py
+++ b/visidata/help.py
@@ -36,7 +36,7 @@
         self.revbinds = {}  # [longname] -> keystrokes
         itbindings = vd.bindkeys.iterall()
         for (keystrokes, _), longname in itbindings:
-            if keystrokes not in self.revbinds:
+            if (keystrokes not in self.revbinds) and ('-' not in keystrokes or keystrokes[-1] == '-'):
                 self.revbinds[longname] = keystrokes

{"golden_diff": "diff --git a/visidata/help.py b/visidata/help.py\n--- a/visidata/help.py\n+++ b/visidata/help.py\n@@ -36,7 +36,7 @@\n         self.revbinds = {}  # [longname] -> keystrokes\n         itbindings = vd.bindkeys.iterall()\n         for (keystrokes, _), longname in itbindings:\n-            if keystrokes not in self.revbinds:\n+            if (keystrokes not in self.revbinds) and ('-' not in keystrokes or keystrokes[-1] == '-'):\n                 self.revbinds[longname] = keystrokes\n", "issue": "[help keystrokes] Help keystrokes has longnames for about 20 commands\n**Small description**\r\nKeystrokes in HelpSheet display commands not keystrokes for about 20 commands.\r\n\r\n**Expected result**\r\nKeystroke values\r\n\r\n**Actual result with screenshot**\r\n\r\nsheet\tlongname\tkeystrokes\r\nTableSheet\tgo-next-selected\tnext-selected\r\nTableSheet\tgo-prev-selected\tprev-selected\r\nTableSheet\tsetcol-clipboard\tpaste-cells\r\nTableSheet\tsearch-prev\tprev-search\r\nTableSheet\tsetcol-input\tedit-cells\r\nTableSheet\tsetcol-fill\tfill-nulls\r\nTableSheet\tgo-next-value\tnext-value\r\nTableSheet\tgo-right-page\tpage-right\r\nBaseSheet\tjump-prev\tprev-sheet\r\nTableSheet\tgo-prev-value\tprev-value\r\nBaseSheet\topen-new\tadd-sheet\r\nTableSheet\tgo-next-null\tnext-null\r\nTableSheet\tgo-left-page\tpage-left\r\nTableSheet\tgo-prev-null\tprev-null\r\nTableSheet\topen-row\tdive-row\r\nDirSheet\topen-row\tdive-row\r\nBaseSheet\topen-statuses\tstatuses\r\nCanvas\tzoomout-mouse\t2097152\r\nBaseSheet\tshow-status\tstatus\r\n\r\n**Steps to reproduce with sample data and a .vd**\r\nVisit the help sheet, and look for the long commands above.\r\n\r\n**Additional context**\r\nPlease include the version of VisiData. Latest from develop\r\n\n", "before_files": [{"content": "from visidata import *\n\n\nclass HelpSheet(MetaSheet):\n    'Show all commands available to the source sheet.'\n    rowtype = 'commands'\n    precious = False\n    _ordering = [('sheet', False), ('longname', False)]\n\n    columns = [\n        ColumnAttr('sheet'),\n        ColumnAttr('longname'),\n        Column('keystrokes', getter=lambda col,row: col.sheet.revbinds.get(row.longname)),\n        Column('description', getter=lambda col,row: col.sheet.cmddict[(row.sheet, row.longname)].helpstr),\n        ColumnAttr('execstr', width=0),\n        Column('logged', width=0, getter=lambda col,row: isLoggableCommand(row.longname)),\n    ]\n    nKeys = 2\n\n    def iterload(self):\n        from pkg_resources import resource_filename\n        cmdlist = VisiDataMetaSheet('cmdlist', source=None)\n\n        self.cmddict = {}\n        itcmds = vd.commands.iterall()\n        for (k, o), v in itcmds:\n            yield v\n            v.sheet = o\n            self.cmddict[(v.sheet, v.longname)] = v\n\n        for cmdrow in cmdlist.rows:\n            k = (cmdrow.sheet, cmdrow.longname)\n            if k in self.cmddict:\n                self.cmddict[k].helpstr = cmdrow.helpstr\n\n        self.revbinds = {}  # [longname] -> keystrokes\n        itbindings = vd.bindkeys.iterall()\n        for (keystrokes, _), longname in itbindings:\n            if keystrokes not in self.revbinds:\n                self.revbinds[longname] = keystrokes\n\n\n@VisiData.api\n@asyncthread\ndef help_search(vd, sheet, regex):\n    vs = HelpSheet(source=None)\n    vs.rows = []  # do not trigger push reload\n    vd.push(vs)   # push first, then reload\n    vd.sync(vs.reload())\n\n    # find rows matching regex on original HelpSheet\n    rowidxs = list(vd.searchRegex(vs, regex=regex, columns=\"visibleCols\"))\n\n    # add only matching rows\n    allrows = vs.rows\n    vs.rows = []\n    for rowidx in rowidxs:\n        vs.addRow(allrows[rowidx])\n\n\n@VisiData.global_api\ndef openManPage(vd):\n    from pkg_resources import resource_filename\n    import os\n    with SuspendCurses():\n        os.system(' '.join(['man', resource_filename(__name__, 'man/vd.1')]))\n\n\n# in VisiData, ^H refers to the man page\nglobalCommand('^H', 'sysopen-help', 'openManPage()', 'view vd man page')\nBaseSheet.addCommand('z^H', 'help-commands', 'vd.push(HelpSheet(name + \"_commands\", source=sheet, revbinds={}))', 'view sheet of command longnames and keybindings for current sheet')\nBaseSheet.addCommand('gz^H', 'help-commands-all', 'vd.push(HelpSheet(\"all_commands\", source=None, revbinds={}))', 'view sheet of command longnames and keybindings for all sheet types')\nglobalCommand(None, 'help-search', 'help_search(sheet, input(\"help: \"))', 'search through command longnames with search terms')\n\nBaseSheet.bindkey('KEY_F(1)', 'sysopen-help')\nBaseSheet.bindkey('KEY_BACKSPACE', 'sysopen-help')\nBaseSheet.bindkey('zKEY_F(1)', 'help-commands')\nBaseSheet.bindkey('zKEY_BACKSPACE', 'help-commands')\n", "path": "visidata/help.py"}], "after_files": [{"content": "from visidata import *\n\n\nclass HelpSheet(MetaSheet):\n    'Show all commands available to the source sheet.'\n    rowtype = 'commands'\n    precious = False\n    _ordering = [('sheet', False), ('longname', False)]\n\n    columns = [\n        ColumnAttr('sheet'),\n        ColumnAttr('longname'),\n        Column('keystrokes', getter=lambda col,row: col.sheet.revbinds.get(row.longname)),\n        Column('description', getter=lambda col,row: col.sheet.cmddict[(row.sheet, row.longname)].helpstr),\n        ColumnAttr('execstr', width=0),\n        Column('logged', width=0, getter=lambda col,row: isLoggableCommand(row.longname)),\n    ]\n    nKeys = 2\n\n    def iterload(self):\n        from pkg_resources import resource_filename\n        cmdlist = VisiDataMetaSheet('cmdlist', source=None)\n\n        self.cmddict = {}\n        itcmds = vd.commands.iterall()\n        for (k, o), v in itcmds:\n            yield v\n            v.sheet = o\n            self.cmddict[(v.sheet, v.longname)] = v\n\n        for cmdrow in cmdlist.rows:\n            k = (cmdrow.sheet, cmdrow.longname)\n            if k in self.cmddict:\n                self.cmddict[k].helpstr = cmdrow.helpstr\n\n        self.revbinds = {}  # [longname] -> keystrokes\n        itbindings = vd.bindkeys.iterall()\n        for (keystrokes, _), longname in itbindings:\n            if (keystrokes not in self.revbinds) and ('-' not in keystrokes or keystrokes[-1] == '-'):\n                self.revbinds[longname] = keystrokes\n\n\n@VisiData.api\n@asyncthread\ndef help_search(vd, sheet, regex):\n    vs = HelpSheet(source=None)\n    vs.rows = []  # do not trigger push reload\n    vd.push(vs)   # push first, then reload\n    vd.sync(vs.reload())\n\n    # find rows matching regex on original HelpSheet\n    rowidxs = list(vd.searchRegex(vs, regex=regex, columns=\"visibleCols\"))\n\n    # add only matching rows\n    allrows = vs.rows\n    vs.rows = []\n    for rowidx in rowidxs:\n        vs.addRow(allrows[rowidx])\n\n\n@VisiData.global_api\ndef openManPage(vd):\n    from pkg_resources import resource_filename\n    import os\n    with SuspendCurses():\n        os.system(' '.join(['man', resource_filename(__name__, 'man/vd.1')]))\n\n\n# in VisiData, ^H refers to the man page\nglobalCommand('^H', 'sysopen-help', 'openManPage()', 'view vd man page')\nBaseSheet.addCommand('z^H', 'help-commands', 'vd.push(HelpSheet(name + \"_commands\", source=sheet, revbinds={}))', 'view sheet of command longnames and keybindings for current sheet')\nBaseSheet.addCommand('gz^H', 'help-commands-all', 'vd.push(HelpSheet(\"all_commands\", source=None, revbinds={}))', 'view sheet of command longnames and keybindings for all sheet types')\nglobalCommand(None, 'help-search', 'help_search(sheet, input(\"help: \"))', 'search through command longnames with search terms')\n\nBaseSheet.bindkey('KEY_F(1)', 'sysopen-help')\nBaseSheet.bindkey('KEY_BACKSPACE', 'sysopen-help')\nBaseSheet.bindkey('zKEY_F(1)', 'help-commands')\nBaseSheet.bindkey('zKEY_BACKSPACE', 'help-commands')\n", "path": "visidata/help.py"}]}