nerdtree/command-t - and split windows?

290 views
Skip to first unread message

Rick R

unread,
Sep 14, 2010, 4:50:21 PM9/14/10
to vim...@googlegroups.com
I'm still getting the hang of split of windows and I'm stumped trying to figure out this behavior.

I'm using NerdTree and Command-T to open up files. If I happen to split the current file (:sp) and then I go to open a new file in that split window (using nerdtree navigation or command-t) it opens the file in that split window. Everything is fine. However, when I'm finished with wanting a split pane and I quit that window (:q) - new files I try to open seem to always open in a split pane? I do not want that to happen and can't figure out what I'm doing wrong. No matter which window I close (top or bottom if horizontal split), new ones seem to open up in a split pane.

How do I close a split window and force any new windows to use the existing window that is remaining (not counting the left hand window with NerdTree in it.) I've been reading over the vim windows docs but am not having much luck figuring out what's going wrong.

--
Rick R

Wincent Colaiuta

unread,
Sep 15, 2010, 6:35:30 AM9/15/10
to vim_use
On 14 sep, 22:50, Rick R <ric...@gmail.com> wrote:
>
> How do I close a split window and force any new windows to use the existing
> window that is remaining (not counting the left hand window with NerdTree in
> it.) I've been reading over the vim windows docs but am not having much luck
> figuring out what's going wrong.

Hi, I'm the author of Command-T. The default behavior is to open
normally (ie. without a split) in whatever existing window is current.
It will try to avoid opening in "special" windows like the NERDTree
pane, or MiniBufExplorer etc. If one of those is current, it will
cycle through until it finds one which is a non-"special" window, and
only if there are none will it resort to splitting.

So if you're seeing splitting all the time, my first suspicion would
be something fishy in your .vimrc file. Could you post that so we can
look at it?

Cheers,
Wincent

Rick R

unread,
Sep 15, 2010, 11:30:54 AM9/15/10
to vim...@googlegroups.com

Being new to vim I 'think' it seems related to when I have a file that I've edited but not saved. So for example:

I split a window.
Make some changed in the original window but don't save them.
Now work in the other window and eventually close it.
When I now use NerdTree or command-t it opens a new file in a split window.

IF I first save the other file in the original window and the close the split window... new windows opened from command-t or nerdtree open just fine.

What's interesting though is if I had never opened a split window, then behavior seems fine.... even if files aren't saved I simply get new buffers created in the original main window. (Maybe doing :q isn't really closing the split window? I'm still sort of new to vim so I could be doing something wrong.)

I guess I could just remember to always save files after using a split window and things will be ok. I'd still prefer that simply a new buffer is created in the existing window I have, even if the file there is dirty, instead of relying on an old split window position.

(By the way, Wincent I switched to your Command-T after trying FuzzyFinder - love Command-T MUCH more! One thing drove me crazy about fuzzyFinder was that if I was in the NerdTree window and then used fuzzyFinder - it would open up the stupid file right in the narrow NerdTree window. Yours does NOT behave that way and is awesome. Thanks.)

I attached my .vimrc (I know it's probably a mess so if something jumps out at you as being bad/crappy in ANY area feel free to correct me... I need to give it more attention:)
Also pasted it here if it's more clear: http://pastie.org/1160737

-------
" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible
 
" allow backspacing over everything in insert mode
set backspace=indent,eol,start

"set directory=/Users/rick/.vimbackups/
set backupdir=/Users/rick/.vimbackups/
set backup
"set nobackup
"if has("vms")
"  set nobackup        " do not keep a backup file, use versions instead
"else
"  set backup        " keep a backup file
"endif

set history=50        " keep 50 lines of command line history
set ruler        " show the cursor position all the time
set showcmd        " display incomplete commands
set incsearch        " do incremental searching

" Make backspace and cursor keys wrap accordingly"
set whichwrap+=<,>,h,l

" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
" let &guioptions = substitute(&guioptions, "t", "", "g")

" Don't use Ex mode, use Q for formatting
"map Q gq
vnoremap Q gq
nnoremap Q gqap

" This is an alternative that also works in block mode, but the deleted
" text is lost and it only works for putting the current register.
"vnoremap p "_dp

" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
  syntax on
  set hlsearch
endif

" Set leader to comma
let mapleader = ","

"Set up commands for FuzzyFinder
"even though i have this plugin i'm using the the fuzzy_finder_textmate
"map <leader>b :FufBuffer<CR>
"map <leader>r :FufMruFile<CR>
"map <leader>f :FufFile **/<CR>
"map <leader>R :ruby finder.rescan!<CR>:FuzzyFinderRemoveCache<CR>:exe ":echo 'rescan complete'"<CR>
" a leading space allows a recursive search
"let g:fuf_abbrevMap = {
"\   "^ " : [ "**/", ],
"\ }

map <Leader>c :TComment<CR>
map <Leader>vf :RVfunctional
map <Leader>l :!ruby <C-r>% \| less<CR>
map <Leader>rm :Rmodel
map <Leader>rv :Rview
map <Leader>rc :Rcontroller
map <Leader>rvm :RVmodel
map <Leader>rsm :RSmodel
map <Leader>rvv :RVview
map <Leader>rsv :RSview
"map <Leader>n ,w,t
map <Leader>o ?def <CR>:nohl<CR>w"zy$:!ruby -I"test" <C-r>% -n <C-r>z<CR>
map <Leader>p :set paste<CR>i
map <Leader>r :e doc/README_FOR_APP<CR> " Edit the README_FOR_APP (makes :R commands work)
map <Leader>f :!ruby -I"test" %<CR>
map <Leader>u :Runittest
map <Leader>vu :RVunittest
map <Leader>su :RSunittest
map <Leader>w <C-w>w

" nerd tree shortcut
map <leader>n :NERDTree<CR>

" Only do this part when compiled with support for autocommands.
if has("autocmd")
 

  " Put these in an autocmd group, so that we can delete them easily.
  augroup vimrcEx
  au!

  " For all text files set 'textwidth' to 78 characters.
  " autocmd FileType text setlocal textwidth=78

  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  autocmd BufReadPost *
    \ if line("'\"") > 0 && line("'\"") <= line("$") |
    \   exe "normal g`\"" |
    \ endif

  augroup END

else
  set autoindent        " always set autoindenting on
endif " has("autocmd")

"set expandtab
set noexpandtab "real tabs
set tabstop=4
set shiftwidth=4
set softtabstop=4 "makes the spaces feel like real tabs
set nu
set hlsearch
set incsearch
set ignorecase smartcase
"set wm=8 "wraps margin 4 spaces from border
"set wrap linebreak textwidth=0
set nowrap

"nnoremap <C-n> :bnext<CR>
"nnoremap <C-p> :bprevious<CR>
nnoremap j gj
nnoremap k gk
vnoremap j gj
vnoremap k gk
nnoremap <Down> gj
nnoremap <Up> gk
vnoremap <Down> gj
vnoremap <Up> gk
inoremap <Down> <C-o>gj
inoremap <Up> <C-o>gk
colors desert
set guifont=Courier:h14
set ul=50

map <F3> :let &hls=!&hls<CR>
map <F2> <Esc>:1,$!xmllint --format -<CR>
"-- always encode to UTF-8 %!xmllint --format --encode UTF-8 -
"
" Make it way easier to switch windows (<leader>w)
nmap <leader>w <C-w><C-w>_

nnoremap <silent> <F7> :YRShow<CR>


let g:xml_syntax_folding=0


"this would set the current directory to whatever dir you are in,
"not good though when using fuzzy file search with nerdtree so
"turned off
"autocmd BufEnter * lcd %:p:h

let NERDTreeIgnore=['\CVS']

"bufkill notes:
"When you want to unload/delete/wipe a buffer, use:
"  :bun/:bd/:bw to close the window as well (vim command), or
"  :BUN/:BD/:BW to leave the window(s) intact (this script).
"basically: use :BW mostly
"
" Load matchit (% to bounce from do to end, etc.)
runtime! macros/matchit.vim

filetype on
filetype plugin indent on

augroup myfiletypes
" Clear old autocmds in group
autocmd!
" autoindent with two spaces, always expand tabs
autocmd FileType ruby,eruby,yaml set ai sw=2 sts=2 et
autocmd BufRead *.as set filetype=actionscript
"autocmd VimEnter *  NERDTree
"utocmd VimEnter * wincmd p

" Note, perl automatically sets foldmethod in the syntax file
autocmd Syntax c,cpp,vim,xml,html,xhtml,mxml setlocal foldmethod=syntax
autocmd Syntax c,cpp,vim,xml,html,xhtml,mxml,perl normal zR
"au FileType xml setlocal foldmethod=syntax
"recognize groovy files by extension
au BufNewFile,BufRead *.groovy  setf groovy
" Omni Completion
" *************************************************************
autocmd FileType html :set omnifunc=htmlcomplete#CompleteTags
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
" May require ruby compiled in
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
augroup END

"syntax enable
set wildmenu wildmode=full
set autowrite
silent! ruby nil

:let g:LargeFile=1000
:let g:bufmru_switchkey = "<Space>"
:let g:bufmru_confclose = 0
:let g:bufmru_bnrs = []
:let g:bufmru_read_nummarks = 0

map <C-TAB> :bnext!<CR>
map <C-S-TAB> :bprev!<CR>
"this locked up mvim??? map <C-\> :b#<CR>


set tags=./tags

Wincent Colaiuta

unread,
Sep 16, 2010, 2:50:48 AM9/16/10
to vim_use
On 15 sep, 17:30, Rick R <ric...@gmail.com> wrote:
>
> Being new to vim I 'think' it seems related to when I have a file that I've
> edited but not saved. So for example:
>
> I split a window.
> Make some changed in the original window but don't save them.
> Now work in the other window and eventually close it.
> When I now use NerdTree or command-t it opens a new file in a split window.

Yep, your suspicion is correct.

If you have `nohidden` set, and it sounds like you do, Vim won't let
you open a new file in an existing buffer if the buffer has changes.
To avoid the annoying warning prompt in this case, both Command-T and
evidently NERDTree just open in a split instead.

Try setting `:set hidden` (see `:h 'hidden'` for more details) if you
don't like this behavior. Then Vim will allow you to move buffers with
unsaved changes out of sight without any annoying prompts. It's quite
safe to use this setting as if you try to quit Vim without those
changes being saved it will still warn you.

Cheers,
Wincent
Reply all
Reply to author
Forward
0 new messages