⚡ Linux & EDA Productivity Guide

Linux gVim Cheat Sheet & Config Builder

The essential shortcut reference and config tool for software, firmware, and EDA engineers working with gVim on Linux. Master multi-line column editing, X11 clipboard integration, and custom .vimrc presets.

Clipboard Copy Config
"+y
Copy to System Clipboard
Yanks selected text into the Linux/X11 system clipboard (pasteable into Chrome, Slack, VSCode).
Use "+p to paste from system clipboard
Clipboard Copy Config
"*y / "*p
Primary Selection (Mouse Middle-Click)
Interacts with Linux primary selection buffer. Paste anywhere with mouse wheel click.
Add set clipboard=unnamedplus for seamless 'y'
Column Mode Copy
Ctrl + v
Visual Block Mode
Enter column selection mode. Use j / k to stretch vertically across ports or declarations.
Select multiple lines in a single column
Column Mode Copy
Ctrl+vI → text → Esc
Multi-Line Vertical Insert
Inserts text across all selected lines simultaneously (e.g. prefixing wire [31:0] or // ).
Hit Esc: text replicates across all rows
Column Mode Copy
Ctrl+v$A → text → Esc
Multi-Line Append to Ends
Appends text to the ragged ends of all selected lines (e.g. adding commas or semicolons).
Great for Verilog port list trailing commas
Column Mode Copy
Ctrl+vr + char
Replace Entire Column
Replaces every character in the visual block with a single target character (e.g. r0 or r_).
Replaces column of numbers with 0
Text Objects Copy
ci" / ca"
Change Inside / Around Quotes
Deletes contents inside double quotes and enters insert mode instantly. ca" removes the quotes too.
"data_path"""
Text Objects Copy
ci( or cib
Change Inside Parentheses
Deletes everything inside ( ... ) and puts cursor into insert mode without touching the braces.
Also works with ci[ and ci{
Text Objects Copy
ciw / diw
Change / Delete Inner Word
Edits or deletes the full word under the cursor regardless of where the cursor sits inside it.
No need to move to the beginning of word
Search & Replace Copy
* and #
Instant Word Search
Press * to jump to the next occurrence of the word under cursor, or # for previous.
Press n to go next, N for previous
Search & Replace Copy
:%s/old/new/gc
Global Interactive Replace
Replaces all occurrences of pattern throughout the file, prompting for confirmation (y/n/a/q).
Omit c to replace all without asking
Search & Replace Copy
:noh
Clear Search Highlighting
Clears yellow/colored search highlights until the next search. Often mapped to <leader>h.
:nohlsearch
Splits & Tabs Copy
:vsp [file] / :sp
Vertical & Horizontal Splits
Splits the window vertically (side-by-side) or horizontally (stacked). Ideal for RTL vs Testbench review.
:vsplit testbench.sv
Splits & Tabs Copy
Ctrl+w + h/j/k/l
Navigate Split Windows
Switch focus between active window splits using standard directional navigation keys.
Ctrl+w = equalizes split sizes
Splits & Tabs Copy
gt / gT
Cycle Next / Previous Tab
Switch between tabs effortlessly. Open new tabs with :tabnew [filename] or :tabe.
3gt jumps directly to tab 3
Macros Copy
qa ... q
Record Macro to Register 'a'
Press qa to start recording keystrokes. Perform edits, then hit q to end recording.
Records all actions into register 'a'
Macros Copy
@a / @@ / 50@a
Replay Macro
Replays the macro once with @a, repeats last macro with @@, or batch executes 50 times.
Transforms 50 lines automatically
Repeat Copy
. (Dot Command)
Repeat Last Change
The most powerful single key in Vim: repeats whatever text edit or deletion you just performed.
Pair with * and ciw for rapid refactoring

Interactive ~/.vimrc & ~/.gvimrc Generator

Select your preferred settings below to generate a clean, modern, and production-ready configuration tailored for Linux gVim and EDA terminal environments.

~/.vimrc config preview

💡 Visual Block Column Editing Walkthrough

Need to prefix 25 lines with wire [31:0] or comment out a block with // ?

STEP 1
Enter Block Mode
Position cursor at the first character of row 1 and press Ctrl + v.
STEP 2
Select Vertical Span
Press j repeatedly (or type 24j) to highlight the column down 25 rows.
STEP 3
Trigger Insert Mode
Press capital I (Shift + i). Notice cursor jumps to top row.
STEP 4
Type & Commit
Type your text (e.g. // ), then hit Esc. All 25 rows update instantly!

Frequently Asked Questions

How do I make gVim always share clipboard with Linux desktop applications?
Add set clipboard=unnamedplus to your ~/.vimrc. This tells Vim to use the X11 clipboard selection by default, so any text you copy with y or delete with d is immediately available to paste into your browser, IDE, or terminal with Ctrl+V.
Why does gVim look outdated with grey toolbars on Linux, and how do I fix it?
Default Linux gVim enables legacy GTK/Motif GUI elements. You can disable them by adding set guioptions-=T (hides toolbar), set guioptions-=m (hides menu bar), and set guioptions-=r (hides right scrollbar) to your ~/.gvimrc.
What is the difference between unnamed, unnamedplus, and mouse selection in Linux?
In Linux X11, there are two primary clipboards: PRIMARY (active text selection pasted with middle mouse click) accessed via register *, and CLIPBOARD (standard copy/paste buffer triggered by Ctrl+C/Ctrl+V) accessed via register +. Using unnamedplus maps Vim's default yank register directly to the X11 CLIPBOARD buffer.