选项卡导航映射不起作用

时间:2014-10-27 13:24:50

标签: vim terminator

注意:我使用终结者而不是终端。但是,由于所有其他映射都运行良好,为什么这些映射不起作用。

我尝试在我的vimrc文件中使用这些映射,以便能够使用Tab Navigation。但它根本不起作用。

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>

&#34;还要转到第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 

注意:我安装了 ctags cscope 。所以我认为可能存在一些冲突,因为ctrl-t是从某个标签跳回来的。只有这个映射适用于新标签。

此外,我已检查ctrl-PageDown是否正常工作。

第二个问题:

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

  1. 所有修饰键都应该在Caps等

    中使用
    • C代表Ctrl。
    • A for Alt。
    • S for Shift。
  2. 其他键都很小。

  3. 但关键如:

    • 主页
    • 结束
    • Backspace
    • 逃生
    • PageUp
    • PageDown
    • 标签
    • 功能键等。

    如何使用它们?

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

2 个答案:

答案 0 :(得分:3)

让自己失望。

终端密钥代码

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

您的映射

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

您的:tabprev:tabnext映射可以简化为gTgt映射。就个人而言,我不介意默认的gtgT映射。

<key>符号

据我所知,此案无关紧要。我的所有映射都是小写的。有关<>表示法的列表,请参阅:h key-notation

对于控件<c-..>,alt为<a-...>,shift为<s-...>,你是正确的。示例组合为<c-s-space>。注意:大多数<c-s-...>映射都会失败。

使用标签

Vim的标签与大多数文本编辑器标签不同。它们更像是一组窗口/分裂的视口。此外,Vim以缓冲区为中心,而不像大多数编辑器那样以标签为中心。例如,如果没有标签,使用像Vim的quickfix列表这样的功能通常会更容易(如果必须使用标签,请参阅:h 'switchbuf)。 Vim的选项卡经常妨碍使用拆分,因为有更好的窗口和缓冲区导航命令可用。我个人有很多文件打开(有时100多个)没有使用标签,平均使用1-2个分割没有任何问题。

结论:了解use buffers effectively

结论

我建议你快速打破这个标签工作流程并学会爱缓冲。你不会真的需要你的映射,你也不会反对Vim的本性。

答案 1 :(得分:2)

阅读:help key-notation,了解... Vim的关键符号。


安全地播放通常是一个好主意,因此我建议在映射组合时遵循这些约定:

  • 始终使用大写字母作为修饰键,C表示ControlS表示ShiftA表示Alt },D代表Command(仅限MacVim GUI),M代表Meta

  • 始终对字母键使用小写字母abc…xyz

  • 始终将&#34; special&#34;的第一个字母大写密钥,TabSpaceUp

示例:

<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>


<C-S-w><C-w>无法区分。


:verbose map <C-t>

显示映射到<C-t>的内容以及映射发生的位置。您可以使用它来调试映射。


我同意Peter的意见,你正在错误地使用标签页插入模式。