I am new to VIM. I use e and w commands to edit and to write a file. It is very convenient. I am not sure if there is "close" command to close the current file without leaving VIM?
I know that q command can be used to close a file. But if it is the last file, the VIM is closed as well(actually on Mac the MacVIM does quit. Only the VIM window is closed and I could use Control-N to open a blank VIM again). I would like the VIM to stay with a blank screen.
-
If you've saved the last file already, then :enew is your friend (:enew! if you don't want to save the last file). Note that the original file will still be in your buffer list (the one accessible via :ls).
-
This deletes the buffer (which translates to close the file)
:bd
Rytmis : Yours is better than mine for what the OP asked, although I tend to prefer :enew because I like having the buffer in the buffer list. :)ephemient : +1, you beat me to it!Martin Andersson : When I do this, vim shows the first buffer, but I can still access the buffer -
:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* :bd[elete][!] [N] Unload buffer [N] (default: current buffer) and delete it from the buffer list. If the buffer was changed, this fails, unless when [!] is specified, in which case changes are lost. The file remains unaffected. Any windows for this buffer are closed. If buffer [N] is the current buffer, another buffer will be displayed instead. This is the most recent entry in the jump list that points into a loaded buffer. Actually, the buffer isn't completely deleted, it is removed from the buffer list |unlisted-buffer| and option values, variables and mappings/abbreviations for the buffer are cleared.
-
If you have multiple split windows in your vim window then :bd closes the split window of the current file... so I like to use something a little more advanced:
map fc <Esc>:call CleanClose(1) map fq <Esc>:call CleanClose(0) function! CleanClose(tosave) if (a:tosave == 1) w! endif let todelbufNr = bufnr("%") let newbufNr = bufnr("#") if ((newbufNr != -1) && (newbufNr != todelbufNr) && buflisted(newbufNr)) exe "b".newbufNr else bnext endif if (bufnr("%") == todelbufNr) new endif exe "bd".todelbufNr endfunction
dolzenko : Now what this snippet does? -
:bd can be mapped. I map it to F4, shift-F4 if I need to force-close because of some change I no longer want.
0 comments:
Post a Comment