OpenSource For You

A Few More Tips on Vi/Vim Editor for Linux Newbies

For Linux newbies and other typical users, here is the second set of tips on using Vi/Vim editor efficientl­y and productive­ly.

- By: S. Sathyanara­yanan The author works as the informatio­n scientist in the Sri Sathya Sai Institute of Higher Learning, Brindavan Campus, Bengaluru, and also heads the computer centre of the campus. He has more than 25 years of experience in systems admi

This is a continuati­on of my previous article titled, ‘A Few Tips on Vi/Vim Editor for Linux Newbies’ which can be accessed at http://opensource­foru.com/2017/01/tips-vivim-editor-linux-newbies/. I have compiled a few more Vi editor tips that are very simple but help to increase productivi­ty tremendous­ly.

Going to any line

In a large-sized file, going to a particular line directly is extremely useful and saves a lot of time. This can be done by going to the command mode and typing the following:

:50

…assuming that 50 is the line at which you want the cursor to be positioned. The other way is to type:

50G

…in the command mode to get the same result.

Typing just G in the command mode takes the cursor to the last line of the file and typing 1G takes the cursor to the beginning of the file.

Incrementi­ng or decrementi­ng a number

You can increment or decrement a number easily. Go to the command mode, position the cursor below the number and type the following:

Ctrl-a

This increments the number. Similarly, you can type the following to decrement the number on which the cursor is positioned:

Ctrl-x Changing the case of letters

Without the shortcuts, changing the case of letters, words and sentences whenever required is a tedious procedure. With the shortcuts given below, it can be done very easily.

To toggle the case of the character below which the cursor is positioned, type ~

To change the case of the current line to upper case, type gUU To change the case of the current line to lower case, type guu To toggle the case of the current line, type g~~

To toggle the case of all characters from the cursor position to the end of the line, type g~$

Sorting within Vi

Sorting within Vi editor can be achieved without using the external sort command by typing the following in the command mode:

:sort

The above command is to sort the text.

:sort u

The above command can be used to sort lines and remove duplicate lines.

Executing a filter command

You can execute a filter command on a part of the current file from within the Vi editor and replace the portion with the output of the command. Any command that reads from a standard input and sends the output to a standard output can be used as a filter within Vi. To illustrate this, we use the sort command. Type the following in the command mode of the Vi editor:

:1,$!sort

This sorts the file from the first line to the last line and replaces these lines with the sorted output. (Just a reminder: The ‘!’ symbol is used within the command line of the Vi editor to execute an external program from within a Vi editor.)

The -u option with sort will keep only the unique lines and remove the duplicate lines.

:1,$!sort -u

The line number 1 and the $ symbol in the above command can be replaced with any portion of the file with the numbers of the starting line and ending line of the particular portion. The portion selected for input will be replaced by the output of the sort command. To sort the lines starting from the contents of line number 5 to 15, give the following command:

:5,15! Sort Using tr within Vi

The following command will convert all the letters in the line numbers 10 to 20 to upper case:

:10,20 ! tr a-z A-Z

Writing a portion of a file being edited

The command to write a portion of the current file being edited to a new file is as follows:

:20,50 w > newfile.txt

As a result, the lines from 20 to 50 are written in a new file named newfile.txt. The above facility of processing parts of the text and substituti­ng the original content with the output makes the Vi editor very powerful.

Inserting the output of a command executed within the Vi editor

Most users are familiar with the method to execute a shell command within the Vi editor. For example:

:! ls

Less known is the fact that you can insert the output of the command given within the Vi editor by placing a ‘.’ (period) before the exclamatio­n mark. For example, the following command will insert the current date into the file being edited, which can be used for documentat­ion.

:.! date Cursor movements

Vi editor has powerful cursor movement commands which, if mastered, can make editing faster.

H The cursor is positioned at the first line of the screen

M The cursor is positioned at the middle line of the screen

L The cursor is positioned at the last line of the screen

Scrolling through a file

The following commands can be used to scroll through a file. Ctrl-f Scroll down by one screen

Ctrl-b Scroll up by one screen

Ctrl-u Scroll up by half a screen

Ctlr-d Scroll down by half a screen zz Scroll the screen so that the current line appears at

the middle of the screen.

The last one, zz, is very useful for viewing the block of code associated with the current line.

Editing a file opened without sudo

Let’s assume that you are editing a file which requires root access and, as a result, you are unable to save it as you have not opened Vi editor in the sudo mode. So instead of saving the file by taking many steps, including saving it in a temporary file and copying it later, you can save it straight away by using a combinatio­n of the tee and sudo commands, as follows:

:w !sudo tee %1

You can refer to the link http://www.geekyboy.com/ archives/629 for details on how the above command works.

Powerful delete commands

Apart from the commonly used commands for deleting, the ones I found very useful are the following. di( Deletes all characters within the parenthese­s di” Deletes all characters within the quotes

Shortcut to save and quit

Generally, we type :wq in the command mode to save the file and go to the command prompt. A shortcut for the same is as follows:

:x Recovering a file

Lastly, the following command will help you to recover a file after a crash, from the swap file of the file being edited:

$vi r filename

Practising these Vi tips will help you to increase your efficiency, and the side effect could be that you postpone the onset of RSI (repetitive stress injury)!

 ??  ??
 ??  ?? Figure 1: Vi editor before sort
Figure 1: Vi editor before sort
 ??  ?? Figure 2: Vi editor after sort
Figure 2: Vi editor after sort

Newspapers in English

Newspapers from India