Vim - universal window for all tabs - vim

is it possible to have one universal window for all tabs in vim?
For example if I have a preview window open, that this window is the same for all the tabs, including its position and so on?

Short answer: not really.
Long answer: NERDTree fights against this and is far more complex for trying to do so.
From a comment:
The purpose of each tab is to allow for a different window layout.
In other words, I’ve seen people try to bolt this onto vim, and it’s kludgy, only half works, and frankly goes so against the grain of what vim tries to be that it becomes a sacrifice of productivity.
If you absolutely must, see if you can figure out how NERDTree makes it work. I’ll see about digging up the QA on vi.stackexchange.com.

Related

Is it possible to have tabs inside a Vim buffer

Having multiple tabs in vim I've noticed that when I create a new buffer, this buffer stays inside the tab where I create it. Not being an expert at vim I expected the new buffer to behave like a new chrome window where I could put more tabs in. Is there a way to have a workspace like this in vim where when I switch buffers vim would show me a new set of tabs?
Thanks in advance!
That isn't how buffers work. Buffers are containers that hold and facilitate interaction with text. To use your Chrome analogy, this is like asking: how can I open new windows in my browser tabs? which of course you can't, beacuse that is not the interface is designed to work.
As I mentioned in the comments: tabs are containers for windows. Windows display buffers. Buffers hold text.
If a higher level of hierarchical abstraction is needed on top of tabs/windows, the best bet1 is probably to just open a new terminal window and start a separate instance of vim. That is even what is suggested here. I personally never use tabs, it's too clunky and I find it easier to flip between terminal sessions, which is second nature since I do that all the time anyway. The mechanics of vim tabs don't have that kind of "portability".
1: actually, the best bet is to close some of the unnecessary documents. If you're at the point where tabs and windows just aren't enough, adding more complexity isn't going to make you more efficient.

How to expand an UltiSnips snippet using <c-y> in the YouCompleteMe pop-up menu?

This problem really hit a nerve with me. I have both YouCompleteMe and UltiSnips installed on my vim 8.0 editor. It seems that both of these plugins use the tab key for doing the auto-completion and that has created an incompatibility that has been also addressed by this question. My question is more specific, though. When I write a piece of code like <html, there is a pop-up menu that shows me all related snippets for that code.
I use the tab key to navigate through that menu but when I hit ctrl+y to accept and therefore expand one of these snippets, nothing happens! I think this structure suggests that it's possible to somehow choose one of those snippets from the menu without trying to define a shortcut for UltiSnip. What am I doing wrong? How should I navigate and choose those snippets?
I also would not want to stuff my vim with any new plugins (like supertab, etc.).
The solution was actually a lot simpler than I expected. In the beginning, I felt stupid for not knowing it but when I find a similar question like this one, I thought that probably many were fallen into the same trap.
I don't know whether to name it a bug or not but it's how Ultisnips and YouCompleteMe work together. In order to expand a snippet, you have to write the initializer exactly as it's defined. Of course, this seems obvious, but when you see a pop-up menu of different snippets, you might think they can be chosen but it only works if you already wrote the snippet initializer exactly as it's defined.
So when a snippet is called "html5"---as it's shown in my question---writing an extra opening bracket (<) will cause it to stop working. It cannot be expanded.
Also, don't forget to check out Siegfried Gevatter configuration. It's not possible to use tab key both for navigating into the pop-up menu and expanding the snippets.
P.S. It was nice if navigating through the pop-up menu could change the whole word (including the angle bracket), not just what succeeds it. This feature works this way in most of the other editors I see and that's probably why I wasn't able to spot the problem in the beginning.

multi-column terminal multiplexer?

Let me explain what I'm looking for, hopefully for the terminal, but if it exists in an IDE, i'll take that too.
I have a laptop with a 1366x768 resolution screen; I use vim for code-writing, and I use a fairly small font in my terminal (~7pt). So, as you might imagine, there's a lot of "wasted" horizontal space, especially when coding in a compact language like python.
I just checked and found that with a 6pt. font, the maxyx of my terminal is 82 rows x 271 columns. What I'd like to have, essentially, is a single terminal with the dimensions of 246 rows x 90(89?) cols, split into 3 panes and displayed side by side. But, they would need to behave as one contiguous vertical pane, i.e., when i scroll in my editor, all three of them scroll synchronously.
Does anyone know of a hack or anything to accomplish this? Maybe for vim/screen/similar?
Patching screen might be a fun project, but I don't have time to chase that rabbit. If someone out there does, though, I'll order them a pizza or something ;)
(although if i get around to it first, i'll have to order myself a pizza)
I had the very same desire and others want this as well. Lacking any options I implemented my own two column virtual terminal. See the --columns option for selecting a different number of columns than two.
EDIT: based on comments, I now understand the requirement better. i.e. viewing one text file in a newspaper-like multi-column format.
It seems more like an editor feature rather than a multiplexer feature (because the 2 editors should be linked). Thanks to #romainl for mentioning :set scrollbind. This seems capable of doing the job in combination with some additional vim magic.
Here's an superuser q&a showing how to use scrollbind for your purposes: https://superuser.com/questions/243931/how-do-i-maintain-vertical-splits-with-scrollbind-in-vim .
Original answer:
vim and [recently] screen both offer vertical-split, as does tmux.
I don't know about any way to scroll simultaneously, but tmux's 'synchronize-panes' does offer simultaneous input. Can be useful!
For vim, use :vsplit
For screen (recent versions), use C-a |
Alternative to screen, I use tmux. It offers (default keys)
C-b %, then you can use C-b :setw synchronize-panes for
simultaneous input across panes.
Hope this helps.

File Manager tab in vim

I'm very close to figuring this out, but can't seem to find the missing piece.
I have a pretty good vim set up for development. When doing MVC projects, I need multiple tabs open, and I've gotten pretty good at shifting between them and rearranging quickly.
I can even open a vertical tab with an interactive directory listing of my files.
What I really want and can't figure out:
To be able to have this vertical tab persistent, that is, in the "foreground" of all tabs, and allow me open a file into a new tab. (Basically, I want vim to have a sidepane that is a file manager and when i press enter on a selected file in the directory, it will open a new tab, but the "file manager/directory tab" will stay open, and in front.
To set the persistent "file manager/directory tab" to be a specific width - ie :vsplit 32(pixels?)
Does that make sense? Can anyone point me to the right part of the help section for this?
Thanks, Kevin
Are you using NERDTree? If not, it might be the answer to your prayers.
You can set the width of the NERDTree window by putting this in your .vimrc:
let g:NERDTreeWinSize=32
For the benefit of anyone passing by, you should take a look at project. It took me a bit to figure it out, but you basically get a file browser on the lefthand side. It's up to you to manage the file list though, so you can apply filters, link to source/api docs, and omit what's not important. Of course it will automatically fill in the list, if you like. Very neat. It's a help page you have to sit down and read, but I like it.
You should also look at snipMate and surround if you love efficiency. I've been using vim for ten years and this is all new to me! Life changing! Now I have to quite fiddling with the interface and get some work done.

What vimrc settings to speed up scrolling?

I use gvim pretty heavily at work, typically logged into a server farm. This works great while I'm directly on the corporate LAN, but when I VPN in from home and resume my sessions, gvim scrolls almost intolerably slow.
Every time I page up or down, the scrolling does a lot of unnecessary screen refreshes before it gets to the final spot.
I remember browsing other people's vimrc's and seeing a setting to help with this, but I don't remember what it is. I have ttyfast already set. Is there anything else?
I know this is mostly due to the VPN, but with a little tweaking, hopefully it can get better.
If you're not doing this already, you should at least be using CTRL+U and CTRL+D to scroll around, and I believe you can use the 'scroll' option to make CTRL+U and CTRL+D scroll a custom distance.
You might want to try the different tips given in :help slow-terminal.
For instance, the scrolljump setting can help reduce the number of screen refresh when scrolling. I have also found set nowrapto be useful, even on fast terminal when handling files with very long lines.
If possible, I would consider using console vim. Easier to pull over multiple hops.
Another non-vimrc technique to consider is Windows Control Panel:

Resources