vim - 选项卡导航映射不起作用

标签 vim terminator

注意:我使用的是Terminator 而不是终端。但是,由于所有其他映射都工作正常,为什么这些映射不起作用。

我已尝试在我的 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个tabpage使用<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 

注意:我安装了ctagscscope。所以我认为可能存在一些冲突 ctrl-t就是从某个标签跳回。并且只有此映射适用于新标签。

我也检查了ctrl-PageDown出于同样的目的工作正常。

第二个问题:

这个键符号在 vimrc 中是如何工作的。 是不是像这样:

  1. 所有修饰键都应该像大写一样使用

    • C 代表 Ctrl。
    • A 代表 Alt。
    • S 代表轮类。
  2. 其他的键都是小的。

但是像这样的键呢:

  • 首页
  • 结束
  • 退格
  • 逃离
  • 上一页
  • 向下翻页
  • 制表符
  • 功能键等

如何使用它们?

Here 我读到这些应该如何在映射中使用,但即使他们在映射中使用 tab 而不是 Tab

最佳答案

做好失望的准备。

终端键码

Vim 接受终端键码,所以不是所有的键组合都是可能的。确定哪些键可识别的最佳方法是打开插入模式并按 ctrl+v,然后按您的组合键。这将向您展示原始代码。对另一个组合键执行此操作。如果原始代码相同,那么 Vim 无法区分它们。例如ctrl+v ctrl+shift+tab.

你的映射

您应该避免使用插入模式映射来切换选项卡。它根本不是 Vim 的方式,因为插入模式只应在短时间内使用。

你的 :tabprev:tabnext映射可以简化为 gTgt映射。我个人不介意默认 gtgT映射。

<key>符号

据我所知,大小写无关紧要。我所有的映射都是小写的。有关 <> 的列表符号请看:h key-notation .

您在 <c-..> 上是正确的用于控制,<a-...>对于 alt,和 <s-...>换类。示例组合为 <c-s-space> .注:最<c-s-...>映射将失败。

使用标签

Vim 的选项卡与大多数文本编辑器的选项卡不同。它们更像是一组窗口/拆分的视口(viewport)。此外,Vim 以缓冲区为中心,而不是像大多数编辑器那样以制表符为中心。例如,在没有制表符的情况下使用像 Vim 的快速修复列表这样的功能通常更容易(如果必须使用制表符,请参见 :h 'switchbuf)。 Vim 的选项卡经常妨碍使用拆分,因为有更好的窗口和缓冲区导航命令可用。我个人打开了许多文件(有时超过 100 个),不使用选项卡,平均使用 1-2 次拆分没有任何问题。

底线:学习 use buffers effectively .

结论

我建议您快速打破此选项卡工作流程并学会喜欢缓冲区。你不会真的需要你的映射,你也不会违背 Vim 的本性。

关于vim - 选项卡导航映射不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588576/

相关文章:

vim - 检查 vim 插件中是否设置了全局插件变量的优雅方法

Vim pumvisible() 调用放入随机文本

vim - 为什么我的 Vim 以替换模式启动?

java - 添加 "\0"(null)后是否可以向字符串添加数据?

c++ - QtCreator:将字符串打印到终端的最佳方法是什么?

logging - 如何在终结者中激活自动登录?

c - 将带有空终止符的char添加到C中的字符串

vim - 删除Vim中的所有空缓冲区

vim - 如何在 "private mode"中启动 vim

C - 为什么在将单个字符分配给数组时自动添加字符串终止符?