DEV Community

Cover image for Vim: an epic terminal-based text editor
Youssef El Idrissi for #./TECHLAB.MA

Posted on • Edited on

1

Vim: an epic terminal-based text editor

(This Blog post is part of a collaborative work between Me and Mustapha El Idrissi, Consult his devTo page for more information: https://dev.to/appsbymuss)

Introduction about Vim

Vim (short for Vi IMproved) is a highly configurable and efficient text editor that extends the functionality of the classic Unix-based Vi editor. Created by Bram Moolenaar, Vim is designed to maximize productivity in text editing through a combination of keyboard-driven commands and modes.

What are Buffers in vim ?

In Vim, a buffer is essentially an in-memory representation of a file. When you open a file in Vim, it is loaded into a buffer, allowing you to make changes to it.

Basics of Vim

To Edit a file (or Create one)

vim <file_name>

Saving and Quitting

  • To save the modifications to a file: you simply press [:] then type w and press ENTER
  • To save the mods. and quit the file: you do the same thing except it's :wq
  • To quit a file and discard the mods.: press [:] and type [q!] then ENTER

There are 4 Modes in Vim

Image description

NORMAL MODE: It is the default mode. It is mostly useful for navigating through a file, however there are some shortcuts that make modifications to the file even with this mode. For example:
  • Pressing [0]: Places the cursor at the start of the current line.
  • Pressing [$]: Places the cursor at the end of the current line.
  • Pressing [u]: Undo's the last change that was done to the "buffer".
  • Pressing [x]: Deletes one character (where the cursor is).
  • Pressing [dd]: Deletes the current line (but it gets saved in the "paste buffer", which means the contents can be "pasted".
  • Pressing [p]: Pastes whatever is copied (in the "paste buffer")
  • Pressing [gg]: Places the cursor at the first line in the file.
  • Pressing [G]: Places the cursor at the last line in the file
INSERT MODE: This mode is activated by pressing [i]. It is used to insert new data to the document. Here are some examples of shortcuts:
  • Pressing [a + Shift]: Places the cursor at the end of the current line and activates INSERT MODE.
  • Pressing [i]: Activates INSERT MODE.
VISUAL MODE: This mode is useful to select specific subtext and apply modifications on it. It is activated by pressing [v]. Here are a few examples of shortcuts:
  • Pressing [y]: The selected section of text will be copied (not cut) and get placed in the "paste buffer" (to be pasted somewhere)
  • Pressing [:] then Typing [sort ui]: This will sort the selected lines alphabetically and ensure there are no duplicate lines.
COMMAND MODE: Accessed by pressing [:]. Used for entering commands such as saving files, quitting Vim, and searching.

examples:

  • [:! <LINUX_COMMAND>] - Execute a command while in vim

File Operations

  • [:q] - Close the current window/buffer.
  • [:w] - Write changes to the current file.
  • [:q!] - Close the current window/buffer and discard of the changes.
  • [:wq] - Write changes to the current file and close the window.
  • [:r <file_name>] - Copy the buffer of "file_name" and paste it in the current buffer.
  • [:w <file_name>] - Copy and Write the current buffer to "file_name"

String Search

  • [:%s/<regExpr>] - Search and highlight the first occurence of a string/pattern.
  • [:%s/<regExpr>/String2/g] - Search and replace ALL the occurences of a string/pattern.

Buffers

Image description

Buffers can be extremely useful when you want to edit multiple files at the same time. Using COMMAND MODE, here are some useful tricks:

[:ls] - Lists all the buffers currently accessible. (the one active has a %a sign)
[:e <file_name>] - Load a file into a new buffer.
[:b <buffer_number>] - To switch to a buffer
[:enew] - To create an empty buffer (whose content that you can later on save to a file or to another buffer)
[:bn] - Switches to the next buffer in the list.
[:bp] - Switches to the previous buffer in the list.
[:bw <buffer_number>] - Saves changes to the buffer X.
[:bd <buffer_name>] - Deletes the buffer X.
[:bd! <buffer_name>] - Deletes the buffer X discarding of any changes.

Splitting the screen

Horizentally

Image description

[:sp[lit] <file_name>] - Splits the current file with "file_name" horizentally, This step can be done multiple times with multiple files.

Vertically

Image description

[:vsp[lit] <file_name>] - Splits the current file with "file_name" horizentally, This step can be done multiple times with multiple files.
[Ctrl + ww] - To switch between "splits".

Advantages of a Terminal-based Text editor

  • Vim is very light resources-wise, which makes it ideal to run on low-end machines.
  • It is terminal-based which means it can be executed and used remotely without any trouble using something like SSH.
  • The learning curve to master Vim is a bit steep but everyone can master the basics quite easily after a bit of practice.

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more