如何增大Vim标签栈(tagstack)容量并避免重复条目?
反复按下ctrl+]后,我的tagstack显示如下:
:tags # TO tag FROM line in file/text > 1 1 useParams 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 2 1 useParams 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 3 1 useParams 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 4 1 useParams 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 5 1 useParams 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 6 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 7 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 8 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 9 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 10 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 11 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 12 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 13 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 14 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 15 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 16 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 17 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 18 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 19 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params; 20 1 Params 193 export function useParams<Params extends { [K in keyof Params]?: string } = {}>(): Params;
原有栈顶条目已丢失,针对两个问题的解决方案如下:
1. 能否增大tagstack的容量?
可以。Vim默认tagstack容量为20,栈满时新条目会挤掉最旧的条目。你可以通过设置tagstacksize选项调整容量,在~/.vimrc(Windows系统为~/_vimrc)中添加:
set tagstacksize=50 " 替换为你需要的数值,比如50、100等
保存后重启Vim,tagstack的最大容量就会更新为设置值。
2. 能否避免向tagstack中添加与栈顶条目完全相同的重复条目?
可以。通过自定义快捷键替代默认的<C-]>,在跳转前检查当前条目与栈顶是否重复。在~/.vimrc中添加如下配置:
nnoremap <C-]> :<C-U>call JumpToTagWithoutDuplicate()<CR> function! JumpToTagWithoutDuplicate() let tagname = expand('<cword>') let current_pos = [bufnr('%'), line('.'), col('.'), 0] if !empty(tagstack()) && tagstack()[0].item == current_pos execute 'tag ' . tagname else execute 'tag ' . tagname endif endfunction
该配置会在触发跳转时,先对比当前位置与tag栈顶的位置信息,若完全一致则仅执行跳转、不重复入栈;否则正常完成跳转并将条目加入栈中。
内容的提问来源于stack exchange,提问作者Chris Wesseling
相关产品推荐
相关产品推荐

