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

时间:2011-07-09 23:59:09

标签: vim keyboard-shortcuts

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

7 个答案:

答案 0 :(得分:23)

使用cabbrev

ca tn tabnew
ca th tabp
ca tl tabn

答案 1 :(得分: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>

答案 2 :(得分:5)

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'

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

答案 3 :(得分:4)

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

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>

答案 4 :(得分:4)

"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

答案 5 :(得分:0)

如果您要保留此处建议的映射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>

答案 6 :(得分:0)

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

快捷方式不能被终端绑定才能工作。 (我使用的是 Ubuntu 18.04)。

相关问题