【问题标题】:How to make shortcut for :tabnew, :tabn, :tabp?如何为:tab new,:tab,:tab创建快捷方式?
【发布时间】:2011-10-02 01:41:27
【问题描述】:

在 vim 中,我想将 :tabnew 缩短为 :tn:tabp 缩短为 :th:tabn 缩短为 :tl 在我的 .vimrc 中的某个位置。知道如何重新映射这样的命令吗?

【问题讨论】:

  • 请注意,:tabn 在普通模式下已经可以通过gt 实现,同样:tabp 可以通过gT 实现。 1gt 将转到第一个选项卡,2gt 将转到第二个选项卡,依此类推。
  • 我追求的是:te -> :tabedit 快捷方式。此评论旨在帮助搜索该评论的人找到此问题。

标签: vim keyboard-shortcuts


【解决方案1】:

使用cabbrev:

ca tn tabnew
ca th tabp
ca tl tabn

【讨论】:

  • 啊,这真的很酷,当你去:tn然后点击空格,它会自动完成:tabnew
  • 这太棒了。我不知道cabbrev
  • 请注意,cabbrev 在命令行的任何地方都扩展了缩写,即当您输入:%e th.txt 时,th 将扩展为tabp
【解决方案2】:

您可以将以下代码添加到 ~/.vimrc 文件中,并轻松浏览选项卡。

nnoremap th  :tabfirst<CR>
nnoremap tj  :tabnext<CR>
nnoremap tk  :tabprev<CR>
nnoremap tl  :tablast<CR>
nnoremap tt  :tabedit<Space>
nnoremap tn  :tabnext<Space>
nnoremap tm  :tabm<Space>
nnoremap td  :tabclose<CR>

【讨论】:

  • 请注意,这会覆盖“t”的许多用法(它会找到一个字符并将光标放在它之前 - “f”的变体)。我提到这一点是因为我曾经使用这些映射,直到我意识到我想要“t”回来。
【解决方案3】:

Daniel Kullmann 指出 currently accepted answer 很危险。

如果您使用ca tn tabnew,则无论何时您键入字符串th,它都可能会意外扩展。

例如,:!ls /tmp/tn/ 将扩展为 :!ls /tmp/tabnew/

this answer 中列出的方法不会遇到同样的问题。使用它看起来像这样:

cnoreabbrev <expr> tn getcmdtype() == ":" && getcmdline() == 'tn' ? 'tabnew' : 'tn'
cnoreabbrev <expr> th getcmdtype() == ":" && getcmdline() == 'th' ? 'tabp' : 'th'
cnoreabbrev <expr> tl getcmdtype() == ":" && getcmdline() == 'tl' ? 'tabn' : 'tl'
cnoreabbrev <expr> te getcmdtype() == ":" && getcmdline() == 'te' ? 'tabedit' : 'te'

这些自定义确保扩展仅在命令上完成,其他任何地方都没有。

【讨论】:

  • :te 的最后一个快捷方式 :tabedit 不是原始问题的一部分。我添加它是因为搜索该答案是我到达此页面的方式。希望它能帮助其他人更快地到达这里。
【解决方案4】:

有更好的方式在标签之间导航。 试试看(C 代表 Control):

nmap <silent> <C-n> :tabnext<CR>
nmap <silent> <C-p> :tabprev<CR>
imap <silent> <C-n> <esc><C-n>
imap <silent> <C-p> <esc><C-p>

【讨论】:

  • 你可以用“gt”(tabnext)和“gT”(tabprev)来做到这一点。
【解决方案5】:
"To create a new tab
nnoremap <C-t> :tabnew<Space>
inoremap <C-t> <Esc>:tabnew<Space>

"Tab Navigation
nnoremap <S-h> gT
nnoremap <S-l> gt

【讨论】:

  • 我刚刚更新了它:nnoremap &lt;C-t&gt; :tabnew&lt;CR&gt;inoremap &lt;C-t&gt; &lt;Esc&gt;:tabnew&lt;CR&gt;。在不按 Enter 的情况下打开选项卡。
【解决方案6】:

如果您想保留此处建议的相同映射,https://stackoverflow.com/a/17269521/2743772,并且不想使用其他建议,请尝试在开头添加领导者,这样它就不会覆盖 “t” ,当然,除非你已经有了这些精确的映射。

nnoremap <Leader>th  :tabfirst<CR>
nnoremap <Leader>tj  :tabnext<CR>
nnoremap <Leader>tk  :tabprev<CR>
nnoremap <Leader>tl  :tablast<CR>
nnoremap <Leader>tt  :tabedit<Space>
nnoremap <Leader>tn  :tabnext<Space>
nnoremap <Leader>tm  :tabm<Space>
nnoremap <Leader>td  :tabclose<CR>

【讨论】:

    【解决方案7】:

    Ctrl + PageUpCtrl + PageDown 默认在标签之间移动。

    快捷方式不能被终端绑定才能正常工作。 (我在 Ubuntu 18.04 上)。

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 2015-09-24
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多