feat .vimrc: 增加判定當前視窗大小來決定要不要自動開啟nerdtree

This commit is contained in:
Yuan Chiu 2025-04-26 08:16:12 +08:00
parent 7cac40a66e
commit 1b14b96085

View File

@ -204,39 +204,45 @@ let g:airline#extensions#tabline#enabled = 1
nnoremap <C-t> :NERDTreeToggle<CR> nnoremap <C-t> :NERDTreeToggle<CR>
nmap <F9> :NERDTreeToggle<CR> nmap <F9> :NERDTreeToggle<CR>
function! s:MaybeStartNERDTree()
if winheight(0) > 20 && winwidth(0) > 140
" 啟動時自動開啟 NERDTree且只在沒有指定檔案時開啟
autocmd VimEnter * NERDTree | wincmd p
"autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
" 啟動時自動開啟 NERDTree且只在沒有指定檔案時開啟 " 如果關掉最後一個 buffer並且只剩下 NERDTree則關閉 Vim
autocmd VimEnter * NERDTree | wincmd p autocmd BufEnter * if winnr('$') == 1 && getbufvar('%', '&filetype') == 'nerdtree' | quit | endif
"autocmd StdinReadPre * let s:std_in=1 let NERDTreeShowHidden=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif "let g:nerdtree_tabs_open_on_console_startup=1
let NERDTreeQuitOnOpen=0
" 如果關掉最後一個 buffer並且只剩下 NERDTree則關閉 Vim "" 沒有文件開啟的時候關閉nerdtree
autocmd BufEnter * if winnr('$') == 1 && getbufvar('%', '&filetype') == 'nerdtree' | quit | endif autocmd QuitPre * if empty(&bt) | lclose | endif
let NERDTreeShowHidden=1
"let g:nerdtree_tabs_open_on_console_startup=1
let NERDTreeQuitOnOpen=0
"" 沒有文件開啟的時候關閉nerdtree "" Start NERDTree
autocmd QuitPre * if empty(&bt) | lclose | endif "autocmd VimEnter * NERDTree
"" Go to previous (last accessed) window.
"autocmd VimEnter * wincmd p
"" Start NERDTree "autocmd StdinReadPre * let s:std_in=1
"autocmd VimEnter * NERDTree "autocmd VimEnter * NERDTree | if argc() > 0 || exists("s:std_in") | wincmd p | endif
"" Go to previous (last accessed) window. "autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
"autocmd VimEnter * wincmd p
"autocmd StdinReadPre * let s:std_in=1 " Start NERDTree and put the cursor back in the other window.
"autocmd VimEnter * NERDTree | if argc() > 0 || exists("s:std_in") | wincmd p | endif autocmd VimEnter * NERDTree | wincmd p
"autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
" Start NERDTree and put the cursor back in the other window. " Exit Vim if NERDTree is the only window remaining in the only tab.
autocmd VimEnter * NERDTree | wincmd p autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
" Exit Vim if NERDTree is the only window remaining in the only tab. " If another buffer tries to replace NERDTree, put it in the other window, and bring back NERDTree.
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif autocmd BufEnter * if winnr() == winnr('h') && bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
" If another buffer tries to replace NERDTree, put it in the other window, and bring back NERDTree.
autocmd BufEnter * if winnr() == winnr('h') && bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
\ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif \ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif
" Mirror the NERDTree before showing it. This makes it the same on all tabs. " Mirror the NERDTree before showing it. This makes it the same on all tabs.
nnoremap <C-n> :NERDTreeMirror<CR>:NERDTreeFocus<CR> nnoremap <C-n> :NERDTreeMirror<CR>:NERDTreeFocus<CR>
endif
endfunction
" 自動執行
autocmd VimEnter * call s:MaybeStartNERDTree()