You can use vim's :mksession and write each "workspace" to a different file, then reopen a session using vim -S session_file, however, if you're open to using a plugin then I find the Startify plugin is exactly what I need for this sort of scenario: https://github.com/mhinz/vim-startify
It does a great job of managing sessions, in vim and mccvim, and it ...
If you want to close all windows(splits) except the current one:
If you want to close all tabs except the current one:
If you want to delete all hidden buffers (files open but not visible in any window on any tab), you'll have to add a function to your vimrc. Some people have posted possible functions to here and here
I'm not sure exactly ...
Press Ctrl+w,o to quickly close all split windows, but current one.
Alternatively use the command: :on (:only).
:on[ly][!] Make the current window the only one on the screen. All other windows are closed.
How to convert all windows into horizontal, vertical or tab splits? at Vim SE
How to cancel splitted windows? at stackoverflow SE
You can use tpope's vim-obsession plugin to easily manage sessions. It is like a wrapper to Vim's in-built mksession, but provides a set of other niceties as well.
You can save the current session (or buffer layout) by giving the command :Obsess. If you don't supply an argument, it writes a session file called Session.vim by default.
To reload a session, ...
Hah I should have looked at the help before!
My first instinct was to try :e without any arguments.
I looked at the help for this and a bit further down is
:ene[w] Edit a new, unnamed buffer. This fails when changes
have been made to the current buffer, unless 'hidden'
is set or 'autowriteall' is set and the file can be
You can just remap <C-w> to another combination, for example:
:nnoremap <C-e> <C-w>
You can now use <C-e> and it will act as if you've pressed <C-w>.
This will overwrite the default <C-e> mapping (scroll down). Vim already uses every key on the keyboard, and the only way to prevent this is using the leader key, which ...
You can change it in your vimrc. The currently focused window is highlight group Statusline, other windows are StatuslineNC.
Example for terminal Vim:
hi StatusLine ctermfg=8 ctermbg=2 cterm=NONE
hi StatusLineNC ctermfg=2 ctermbg=8 cterm=NONE
For the GUI, use guifg and guibg.
Neovim terminal buffers always have an associated job id, so one way is to use the job control API to send the text. Add this to your vimrc:
au TermOpen * let g:last_terminal_job_id = b:terminal_job_id
Which will save the the job id of the last created terminal into the g:last_terminal_job_id variable. Then you can ...
Well… it's just as simple in vimscript.
current_win = vim.current.window
let current_win = winnr()
current_buff = vim.current.buffer
let current_buff = bufnr("%")
current_tabpage = vim.current.tabpage
let current_tabpage = tabpagenr()
The examples below set the width to 60 columns. Adjust to your preferences.
NERDTree uses a variable for just this:
This will set the width to 60. You can put this line into your vimrc.
For taglist, you set a similar option:
Like with NERDTree, you can put this line into your vimrc.
You can use :vert h [your topic] to open help vertically.
You can use the following command:
cnoreabbrev H vert h
To make vim replace H by vert h automatically in command line.
Also you can use this abbreviation:
cnoreabbrev HR vert bo h
To open the help window on the right side of the screen. (see :h :botright for more details on bo)
Basically when you have text selected, you want to remap a key sequence to copy, switch to terminal, paste, and then possibly switch windows back and reselect the text. If you have two splits open, this would look something like:
vnoremap <F5> y<c-w>wp<c-w>pgv
xnoremap <F5> Remap F5 in visual/select ...
You could try entering a ... Vim submode! For your case, something like this:
call submode#enter_with('grow/shrink', 'n', '', '<leader><up>', '<C-w>+')
call submode#enter_with('grow/shrink', 'n', '', '<leader><down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<down>', '<C-w>-')
A buffer is the in-memory text of a file. It may differ from the saved version of the file.
A window is a view of a buffer. You can have two (or more) windows editing different parts of the same buffer.
A viewport is synonymous with a window.
A tab page contains one or more windows. You can see what windows are in which tab with :tabs.
A split is where ...
As a side note, I'd like to point out that I built yet another plugin dhruvasagar/vim-prosession as an extension to tpope/vim-obsession that enhances it even further to create & manage vim sessions by default in a centralised repository as per configuration on a per directory basis and loads them automatically when you launch vim without any arguments on ...
From :help vnew:
Like |:new|, but split vertically. If 'equalalways' is set
and 'eadirection' isn't "ver" the windows will be spread out
horizontally, unless a width was specified.
However, it seems like Vim does not provide a mapping for :vnew which creates a new blank vertical split. It's easy to create this mapping yourself. For instance:
This happens because when vertical splitting the window, vim needs to add a vertical scrollbar, which causes vim to recalculate the visual size and eventually makes vim jump to a different screen location. The current workaround is to :set guioptions-=r guioptions-=L
As of patch 8.0.1278, you can also use :set guioptions+=k to prevent Vim from ...
The other answers have already answered your question, but for the sake of completeness:
If you just want to temporarily get a larger window for your help-viewing, you can use either or both of the Ctrl-w _ and Ctrl-w | mappings to maximise the help window as much as possible vertically or horizontally, respectively, but without closing your existing split ...
To complete the @sundar answer :
You can log the order of the events simply with a logging function :
autocmd BufNewFile * call s:Log('BufNewFile')
autocmd BufReadPre * call s:Log('BufReadPre')
autocmd User * call s:Log('User')
function! s:Log(eventName) abort
silent execute '!echo '.a:eventName.' &...
Though there are commands to move existing windows around in the current tab page (i.e. affect the window layout by rotating, resizing, and moving), there are no commands to move a window to another tab.
As a window is just a viewport into a loaded buffer, you have to:
Note the buffer number displayed in the current window.
:close! the window.
Switch to ...
I tried googling for this with different sets of keywords, and struck gold on one such attempt with this result: http://www.ibm.com/developerworks/library/l-vim-script-5/
Specifically, this part is relevant to the current question:
For example, if you start Vim, edit a file named demo.txt, swap into Insert mode, type in some text, save the file, and ...
While I mostly agree with @romainl comment (markdown was made to be explicit enough not to need a preview) you can do this in different ways:
[OSX / Unix] The instant-markdown plugin is a solution. You need to have node.js installed and to use the following command:
[sudo] npm -g install instant-markdown-d
You also need to have the packages xdg-utils, ...
It is probably a scratch buffer, which can be named. From the help:
Contains text that can be discarded at any time. It is kept
when closing the window, it must be deleted explicitly.
The buffer name can be used to identify ...
I don't know if it is the best way to do what you want, but you can accomplish this only with window movements by doing (start from the rightmost window b3):
1 - CTRL-W+K - You'll have:
| b3 |
|b1 | b2 |
2 - Go to b1 with CTRL-W+j
3 - CTRL-W+H to move b1 to the left.
You should have the ...