注意:我使用的是终结者而不是终端。但是,由于所有其他映射都可以正常工作,为什么这些映射不起作用。
我已经尝试在我的vimrc文件中使用这些映射,以便能够使用Tab导航。但它根本不起作用。
nnoremap <C-S-tab> :tabprevious<CR>
"nnoremap <C-tab> :tabnext<CR>
nnoremap <C-tab> :tabn<CR> "I also tried this
nnoremap <C-t> :tabnew<CR>
inoremap <C-S-tab> <Esc>:tabprevious<CR>i
inoremap <C-tab> <Esc>:tabnext<CR>i
inoremap <C-t> <Esc>:tabnew<CR>
inoremap <C-S-w> <Esc>:tabclose<CR>
"还要转到第n个选项卡使用<A-Fn>
nnoremap <A-F1> 1gt
nnoremap <A-F2> 2gt
nnoremap <A-F3> 3gt
nnoremap <A-F4> 4gt
nnoremap <A-F5> 5gt
nnoremap <A-F6> 6gt
nnoremap <A-F7> 7gt
nnoremap <A-F8> 8gt
nnoremap <A-F9> 9gt
nnoremap <A-F10> 10gt
注意:我安装了ctag和cscope。所以我认为可能会有一些冲突,因为ctrl-t
是从某个标签跳回来的。只有这个映射适用于新的选项卡。
我还检查了ctrl-PageDown
是否出于同样的目的正常工作。
第二个问题:
这个键表示法是如何在vimrc中工作的。是这样的吗:
所有修改键都应该在类似的大写字母中使用
- C表示Ctrl
- A代表Alt
- S表示移位
其他的钥匙都是小的。
但是像这样的密钥呢
- 主页
- 完
- Backspace
- Escape
- PageUp
- PageDown
- 选项卡
- 功能键等
如何使用它们?
在这里我读到了这些应该如何在映射中使用,但即使他们在映射中也使用了tab而不是tab。
为失望做好准备。
终端密钥
Vim接受终端键代码,因此并非所有的键组合都是可能的。找出哪些键是可识别的最好方法是打开插入模式,然后按ctrl+v,然后按组合键。这将显示原始代码。对另一个组合键执行此操作。如果原始代码相同,则Vim无法区分它们。例如ctrl+v1ctrl+移位1+选项卡 您可能应该避免对切换选项卡执行插入模式映射。它根本不是Vim方式,因为插入模式应该只在短脉冲串中使用。 您的 据我所知,这个案子无关紧要。我的所有映射都是小写的。有关 Vim的选项卡不同于大多数文本编辑器选项卡。它们更像是一组窗口/拆分的视口。此外,Vim是以缓冲区为中心的,而不是像大多数编辑器那样以选项卡为中心。例如,使用像Vim的快速修复列表这样的功能通常在没有选项卡的情况下更容易(如果必须使用选项卡,请参见 底线:学会有效地使用缓冲区。 我建议你尽快打破这个标签工作流程,学会喜欢缓冲区。您不会真正需要映射,也不会违背Vim的本质。您的映射
:tabprev
和:tabnext
映射可以简化为gT
和gt
映射。就我个人而言,我并不介意默认的gt
或gT
映射。<key>
表示法<>
符号的列表,请参见:h key-notation
。<c-..>
表示控制,<a-...>
表示alt,<s-...>
表示移位。示例组合为<c-s-space>
。注意:大多数<c-s-...>
映射都将失败。使用选项卡
:h 'switchbuf
)。Vim的选项卡经常妨碍使用拆分,因为有更好的窗口和缓冲区导航命令可用。我个人有很多文件打开(有时是100+),不使用选项卡,平均使用1-2个拆分,没有任何问题。结论
阅读:help key-notation
了解…Vim的键表示法的解释。
一般来说,安全起见是个好主意,所以我建议在映射组合时遵循以下约定:
-
修改键始终使用大写字母,
C
用于Control
,S
用于Shift
,A
用于Alt
,D
用于Command
(仅限MacVim GUI),M
用于Meta
, -
字母键
abc…xyz
、始终使用小写字母 -
始终将"特殊"键
Tab
、Space
、Up
等的第一个字母大写。
示例:
<S-Up>
<C-r>
<A-LeftMouse>
但是,下面的符号也同样有效,所以…无论你选择什么符号,都要尽量保持一致:
<s-UP>
在单个映射中使用多个修饰符是不可靠的,因此从长远来看,如果完全避免使用它们,效果会更好。
nnoremap <C-S-j> :echo "csj"<CR>
nnoremap <C-j> :echo "cj"<CR>
现在在正常模式下按下<C-j>
和<C-S-j>
。
CCD_ 36与CCD_。
:verbose map <C-t>
显示映射到<C-t>
的内容以及映射发生的位置。您可以使用它来调试映射。
我同意Peter的观点,你错误地使用了标签页和插入模式。