46

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 ...


36

If you want to close all windows(splits) except the current one: :only If you want to close all tabs except the current one: :tabonly 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 ...


29

Just expand the help window to be the only visible window: Ctrlw-o When you're done you can switch back to your other buffers.


28

To swap the two parts of a split window simply do: <C-w> <C-r>


27

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. See also: How to convert all windows into horizontal, vertical or tab splits? at Vim SE How to cancel splitted windows? at stackoverflow SE Is ...


23

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, ...


22

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 ...


22

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 ...


21

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.


21

You can equalize the size of windows with <c-w>=.


17

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: augroup Terminal au! au TermOpen * let g:last_terminal_job_id = b:terminal_job_id augroup END Which will save the the job id of the last created terminal into the g:last_terminal_job_id variable. Then you can ...


15

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 "explanation: xnoremap <F5> Remap F5 in visual/select ...


15

Alternatively, you could open the help window in a new tab: :tab help foo, and then use :q to close it.


15

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)


15

Well… it's just as simple in vimscript. Current window Python: current_win = vim.current.window Vimscript: let current_win = winnr() Current buffer Python: current_buff = vim.current.buffer Vimscript: let current_buff = bufnr("%") Current tabpage Python: current_tabpage = vim.current.tabpage Vimscript: let current_tabpage = tabpagenr() See :...


15

Yes, there is! You can accomplish this with :tabdo and :windo. For your case specifically: :tabdo windo set number See :help :tabdo and :help :windo for more information.


14

The examples below set the width to 60 columns. Adjust to your preferences. NERDTree NERDTree uses a variable for just this: :let g:NERDTreeWinSize=60 This will set the width to 60. You can put this line into your vimrc. Taglist For taglist, you set a similar option: :let g:Tlist_WinWidth=60 Like with NERDTree, you can put this line into your vimrc. ...


13

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>-') call submode#map('grow/...


13

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 ...


12

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 ...


11

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: ...


11

I actually use :wincmd more often than Ctrl+W because I find it easier to type the abbreviated :winc. For example, the equivalent to Ctrl+W L is :winc l.


11

To complete the @sundar answer : You can log the order of the events simply with a logging function : augroup EventLoggin autocmd! autocmd BufNewFile * call s:Log('BufNewFile') autocmd BufReadPre * call s:Log('BufReadPre') ... autocmd User * call s:Log('User') augroup END function! s:Log(eventName) abort silent execute '!echo '.a:eventName.' &...


11

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 Update As of patch 8.0.1278, you can also use :set guioptions+=k to prevent Vim from ...


10

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 ...


10

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 ...


10

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, ...


9

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 ...


9

Oh yes, there sure is: vim-choosewin. The animated demo from plugin's page:


8

Prefixing your command with :vert modifies it to use a vertical split: :vert copen


Only top voted, non community-wiki answers of a minimum length are eligible