How to perform search operations in Vim
While we've alreadycoveredseveral features of Vim until now, the editor's feature-set is so vast that no matter how much you learn, it doesn't seem to be enough. So continuing with our Vim tutorial series, in this write-up, we will discuss the various search techniques that the editor offers.
But before we do that, please note that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 14.04, and the Vim version we've used is 7.4.Basic search operations in Vim
If you have opened a file in the Vim editor, and want to search a particular word or pattern, the first step that you have to do is to come out of the Insert mode (if you that mode is currently active). Once that is done, type ' / ' (without quotes) followed by the word/pattern that you want to search.
For example, if the word you want to search is 'linux', here's how it will appear at the bottom ofyour Vim window:
After this, just hit the Enter key and you'll see that Vim will place the cursor on the first line (containing the word) that it encounters beginning from the line where the cursor was when you were in Insert mode. If you've just opened a file and began searching then the search operation will start from the very first line of the file.
To move on to the next line containing the searched word, press the ' n ' key. When you've traversed through all the lines containing the searched pattern, pressing the ' n ' key again will make the editor to repeat the search, and you'll be back to the first searched occurrenceagain.
While traversing the searched occurrences, if you want to go back to the previous occurrence, press ' N ' (shift+n). Also, it's worth mentioning that at any point in time, you can type ' ggn ' to jump to the first match, or ' GN ' to jump to the last.
In caseyou are at the bottom of a file, and want to search backwards, then instead of initiating the search with / , use ? . Here's an example:
Customize your search 1. Search highlighting
While jumping from one occurrenceof the searched word/pattern to another is easy using 'n' or 'N,' things become more user-friendly if the searched occurrences gethighlighted. For example, see the screenshot below:
This can be made possible by setting the 'hlsearch' variable, something which you can do by writing the following in the normal/command mode::set hlsearch
2. Making searchcase-insensitive
By default, the search you do in Vim is case-sensitive. This means that if I am searching for 'linux', then 'Linux' won't get matched. However, if that's not what you are looking for, then you can make the search case-insensitive using the following command::set ignorecase
So after I set the 'ignorecase' variable using the aforementioned command, and searched for 'linux', the occurrencesof 'LINUX' were also highlighted:
3. Smartcase search
Vim also offers you a feature using which you can ask the editor to be case-sensitive only when the searched word/pattern contains an uppercase character. For this youneed tofirst set the ' ignorecase' variable and then set the 'smartcase' variable.:set ignorecase :set smartcase
For example, if a file contains both 'LINUX' and 'linux,' and smartcase is on, then only occurrencesof the word LINUX will be searched if you search using '/LINUX'. However, if the search is '/linux', then all the occurrenceswill get matched irrespective of whether they are in caps or not.4. Incremental search
Just like, for example, Google, which shows searchresultsas you type your query (updating them with each alphabet you type), Vim also provides incrementalsearch. To access the feature, you'll have to executethe following command before you start searching::set incsearch Some other cool Vim search tips/tricks
There are several other search-related tips tricks that you may find useful.
To start off, if you want to search for aword that's there in the file, but you don't want to type it, you can just bring your cursor below it and press * (or shift+8 ). And if you want to launch a partial search (for example: search both ' in' and 'term in al'), then you can bring the cursor under the word (in our example, in ) and search by pressing g* (press 'g' once and then keep pressing *) on the keyboard.
Note: Press # or g# in case you want to search backwards.Next up, if you want, you can get a list of all occurrencesof the searched word/pattern along with the respective lines and line numbers at one place. This can be done by type [I after you've initiated thesearch. Following is an example of how the results are grouped and displayed at the bottom of Vim window:
Moving on, as you might already know, the Vim search wraps by default, meaning after reaching the end of the file (or to the last occurrenceof the searched word), pressing "search next" brings the cursor to the first occurrenceagain. If you want, you can disable this search wrapping by running the following command::set nowrapscan
To enable wrap scan again, use the following command::set wrapscan
Finally, suppose you want to make a slight change to an already existing word in the file, and then perform the search operation, then one way is to type / followed by that word. But if the word in long or complicated, then it may take time to type it.
An easy way out is to bring the cursor under the word you want to slightly edit, then press '/' and then press Ctrl-r followed by Ctrl-w. The word under the cursor will not only get copied, it will be pasted after '/' as well, allowing you to easily edit it and go ahead with the search operation.
Formore tricks (including how you can use your mouse to make things easier in Vim), head to the official Vim documentation .Conclusion
Of course, nobody expects you to mug up all the tips/tricks mentioned here. What you can do is, start with the one you think will be the most beneficial to you, and practice it regularly. Once it gets embedded in your memory and becomes a habit, come here again, and see which one you should learn next.
Do you know any more such tricks? Want to share it with everyone in the HTF community? Then leave it as a comment below.
本文系统（linux）相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统