Я хочу начать использовать Vim в качестве основного редактора, поскольку я слышал, что это действительно потрясающе и продуктивно. Поэтому я установил кучу плагинов с помощью Pathogen и создал хороший длинный файл .vimrc
. Один из плагинов, которые я использую (и очень нравится) является NERDTree
, поэтому я скопировал следующие строки в моем .vimrc
файл из хранилища NERDTree мерзавца:Vim создает пустой буфер вместо выхода
autocmd StdinReadPre * let s:std_in = 1
autocmd VimEnter *
\ NERDTree |
\ wincmd p
autocmd VimEnter *
\ if argc() == 0 && !exists("s:std_in") |
\ NERDTree |
\ wincmd p |
\ endif
autocmd VimEnter *
\ if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") |
\ exe 'NERDTree' argv()[0] |
\ wincmd p |
\ ene |
\ endif
autocmd BufEnter *
\ if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) |
\ q |
\ endif
Теперь мой вопрос: Я хочу сделать это так, нет Независимо от того, ВИМ не уйдет, если я не явно сказать ему (с помощью специальной команды, как :Quit
или с помощью ⌘д на MacVim). Таким образом, в основном, если у меня есть, скажем, буфер, содержащий файл, открытый вместе с буфером NERDTree (или даже если у меня только один открытый буфер, нет NERDTree), когда I :q
или :close
этот буфер, я хочу, чтобы он представлял я с пустым буфером, например, когда вы просто открываете vim. Но я не знаю, как это сделать, поэтому я хотел бы помочь с тем, что добавить к моему
TL; DR: Как вы делаете Vim только с помощью явной команды, а не при выходе из последнего буфер?
(EDIT: Читать комментарии к @ romainl отвечают за дополнительные пояснения о том, что именно я ищу
PS Вот мой полный .vimrc
файл, только в случае, если:.
" => Pathogen and FTPlugins Setup
execute pathogen#infect()
filetype plugin indent on
let mapleader = "\ "
" => Color Theme Options
colorscheme monokai
" => Custom Commands
""""command W w
""""command Q q
""""command Wq wq
""""command WQ wq
""""command B b
command Tabs set listchars=tab:\|\ ,trail:~,extends:>,precedes:<
command NoTabs set listchars=tab:\ \ ,trail:~,extends:>,precedes:<
" =*=> Plugin-Related
" =*=> Theme-Related
command Light
\ set background=light |
\ colorscheme solarized
command Dark
\ set background=dark |
\ colorscheme solarized
" => Custom Mappings
" =*=> Basic Editor Commands
nnoremap ' :%s/
" Find and replace
nnoremap ! :!
" Run shell command
nnoremap <C-o> :bprevious<CR>
nnoremap <C-p> :bnext<CR>
nnoremap <leader> <C-w>
" =*=> Workdir Manipulation
" nnoremap <C-j> :lcd %:p:h<CR>
" =*=> Plugin-Related
" =*=*=> NERDTree
noremap <C-f> :NERDTreeToggle<CR>
noremap <C-d> :NERDTreeFind<CR>
" =*=*=> BufExplorer
nnoremap <Tab> :BufExplorerHorizontalSplit<CR>
" => Settings
syntax on " Enable syntax highlighting
set number " Show line numbers
set ruler " Show row & column number
set splitright " Vertically split to the right by default
set splitbelow " Horizontally split below by default
set ignorecase " Case-insesitive tab completion
set hidden " Allow buffer switching with unwritten changes
set laststatus=2 " Always show status bar (even when there's only one window)
set wildchar=<Tab> wildmenu wildmode=full " Enhanced tab-completion
set listchars=tab:\|\ ,trail:~,extends:>,precedes:< " Set symbols for hidden characters
set list " Show hidden characters
set autochdir " When opening a file, automatically set workingdir (of the current buffer) to the directory containing that file
set nowrap " Disable line wrapping
" =*=> Tab Settings (commonly overwritten in ftplugins)
set tabstop=4
set shiftwidth=4
set shiftround
set autoindent
set smartindent
set expandtab " Output spaces when pressing <Tab>, not actual tab characters ('\t')
" =*=> Split vertically by default
" =*=> GVim Settings
set guioptions-=r " Remove right-hand scroll bar
set guioptions-=L " Remove left-hand scroll bar
" =*=> Plugin-Related
" =*=*=> NERDTree
let NERDTreeShowHidden = 1 " Always show hidden files
let NERDTreeShowBookmarks = 1
" =*=*=> NERDCommenter
let g:NERDSpaceDelims = 1 " Add spaces after comment delimiters by default
let g:NERDCommentEmptyLines = 1 " Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDTrimTrailingWhitespace = 1 " Enable trimming of trailing whitespace when uncommenting
" => AutoCommands
autocmd BufEnter * lcd %:p:h " When opening a file, automatically set workingdir (of the current buffer) to the directory containing that file
" =*=>Plugin-Related
" =*=*=> NERDTree
autocmd StdinReadPre * let s:std_in = 1
autocmd VimEnter *
\ NERDTree |
\ wincmd p
autocmd VimEnter *
\ if argc() == 0 && !exists("s:std_in") |
\ NERDTree |
\ wincmd p |
\ endif
autocmd VimEnter *
\ if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") |
\ exe 'NERDTree' argv()[0] |
\ wincmd p |
\ ene |
\ endif
autocmd BufEnter *
\ if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) |
\ q |
\ endif
" Up to here, copied from repository's README.md
" => Miscellanea
highlight NonText guifg=DimGray ctermbg=NONE guibg=NONE
highlight SpecialKey guifg=DimGray ctermbg=NONE guibg=NONE " Set Hidden Characters Color
Что бы польза этого? Если вы хотите, чтобы пустой буфер просто делал ': enew'. – romainl
Я знаю, но моя проблема в том, что в любое время я хочу закрыть файл (потому что я закончил его редактирование), я ': q' или': close'. Но большую часть времени это совершенно Вим. Мне нужно поведение, подобное большинству редакторов, где он просто откроет пустой файл – Hexa
': q' для окон, а не для буферов. – romainl