vim 如何像VS代码那样将下面的代码重新Map为“Control + Tilda”来打开一个终端?

lf3rwulv  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(121)

给定以下代码:

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

我可以按F6键,然后vim自动打开一个与终端中当前目录的分割。
我想把这个键Map改成类似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>

没有一个能用。

carvr3hs

carvr3hs1#

检查给定快捷键的正确键盘符号的一个好方法是在vim命令行中使用Ctrl-V。例如,在Windows GVIM中使用英式键盘,按Ctrl-~意味着按Ctrl-Shift-#(因为~在键盘上#的"上方")。由于某种原因,如果我按:
: Ctrl-V Ctrl-Shift-#
我得到这个:

这意味着Vim将Ctrl-Shift-#解释为<C-S-^>,因此,如果我想让它做与F6相同的事情,我可以利用递归Map并键入:

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

它应该可以工作,注意如果我在命令行中交互输入,我可以输入<C-S-^>位。
不是所有的键盘快捷键都能这样工作,因为有些可能会被其他进程占用(例如,Windows上的Win-L会锁定计算机,我不认为你可以在Vim中覆盖它)。

相关问题