如何制作快捷方式:tabnew,:tabn,:tabp?

tes*_*ter 16 vim keyboard-shortcuts

在VIM,我想缩短:tabnew:tn,:tabp:th,:tabn:tl我的地方.vimrc.知道如何重新映射这样的命令吗?

Sam*_*uby 24

使用cabbrev:

ca tn tabnew
ca th tabp
ca tl tabn
Run Code Online (Sandbox Code Playgroud)

  • 请注意,cabbrev会扩展命令行中的缩写,即当您输入`:%e th.txt`时,`th`将扩展为`tabp`. (6认同)

Har*_*sha 6

您可以将以下代码添加到〜/ .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>
Run Code Online (Sandbox Code Playgroud)

  • 只是请注意,这会覆盖“ t”的许多用法(它会找到一个字符并将光标放在它的前面,即“ f”的变体)。我之所以这样说是因为我曾经使用这些映射,直到意识到自己想要“ t”回来。 (2认同)

Ala*_*ith 5

Daniel Kullmann指出目前接受的答案很危险.

如果您使用ca tn tabnew,只要您键入字符串th,它就会意外扩展.

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

本答案中列出的方法不会遇到同样的问题.使用它看起来像这样:

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'
Run Code Online (Sandbox Code Playgroud)

这些自定义确保仅在命令和其他任何地方进行扩展.

  • `:tabedit`的最后一个`:te`快捷方式不是原始问题的一部分.我添加它,因为搜索该答案是我如何到达这个页面.希望它能帮助其他人更快到达这里. (4认同)