【问题标题】:How to remap the following to "Control + Tilda" like in VS Code for opening a terminal?如何将以下内容重新映射到 VS Code 中的“Control + Tilda”以打开终端?
【发布时间】:2023-01-12 22:47:51
【问题描述】:

鉴于此代码:

map <F6> :let $VIM_DIR=expand('%:p:h')<CR>:terminal<CR>cd $VIM_DIR<CR>

我可以按 F6,vim 会自动在终端中打开当前目录的拆分。

我想将此键盘映射更改为类似 Control + ~ 的内容。

我尝试了什么:

map <c+~> :let $VIM_DIR=expand('%:p:h')<CR>:terminal<CR>cd $VIM_DIR<CR>
map <c+`> :let $VIM_DIR=expand('%:p:h')<CR>:terminal<CR>cd $VIM_DIR<CR>

map <C+~> :let $VIM_DIR=expand('%:p:h')<CR>:terminal<CR>cd $VIM_DIR<CR>
map <C+`> :let $VIM_DIR=expand('%:p:h')<CR>:terminal<CR>cd $VIM_DIR<CR>

没有工作。

【问题讨论】:

  • 在Vim中,&lt;C-a&gt;并不是真正的“Control键+a”,它实际上是ASCII控制码^A。由于 ASCII 中没有 ^~ 控制代码,因此您不能真正期望 &lt;C-~&gt; 起作用。

标签: vim


【解决方案1】:

检查给定快捷键的正确键盘符号的一个好方法是在 vim 命令行上使用 Ctrl-V。例如,在带有英国键盘的 Windows GVIM 中,按 Ctrl-~ 意味着按 Ctrl-Shift-# (as ~ is "above" the # on my keyboard)。出于某种原因,如果我按下:

: Ctrl-V Ctrl-Shift-#

我明白了:

暗示 Vim 将 Ctrl-Shift-# 解释为 &lt;C-S-^&gt;。因此,如果我想让它与F6 一样,我可以利用recursive mappings 并输入:

:nmap <C-S-^> <F6>

它应该工作。请注意,如果我在命令行上以交互方式键入此内容,我可以将 &lt;C-S-^&gt; 位键入为 Ctrl-V Ctrl-Shift-#。

并非所有键盘快捷键都可以这样工作,因为有些快捷键可能会被其他进程占用(例如 Windows 上的 Win-L 会锁定计算机,我认为您无法在 Vim 中覆盖它)。

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2022-09-25
    • 2018-03-10
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多