When I'm opening a new file in Vim and I use tab completion, it completes the whole file name instead of doing the partial match like Bash does. Is there an option to make this file name tab completion work more like Bash?
-
13Technically speaking, I'm pretty sure "bash" doesn't do any tab completion. It's readline that does that.Maxy-B– Maxy-B2012-03-09 22:50:10 +00:00Commented Mar 9, 2012 at 22:50
-
2We are talking about customize the behavior of the ^X^F feature?Bruno Medeiros– Bruno Medeiros2015-08-26 17:35:24 +00:00Commented Aug 26, 2015 at 17:35
7 Answers
I personally use
set wildmode=longest,list,full
set wildmenu
When you type the first tab hit, it will complete as much as possible. The second tab hit will provide a list. The third and subsequent tabs will cycle through completion options so you can complete the file without further keys.
Bash-like would be just
set wildmode=longest,list
but the full is very handy.
7 Comments
set wildmode=longest,5full,list. With lot results full is useless but very handy with few. It will be perfect with something like "show full only if completion fits on one line screen"The closest behavior to Bash's completion should be
set wildmode=longest:full,full
With a few character typed, pressing tab once will give all the matches available in wildmenu. This is different to the answer by Michael which opens a quickfix-like window beneath the command-line.
Then you can keep typing the rest of the characters or press tab again to auto-complete with first match and circle around it.
4 Comments
wildmode=longest,list is the closest to default bash/readline behaviour.If you don't want to set the wildmenu, you can always press Ctrl + L when you want to open a file. Ctrl + L will complete the filename like Bash completion.
2 Comments
<Tab> completes the current string as far as is unambiguously possible (like CTRL-L in Vim) and <Tab><Tab> shows a list of possible matches (like CTRL-D in Vim).Run these:
:set nocompatible
:set wildmenu
:set wildmode=longest:full
longest:full gives you a Bash-like completion with:
- suggestions in a single line
- Tab completing only what is certain
- Right/Ctrl-n | Left/Ctrl-p to select suggestions.
From the help:
If you prefer the <Left> and <Right> keys to move the cursor instead
of selecting a different match, use this:
:cnoremap <Left> <Space><BS><Left>
:cnoremap <Right> <Space><BS><Right>
3 Comments
set wildmode=longest:full before and it still didn't work?nocompatible and wildmenu to the answer. I think I got the wildmenu information from this video, it shows lots of tips using native Vim features: youtu.be/XA2WjJbmmoM.vim --clean on the command-line to run Vim with a clean configuration, so you can test options out without any plugins interferingI'm assuming that you are using autocomplete in Vim via Ctrl + N to search through the current buffer. When you use this command, you get a list of solutions; simply repeat the command to go to the next item in the list. The same is true for all autocomplete commands. While they fill in the entire word, you can continue to move through the list until you arrive at the one you wish to use.
This may be a more useful command: Ctrl + P. The only difference is that Ctrl + P searches backwards in the buffer while Ctrl + N searches forwards... Realistically, they will both provide a list with the same elements, and they may just appear in a different order.
Comments
Try using :set wildmenu. Apart from that, I'm not sure what exactly you're trying.
Oh, yeah, and maybe try this link: link
