在vim中,我想将:tabnew
缩短为:tn
,将:tabp
缩短为:th
,:tabn
缩短为:tl
。 .vimrc
。知道如何重新映射这样的命令吗?
答案 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 + PageUp
和 Ctrl + PageDown
默认在标签之间移动。
快捷方式不能被终端绑定才能工作。 (我使用的是 Ubuntu 18.04)。