---
title: "VIM Cheat Sheet"
lang: "en"
author: "Mohammad Abu Mattar"
canonical: https://mkabumattar.com/post/vim-cheat-sheet
---

![Blog post image for VIM Cheat Sheet - VIM is a highly configurable text editor available on most Linux distributions. Ideal for editing files via the command line, its modal design offers distinct modes for various tasks. This cheat sheet provides a quick reference for VIM's essential commands and features.](/_astro/hero.Buk-UDGW_Z1dv9zA.webp)

[Home](/)›[Blog](/blog)›[All Categories](/blog/categories)›[Linux](/blog/categories/linux)

Blog

[Prev in LinuxHow to Install WordPress on Amazon Linux 2](/blog/post/how-to-install-wordpress-on-amazon-linux-2)

[Linux](/blog/categories/linux)[VIM](/blog/categories/vim)[Text Editors](/blog/categories/text-editors)[Developer Tools](/blog/categories/developer-tools)[Command Line](/blog/categories/command-line)

# VIM Cheat Sheet

[Mohammad Abu Mattar](/authors/mohammad-abu-mattar)Published: 20 Oct 2022Updated: 05 Apr 202509 Mins read04 Mins listen

[Markdown for AI(opens in a new tab)](/post/vim-cheat-sheet/index.md "Open the plain-Markdown version of this page, for pasting into an AI tool")

TL;DR

VIM is a highly configurable text editor available on most Linux distributions. Ideal for editing files via the command line, its modal design offers distinct modes for various tasks. This cheat sheet provides a quick reference for VIM's essential commands and features.

Series

[Developer Environment & Tooling](/series/developer-environment--tooling)2/4

[PreviousDotfiles: A Git-Based Strategy for Configuration Management](/blog/post/dotfiles)[NextCustomization Windows Terminal With Starship](/blog/post/customization-windows-terminal-with-starship)

All posts in this series (4)

Blog4

1.  [Dotfiles: A Git-Based Strategy for Configuration Management](/blog/post/dotfiles)
2.  [VIM Cheat SheetYou are here](/blog/post/vim-cheat-sheet)
3.  [Customization Windows Terminal With Starship](/blog/post/customization-windows-terminal-with-starship)
4.  [10+ Secret Git Commands That Will Save Hours Every Week](/blog/post/10-secret-git-commands-to-save-time)

### VIM Cheat Sheet

Contents

[What is VIM?](#what-is-vim)[VIM modes](#vim-modes)[Normal Mode](#normal-mode)[Insert Mode](#insert-mode)[Command Mode](#command-mode)[VIM commands](#vim-commands)[Global](#global)[Cursor movement](#cursor-movement)[Insert Mode](#insert-mode)[Editing](#editing)[Marking text (Visual Mode)](#marking-text-visual-mode)[Visual commands](#visual-commands)[Registers](#registers)[Marks and positions](#marks-and-positions)[Macros](#macros)[Cut and paste](#cut-and-paste)[Indent text](#indent-text)[Exiting](#exiting)[Search and replace](#search-and-replace)[Search in multiple files](#search-in-multiple-files)[Tabs](#tabs)[Working with multiple files](#working-with-multiple-files)[Summary](#summary)[References](#references)

## [What is VIM?](#what-is-vim)

VIM (Vi Improved) is a versatile text editor pre-installed on most Linux systems, known for its efficiency in command-line file editing. Its modal nature, switching between modes like Normal, Insert, and Command, makes it a favorite among developers and system administrators. This cheat sheet is a handy guide to VIM’s core features.

## [VIM modes](#vim-modes)

VIM operates in three primary modes, each designed for specific tasks, letting you navigate, edit, and manage files without leaving the keyboard.

### [Normal Mode](#normal-mode)

Normal Mode is VIM’s default state for navigation and manipulation. Use it to move the cursor, delete text, or copy content, entering it with the Esc key.

### [Insert Mode](#insert-mode)

Insert Mode enables text input and editing. Activate it with the i key to start typing at the cursor’s position.

### [Command Mode](#command-mode)

Command Mode lets you execute file-level operations like saving or quitting. Access it by pressing : from Normal Mode.

## [VIM commands](#vim-commands)

This section lists essential VIM commands, organized by function.

### [Global](#global)

Global commands affect the entire file or VIM environment, such as saving files or accessing help.

Command

Description

:h\[elp\] keyword

Open help for keyword.

:sav\[eas\] file

Save the file as file.

:clo\[se\]

Close the current file.

:ter\[minal\]

Open a terminal.

K

Open help for word under cursor.

### [Cursor movement](#cursor-movement)

These commands control cursor navigation, helping you move efficiently within a file.

Command

Description

h

Move left.

j

Move down.

k

Move up.

l

Move right.

gj

Move down a screen.

gk

Move up a screen.

H

Move to top of screen.

M

Move to middle of screen.

L

Move to bottom of screen.

w

Move forward one word.

W

Move forward one WORD.

e

Move to end of word.

E

Move to end of WORD.

b

Move back one word.

B

Move back one WORD.

ge

Move to end of previous word.

gE

Move to end of previous WORD.

%

Move to matching character (default supported pairs: (), , \[\]).

0

Move to the start of the line.

^

Move to the first non-blank character of the line.

$

Move to the end of the line.

g\_

Move to the last non-blank character of the line.

gg

Move to the first line of the file.

G

Move to the last line of the file.

5G

Move to line 5.

gd

Move to the definition of the word under the cursor.

gD

Move to the definition of the WORD under the cursor.

fx

Move to the next occurrence of character x.

Fx

Move to the previous occurrence of character x.

tx

Move to the character before the next occurrence of character x.

Tx

Move to the character after the previous occurrence of character x.

;

Repeat the previous f, t, F, or T movement.

,

Repeat the previous f, t, F, or T movement, but in the opposite direction.

`}`

Move to the next paragraph (or function/block, when editing code).

`{`

Move to the previous paragraph (or function/block, when editing code).

zz

Center cursor on screen.

Ctrl + e

Move screen down one line (without moving cursor).

Ctrl + y

Move screen up one line (without moving cursor).

Ctrl + b

Move back one full screen.

Ctrl + f

Move forward one full screen.

Ctrl + d

Move forward half a screen.

Ctrl + u

Move back half a screen.

### [Insert Mode](#insert-mode-1)

Insert Mode commands handle text entry and minor adjustments while typing.

Command

Description

i

Insert before the cursor.

I

Insert at the beginning of the line.

a

Insert (append) after the cursor.

A

Insert (append) at the end of the line.

o

Append (open) a new line below the current line.

O

Append (open) a new line above the current line.

ea

Insert (append) at the end of the word.

Ctrl + h

Delete the character before the cursor.

Ctrl + w

Delete the word before the cursor.

Ctrl + j

Begin a new line.

Ctrl + t

Shift the current line one tab to the right.

Ctrl + d

Shift the current line one tab to the left.

Ctrl + n

Insert the next completion of the word under the cursor.

Ctrl + p

Insert the previous completion of the word under the cursor.

Ctrl + rx

Insert the register x contents.

Ctrl + ox

Temporarily enter Normal Mode to issue a single command.

ESC

Exit Insert Mode.

### [Editing](#editing)

Editing commands allow you to modify text, from single characters to entire lines.

Command

Description

r

Replace a single character.

R

Replace multiple characters.

J

Join line below to the current one with one space in between.

gJ

Join line below to the current one without space in between.

gwip

Reformat paragraph.

g~

Switch case of character under cursor.

gu

Make character under cursor lowercase.

gU

Make character under cursor uppercase.

cc

Change (replace) an entire line.

c$

Change (replace) to the end of the line.

C

Change (replace) to the end of the line.

ciw

Change (replace) the entire word.

cw

Change (replace) to the end of the word.

ce

Change (replace) to the end of the word.

s

Delete character under cursor and substitute text.

S

Delete line and substitute text (same as cc).

xp

Transpose two letters (delete and paste).

u

Undo.

U

Undo all changes on line.

Ctrl + r

Redo.

.

Repeat last command.

### [Marking text (Visual Mode)](#marking-text-visual-mode)

Visual Mode commands help you select text for further actions like copying or deleting.

Command

Description

v

Start Visual Mode, mark lines, then do a command (like y-yank).

V

Start linewise Visual Mode.

o

Move to other end of marked area.

O

Move to other corner of block.

Ctrl + v

Start Visual Block Mode.

aw

Mark a word.

ab

A block with ()

aB

A block with

at

A block with <>

ib

Inner block with ()

iB

Inner block with

it

Inner block with <>

Esc

Exit Visual Mode.

### [Visual commands](#visual-commands)

These commands operate on text selected in Visual Mode, such as shifting or copying.

Command

Description

\>

Shift text right.

<

Shift text left.

y

Yank (copy) marked text.

d

Delete marked text.

~

Switch case.

u

Change marked text to lowercase.

U

Change marked text to uppercase.

### [Registers](#registers)

Registers store text for later use during copy and paste.

Command

Description

:reg\[isters\]

List all registers.

“xy

Yank text into register x.

“xp

Paste text from register x.

“xP

Paste before cursor.

“+y

Yank into system clipboard.

### [Marks and positions](#marks-and-positions)

Marks and positions let you bookmark and jump to specific locations in a file.

Command

Description

:marks

List all marks.

ma

Set current position for mark a.

a

Jump to mark a.

y’a

Yank to mark a.

0

Jump to start of line.

”

Jump to last edit position.

.

Jump to last edit position.

Jump to last edit position.

:ju\[mps\]

List all jump positions.

Ctrl + o

Jump to previous position.

Ctrl + i

Jump to next position.

:changes

List all changes.

g,

Jump to previous change.

g;

Jump to next change.

Ctrl + j

Jump to next change.

### [Macros](#macros)

Macros record and replay sequences of commands to automate repetitive tasks.

Command

Description

qa

Start recording macro a.

q

Stop recording macro.

@a

Execute macro a.

@@

Execute last macro.

### [Cut and paste](#cut-and-paste)

Cut and paste commands handle copying, deleting, and moving text.

Command

Description

yy

Yank (copy) a line.

2yy

Yank (copy) 2 lines.

yw

Yank (copy) the characters of the word from the cursor position to the start of the next word.

y$

Yank (copy) to end of line.

yiw

Yank (copy) inner word.

yaw

Yank (copy) a word including the surrounding white space.

p

Put (paste) the clipboard after cursor.

P

Put (paste) before cursor.

gp

Put (paste) after cursor.

gP

Put (paste) before cursor.

dd

Delete (cut) a line.

2dd

Delete (cut) 2 lines.

dw

Delete (cut) the characters of the word from the cursor position to the start of the next word.

D

Delete (cut) to the end of the line.

d$

Delete (cut) to the end of the line.

diw

Delete (cut) inner word.

daw

Delete (cut) a word including the surrounding white space.

x

Delete (cut) character.

### [Indent text](#indent-text)

Indentation commands adjust text alignment, useful for code formatting.

Command

Description

\>>

Shift text right.

<<

Shift text left.

\>%

Shift selected lines right.

<%

Shift selected lines left.

\>ib

Shift inner block right.

<ib

Shift inner block left.

\>at

Shift block right.

<at

Shift block left.

3==

Auto indent 3 lines.

\=%

Auto indent selected lines.

\=iB

Auto indent inner block.

gg=G

Auto indent whole file.

\]p

Paste and indent.

### [Exiting](#exiting)

Exiting commands manage how you save and close files in VIM.

Command

Description

:w

Write (save) the file, but don’t exit.

:w !sudo tee %

Write out the current file using sudo.

:wq

Write (save) and quit.

:x

Write (save) and quit.

ZZ

Write (save) and quit.

:q

Quit (fails if there are unsaved changes).

:q!

Quit and throw away unsaved changes.

ZQ

Quit and throw away unsaved changes.

:wqa

Write (save) and quit on all tabs.

:qa

Quit on all tabs.

### [Search and replace](#search-and-replace)

Search and replace commands help you find and modify text efficiently.

Command

Description

/pattern

Search for pattern.

?pattern

Search backward for pattern.

\\vpattern

Search for lines not containing pattern.

n

Repeat search in same direction.

N

Repeat search in opposite direction.

:%s/old/new/g

Replace all old with new throughout file.

:%s/old/new/gc

Replace all old with new throughout file with confirmations.

:s/old/new/g

Replace all old with new in the current line.

:s/old/new/gc

Replace all old with new in the current line with confirmations.

:noh\[lsearch\]

Remove highlighting of search matches.

### [Search in multiple files](#search-in-multiple-files)

These commands extend search capabilities across multiple files.

Command

Description

:vimgrep /pattern/ {file}

Search for pattern in multiple files.

:cn\[ext\]

Jump to the next match.

:cp\[revious\]

Jump to the previous match.

:cope\[n\]

Open a window containing the list.

:ccl\[ose\]

Close the window.

### [Tabs](#tabs)

Tab commands manage multiple files in separate tabs for multitasking.

Command

Description

:tabe

Open a new tab.

:tabnew {page.words.file}

Open a new tab.

gt

Move to the next tab.

:tabn\[ext\]

Move to the next tab.

gT

Move to the previous tab.

:tabp\[revious\]

Move to the previous tab.

#gt

Move to tab #.

:tabm\[ove\] {number}

Move the current tab to the {number}th position (indexed from 0).

:tabc\[lose\]

Close the current tab.

:tabo\[nly\]

Close all tabs except for the current one.

:tabr\[ewind\]

Move to the first tab.

:tabfir\[st\]

Move to the first tab.

:tabl\[ast\]

Move to the last tab.

:tabs

List all tabs.

:tabdo

Run a command for each open tab.

:tabdo {cmd}

Run {cmd} for each open tab.

### [Working with multiple files](#working-with-multiple-files)

These commands handle multiple files using buffers and window splits.

Command

Description

:e\[dit\] {file}

Edit a file in a new buffer.

:bn\[ext\]

Go to the next buffer.

:bp\[revious\]

Go to the previous buffer.

:bd\[elete\]

Delete a buffer.

:b\[uffer\]{number}

Go to buffer {number}.

:b\[uffer\] file

Go to buffer {file}.

:ls

List all open buffers.

:buffers

List all open buffers.

:sp\[lit\] {file}

Open a file in a new buffer and split window.

:vsp\[lit\] {file}

Open a file in a new buffer and vertically split window.

:vert\[ical\] ba\[ll\]

Open a file in a new buffer and vertically split window.

:tab ba\[ll\]

Open a file in a new buffer and split window.

:tabe\[dit\] {file}

Open a file in a new buffer and split window.

:tabnew {file}

Open a file in a new buffer and split window.

:tab sball

Open a file in a new buffer and split window.

Ctrl + ws

Split window.

Ctrl + ww

Move to the next window.

Ctrl + wq

Close the current window.

Ctrl + wv

Split window vertically.

Ctrl + wh

Move to the window on the left.

Ctrl + wl

Move to the window on the right.

Ctrl + wj

Move to the window below.

Ctrl + wk

Move to the window above.

Ctrl + w=

Make all windows the same height.

Ctrl + wH

Move the current window to the far left.

Ctrl + wL

Move the current window to the far right.

Ctrl + wJ

Move the current window to the bottom.

Ctrl + wK

Move the current window to the top.

## [Summary](#summary)

This guide covers VIM’s essentials: navigating files, editing text, performing search-and-replace operations, and managing multiple files. With practice, these commands will speed up your day-to-day editing.

## [References](#references)

-   [VIM Official Website](https://www.vim.org/)
-   [VIM Documentation](https://www.vim.org/docs.php)
-   [VIM Adventures (Interactive Tutorial)](https://vim-adventures.com/)
-   [OpenVIM (Interactive Tutorial)](https://www.openvim.com/)
-   [VIM Cheat Sheet by vim.rtorr.com](https://vim.rtorr.com/)
-   [A VIM Tutorial and Primer by Daniel Miessler](https://danielmiessler.com/p/vim/)
-   [Learn Vim (the Smart Way) - Free Code Camp](https://www.freecodecamp.org/news/learn-vim-beginners-tutorial/)
-   [Vim User Manual by Bram Moolenaar](http://vimdoc.sourceforge.net/htmldoc/usr_toc.html)
-   [Practical Vim: Edit Text at the Speed of Thought (Book by Drew Neil)](https://pragprog.com/titles/dnvim2/practical-vim-second-edition/)
-   [VIM Galore - A comprehensive guide to VIM](https://github.com/mhinz/vim-galore)
-   [VIM Wiki](https://vim.fandom.com/wiki/Vim_Tips_Wiki)
-   [Thoughtbot - Learn Vim](https://thoughtbot.com/upcase/vim)
-   [Vimcasts - Free Vim Screencasts](http://vimcasts.org/)
-   [Devhints VIM Cheat Sheet](https://devhints.io/vim)
-   [Linux.com - An Introduction to the VIM Editor](https://www.linux.com/training-tutorials/vim-101-beginners-guide-vim/)

Was this useful?

## Tags

[#VIM Commands](/blog/tags/vim-commands)[#VIM Cheat Sheet](/blog/tags/vim-cheat-sheet)[#Text Editing](/blog/tags/text-editing)[#CLI](/blog/tags/cli)[#Linux Tools](/blog/tags/linux-tools)[#VIM Modes](/blog/tags/vim-modes)[#Productivity](/blog/tags/productivity)[#Code Editing](/blog/tags/code-editing)

## Share

[Facebook](https://facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet "Share on Facebook")[Twitter](https://twitter.com/intent/tweet/?text=VIM%20Cheat%20Sheet&url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet "Share on Twitter")[LinkedIn](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet&title=VIM%20Cheat%20Sheet&summary=VIM%20is%20a%20highly%20configurable%20text%20editor%20available%20on%20most%20Linux%20distributions.%20Ideal%20for%20editing%20files%20via%20the%20command%20line%2C%20its%20modal%20design%20offers%20distinct%20modes%20for%20various%20tasks.%20This%20cheat%20sheet%20provides%20a%20quick%20reference%20for%20VIM's%20essential%20commands%20and%20features.&source=https://mkabumattar.com "Share on LinkedIn")[WhatsApp](https://wa.me/?text=VIM%20Cheat%20Sheet%20https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet "Share on WhatsApp")[Telegram](https://t.me/share/url?url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet&text=VIM%20Cheat%20Sheet "Share on Telegram")[Reddit](https://www.reddit.com/submit?url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet&title=VIM%20Cheat%20Sheet "Share on Reddit")[Hacker News](http://news.ycombinator.com/submitlink?u=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet&t=VIM%20Cheat%20Sheet "Share on Hacker News")[Pinterest](https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet&media=&description=VIM%20is%20a%20highly%20configurable%20text%20editor%20available%20on%20most%20Linux%20distributions.%20Ideal%20for%20editing%20files%20via%20the%20command%20line%2C%20its%20modal%20design%20offers%20distinct%20modes%20for%20various%20tasks.%20This%20cheat%20sheet%20provides%20a%20quick%20reference%20for%20VIM's%20essential%20commands%20and%20features. "Share on Pinterest")[Email](<mailto:?subject=VIM%20Cheat%20Sheet&body=Check out this article: https%3A%2F%2Fmkabumattar.com%2Fblog%2Fpost%2Fvim-cheat-sheet>)

## Comments

## You might also enjoy

More posts on similar topics

[![Dotfiles: A Git-Based Strategy for Configuration Management](/_astro/hero.wfzXy7kc_dMWKx.webp)](/blog/post/dotfiles)

## [Dotfiles: A Git-Based Strategy for Configuration Management](/blog/post/dotfiles)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Linux](/blog/categories/linux)
-   [Git](/blog/categories/git)
-   [Configuration Management](/blog/categories/configuration-management)
-   [Developer Tools](/blog/categories/developer-tools)
-   [Productivity](/blog/categories/productivity)

Introduction Your dotfiles, those hidden .-prefixed configuration files scattered across your home directory, are the muscle memory of your environment. They hold your shell aliases, your editor

[#Dotfiles Management](/blog/tags/dotfiles-management)[#Git Bare Repository](/blog/tags/git-bare-repository)[#Shell Configuration](/blog/tags/shell-configuration)+7 tags

[read more](/blog/post/dotfiles)

[![Customization Windows Terminal With Starship](/_astro/hero.C_M2lGhc_1GJQQi.webp)](/blog/post/customization-windows-terminal-with-starship)

## [Customization Windows Terminal With Starship](/blog/post/customization-windows-terminal-with-starship)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Windows](/blog/categories/windows)
-   [Terminal](/blog/categories/terminal)
-   [PowerShell](/blog/categories/powershell)
-   [Starship](/blog/categories/starship)
-   [Customization](/blog/categories/customization)
-   [Developer Tools](/blog/categories/developer-tools)

Introduction In this article, we will install PowerShell and Starship, configure Windows Terminal, and then customize it with Starship. What is Windows Terminal? Windows Terminal is a modern

[#Windows Terminal](/blog/tags/windows-terminal)[#Starship Prompt](/blog/tags/starship-prompt)[#PowerShell Customization](/blog/tags/powershell-customization)+7 tags

[read more](/blog/post/customization-windows-terminal-with-starship)

[![10+ Secret Git Commands That Will Save Hours Every Week](/_astro/hero.BrIIpyXb_8Js6X.webp)](/blog/post/10-secret-git-commands-to-save-time)

## [10+ Secret Git Commands That Will Save Hours Every Week](/blog/post/10-secret-git-commands-to-save-time)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Git](/blog/categories/git)
-   [Version Control](/blog/categories/version-control)
-   [DevOps](/blog/categories/devops)
-   [Software Development](/blog/categories/software-development)
-   [Productivity](/blog/categories/productivity)

Introduction As a software engineer, DevOps engineer, or GitHub user, you probably use Git daily. But are you making the most of it? Git is packed with commands that can save you hours of manual w

[#Git Commands](/blog/tags/git-commands)[#Git Tips](/blog/tags/git-tips)[#Version Control](/blog/tags/version-control)+7 tags

[read more](/blog/post/10-secret-git-commands-to-save-time)

[![Git SSH Keys for GitHub, GitLab, and Bitbucket on Linux](/_astro/hero.ohMeiGHZ_Z1ILCmY.webp)](/blog/post/git-ssh-keys-for-github-gitlab-and-bitbucket-on-linux)

## [Git SSH Keys for GitHub, GitLab, and Bitbucket on Linux](/blog/post/git-ssh-keys-for-github-gitlab-and-bitbucket-on-linux)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Linux](/blog/categories/linux)
-   [Git](/blog/categories/git)
-   [SSH](/blog/categories/ssh)
-   [Version Control](/blog/categories/version-control)
-   [Developer Tools](/blog/categories/developer-tools)

Introduction By default, Git talks to remotes over HTTPS, so it asks for your username and password on every git pull or git push. SSH fixes that. GitHub, GitLab, and Bitbucket all let Git aut

[#SSH Keys](/blog/tags/ssh-keys)[#Ed25519](/blog/tags/ed25519)[#GitHub SSH](/blog/tags/github-ssh)+8 tags

[read more](/blog/post/git-ssh-keys-for-github-gitlab-and-bitbucket-on-linux)

[![Git SSH Keys for GitHub, GitLab, and Bitbucket on Windows](/_astro/hero.CT0gfesP_1kDHLR.webp)](/blog/post/git-ssh-keys-for-github-gitlab-and-bitbucket-on-windows)

## [Git SSH Keys for GitHub, GitLab, and Bitbucket on Windows](/blog/post/git-ssh-keys-for-github-gitlab-and-bitbucket-on-windows)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [Git](/blog/categories/git)
-   [SSH](/blog/categories/ssh)
-   [Windows](/blog/categories/windows)
-   [Version Control](/blog/categories/version-control)
-   [Security](/blog/categories/security)
-   [Developer Tools](/blog/categories/developer-tools)

Introduction By default, Git talks to remotes over HTTPS, so it asks for your username and password on every git pull or git push. SSH fixes that. GitHub, GitLab, and Bitbucket all let Git aut

[#SSH Key Generation](/blog/tags/ssh-key-generation)[#Ed25519](/blog/tags/ed25519)[#Git Configuration](/blog/tags/git-configuration)+8 tags

[read more](/blog/post/git-ssh-keys-for-github-gitlab-and-bitbucket-on-windows)

[![How to Install and Setup FireWall on Amazon Linux 2](/_astro/hero.b8oDtFR4_ZdWcUP.webp)](/blog/post/how-to-install-and-setup-firewall-on-amazon-linux-2)

## [How to Install and Setup FireWall on Amazon Linux 2](/blog/post/how-to-install-and-setup-firewall-on-amazon-linux-2)

-   [Mohammad Abu Mattar](/authors/mohammad-abu-mattar)
-   [AWS](/blog/categories/aws)
-   [EC2](/blog/categories/ec2)
-   [Linux](/blog/categories/linux)
-   [Firewall](/blog/categories/firewall)
-   [Security](/blog/categories/security)

Introduction This tutorial covers installing and configuring firewalld on Amazon Linux 2, including setting the default zone and managing services and ports. Prerequisites To follow along wit

[#Firewalld](/blog/tags/firewalld)[#Amazon Linux 2](/blog/tags/amazon-linux-2)[#EC2 Security](/blog/tags/ec2-security)+5 tags

[read more](/blog/post/how-to-install-and-setup-firewall-on-amazon-linux-2)

6 related posts
