colson-nvim
Version:
Colson Nvim: Neovim Code Editor/IDE for Software Engineers!
1,230 lines (863 loc) β’ 46.6 kB
Markdown
<div align="center">
<h1>Colson Nvim (colson-nvim npm) π</h1>
<h2>FullStack Neovim IDE by COLSON! π </h2>
<h2>Neovim IDE for TypeScript/JavaScript Software Engineers</h2>
<h3>Supports dozen different programming languages and technologies + DevOps Workflows (Kubernetes, Docker, Terraform and more)</h3>
<h2>π― Blazingly Fast as compared to VSCode and WebStorm π₯</h2>
<h2>Worldclass Neovim Experience for Engineers π</h2>
<!-- <img src='https://i.imgur.com/nls1N1W.png' alt='colson nvim discord presence' /> -->
<img src='https://i.imgur.com/kpAiwYn.png' alt='colson nvim discord presence' />
</div>
Step into the realm of excellence with my world-class Neovim (nvim) configuration! This comprehensive guide unveils a meticulously crafted zenful setup, meticulously designed for unparalleled efficiency, productivity, and visual splendor within Neovim.
Embark on a journey through a domain enriched with powerful features, plugins, and finely tuned key bindings, addressing a diverse range of coding/text-editing requirements. Welcome to a sublime Neovim experience tailored to elevate your coding endeavors to new heights! π₯








## Installation through NPM
Ensure `Neovim (v >= 0.9.x or v < 0.11.x)` and `Node` are installed on your machine!
### **π¨ RED ZONE**!
Neovim **`v0.11.x`** nd higher intoduces breaking changes so it breaks the entire
LSP configuration. Therefore, its mandatory to use Neovim **`v0.9.x`** or **`v0.10.x`**
but not **`v0.11.x`**.
Check Neovim version of your machine:
```shell
nvim --version
```
If it has version, **`v0.11.x`**, then you need to downgrade to **`v0.10.x`**!
```shell
$ yay -S downgrade
$ sudo downgrade neovim
# Select v0.10.4
# Recheck neovim version:
$ nvim --version
```
Now `leader+pac` on `nvim/lua/colson/packer.lua` works so reload plugins with `leader+pac`!
`NOTE`: Leader key for Neovim -> **SPACE**
```shell
$ npx colson-nvim
$ cd ~/.config/nvim
$ nvim .
```
Navigate to `lua/colson/packer.lua`
Execute this command in normal mode!
```
:so
:PackerSync
```
For the latest pull, do:
```
$ npx colson-nvim@latest
```
If its not the first time, then each time you do the latest pull, go to:
```shell
$ cd ~/.config/nvim
$ nvim .
```
Navigate to `lua/colson/packer.lua`
Then, in normal mode, do:
```
<leader>pac
```
### Important Dependency!
For this to work properly, many packages depends upon this dependency `Ultisnips`
which requires `pynvim` installed on your machine.
Here's detailed guide:
- [Ultisnips Dependency Installation](#ultisnips-dependency-installation)
Here's quick guide!!
```shell
$ sudo pacman -S base-devel cmake unzip
$ sudo pacman -S python-pynvim
```
Now, make sure you're synced with my latest configuration!
```shell
$ cd ~/.config/nvim
$ nvim .
```
Open `lua/colson/packer.lua`
```
<leader>pac
```
DONE!!
This resolves the error when opening NVIM!
COOL!
Now, Restart **Neovim** in your desired workspace!
```
nvim .
```
#### FOR the latest installation pull, do:
```
$ npx colson-nvim@latest
```
#### `NOTE`: Read the documentation below for indepth wisdom on proper installation and uses!
That's the beginning of the new world. A beginning of new experience, journey packed with challenges, integrated with tools used in daily lives, boosting productivity, enhancing engineers performance!
## [goto: TABLE OF CONTENTS π ](#table-of-contents)
**DEMO Screenshot**
## β¨ New Updated Zenful Look (COLSON NVIM)
## @ Neovim on Arch Linux
### π NEW ZEN LOOK (Colson NVIM, March 19th, 2025)

### π NEW LOOK (Colson NVIM, December 5th, 2024)



























### New Modern Look, September 2024 π











### Latest Fresh Look, July 2024 :)








---
## @ Neovim on macOS
### 2023/Early 2024 Look





## π₯ COOL NEW Discord Presence for Neovim (April, 2025)


## β Keeping Your Configuration Up-to-Date
I'm committed to consistently enhancing this Neovim setup with new features, optimizations, and additional plugins. To ensure you're making the most out of this dynamic configuration, I recommend checking for updates monthly!
As the configuration evolves, it's a good practice to sync your local repository with the latest changes. To do this, navigate to your Neovim configuration directory and run the following command:
```bash
cd ~/.config/nvim
git pull origin main
```
## **Prerequisites: Neovim 0.9.0 or Higher**
Ensure a seamless experience by confirming your Neovim version meets the requirements. Execute the following command to check your Neovim version:
```bash
nvim --version
```
Upgrade to Neovim 0.9.0 or higher if needed, and dive into an enhanced coding experience with this dynamic configuration! π
## Table of Contents
- [Installation through NPM](#installation-through-npm)
- [Important Dependency!](#important-dependency)
- [FOR the latest installation pull, do:](#for-the-latest-installation-pull-do)
- [`NOTE`: Read the documentation below for indepth wisdom on proper installation and uses!](#note-read-the-documentation-below-for-indepth-wisdom-on-proper-installation-and-uses)
- [goto: TABLE OF CONTENTS π ](#goto-table-of-contents--)
- [β¨ New Updated Zenful Look (COLSON NVIM)](#-new-updated-zenful-look-colson-nvim)
- [@ Neovim on Arch Linux](#-neovim-on-arch-linux)
- [π NEW ZEN LOOK (Colson NVIM, March 19th, 2025)](#-new-zen-look-colson-nvim-march-19th-2025)
- [π NEW LOOK (Colson NVIM, December 5th, 2024)](#-new-look-colson-nvim-december-5th-2024)
- [New Modern Look, September 2024 π](#new-modern-look-september-2024-)
- [Latest Fresh Look, July 2024 :)](#latest-fresh-look-july-2024-)
- [@ Neovim on macOS](#-neovim-on-macos)
- [2023/Early 2024 Look](#2023early-2024-look)
- [π₯ Discord Presence for Neovim](#-discord-presence-for-neovim)
- [β Keeping Your Configuration Up-to-Date](#-keeping-your-configuration-up-to-date)
- [**Prerequisites: Neovim 0.9.0 or Higher**](#prerequisites-neovim-090-or-higher)
- [Table of Contents](#table-of-contents)
- [Introduction](#introduction)
- [π Old Look (COLSON NVIM)](#-old-look-colson-nvim)
- [Installation](#installation)
- [Features](#features)
- [Global Key Bindings](#global-key-bindings)
- [Leader Key](#leader-key)
- [Netrw: File Explorer](#netrw-file-explorer)
- [NvimTree (Right window pane file explorer)](#nvimtree-right-window-pane-file-explorer)
- [Save Files](#save-files)
- [Save and Exit Nvim](#save-and-exit-nvim)
- [Collaborative Editing](#collaborative-editing)
- [Text Manipulation](#text-manipulation)
- [Code Formatting](#code-formatting)
- [Navigation](#navigation)
- [Search and Replace](#search-and-replace)
- [Normal Mode Key Bindings](#normal-mode-key-bindings)
- [Line Manipulation](#line-manipulation)
- [Scrolling](#scrolling)
- [Code Navigation](#code-navigation)
- [Ex Mode](#ex-mode)
- [Git Integration](#git-integration)
- [Harpoon Integration](#harpoon-integration)
- [LSP Integration](#lsp-integration)
- [**Telescope** Integration](#telescope-integration)
- [TELESCOPE GREP Search](#telescope-grep-search)
- [π₯ NEW UPDATES](#-new-updates)
- [**Bufferline**](#bufferline)
- [**JSX/TSX \& Other Languages Commenting**](#jsxtsx--other-languages-commenting)
- [**@ Commenting in Normal Mode**](#-commenting-in-normal-mode)
- [**@ Commenting in Visual Mode**](#-commenting-in-visual-mode)
- [**Discord Presence**](#discord-presence)
- [Emmet (For HTML/JSX Autocompletion)](#emmet-for-htmljsx-autocompletion)
- [Normal Mode Tag Manipulation: tsx/jsx/html](#normal-mode-tag-manipulation-tsxjsxhtml)
- [Tailwind CSS IntelliSense](#tailwind-css-intellisense)
- [Gen Lorem Ipsum](#gen-lorem-ipsum)
- [Code Fold](#code-fold)
- [Live Server](#live-server)
- [System Clipboard Copy](#system-clipboard-copy)
- [π React Snippets Autocompletion](#-react-snippets-autocompletion)
- [Ultisnips Dependency Installation](#ultisnips-dependency-installation)
- [π₯ React Snippets Guide](#-react-snippets-guide)
- [Functional Components](#functional-components)
- [Class Components](#class-components)
- [General Redux + Redux Toolkit](#general-redux--redux-toolkit)
- [π― TypeScript/JavaScript Engine: Cool Features](#-typescriptjavascript-engine-cool-features)
- [Git Diff View π](#git-diff-view-)
- [π°οΈ HTTP REST Client](#οΈ-http-rest-client)
- [Keymaps](#keymaps)
- [Key Mapping Explanation](#key-mapping-explanation)
- [Usage Example](#usage-example)
- [πͺ HTTP Client](#-http-client)
- [pynvim Bindings:](#pynvim-bindings)
- [requests Library:](#requests-library)
- [β‘ Execute Network Request](#-execute-network-request)
- [π Syncing Packer Updates](#-syncing-packer-updates)
- [β
Git Merge Conflicts Resolver](#-git-merge-conflicts-resolver)
- [π Telescope π₯](#-telescope-)
- [Telescope Normal Mode Commands](#telescope-normal-mode-commands)
- [Telescope Insert Mode Commands](#telescope-insert-mode-commands)
- [π€ Augment Code β Enterprise Grade Configuration](#-augment-code--enterprise-grade-configuration)
- [Key Mappings](#key-mappings)
- [User Command Aliases](#user-command-aliases)
- [Workspace Configuration \& Auto-Update](#workspace-configuration--auto-update)
- [π€ Github Copilot Integration](#-github-copilot-integration)
- [π **HTTP REST Client for Engineers**](#-http-rest-client-for-engineers)
- [Features](#features-1)
- [Dependencies:](#dependencies)
- [HTTP File Syntax Overview](#http-file-syntax-overview)
- [**Commands \& Key Mappings Table**](#commands--key-mappings-table)
- [Cool Pre-Configured Themes](#cool-pre-configured-themes)
- [**@ Github Themes** - Has flavors](#-github-themes---has-flavors)
- [**@ Catppuccin Theme** - Has flavors](#-catppuccin-theme---has-flavors)
- [**@ Rose Pine Theme** - Has flavors](#-rose-pine-theme---has-flavors)
- [**@ Jetbrains IDE Theme**](#-jetbrains-ide-theme)
- [**@ MoonFly Theme**](#-moonfly-theme)
- [**@ One Dark Theme** - Has flavors](#-one-dark-theme---has-flavors)
- [**@ Nord Theme** - Has flavors](#-nord-theme---has-flavors)
- [**@ Tokyo Night Theme** - Has flavors π](#-tokyo-night-theme---has-flavors-)
## Introduction<a name="introduction"></a>
This Neovim configuration is a powerhouse of productivity enhancements and aesthetics. I've curated a selection of plugins, key bindings, and themes to provide a versatile and delightful text-editing experience. Whether you're a developer, writer, or anyone in need of a robust text editor, this setup has got you covered.
### π Old Look (COLSON NVIM)








## Installation<a name="installation"></a>
To embark on this Neovim journey, follow these steps:
1. Clone this repository to your Neovim configuration directory:
```shell
git clone https://github.com/colson0x1/colson-nvim ~/.config/nvim
```
2. Install Packer.nvim for managing plugins:
```shell
git clone https://github.com/wbthomason/packer.nvim \
~/.local/share/nvim/site/pack/packer/start/packer.nvim
```
3. Launch Neovim and run `:PackerSync` to install and update plugins.
4. Install JetBrainsMono Nerd Font:
- Install the regular JetBrains Mono version to support Unicode and Programming Languages Icons in the Neovim IDE!
<br />
https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/JetBrainsMono.zip
Now, you're all set to unleash the power of this Neovim configuration!

## Features<a name="features"></a>
### Global Key Bindings<a name="global-key-bindings"></a>
#### Leader Key
- **`<Space>`** serves as the leader key for most key bindings.
#### Netrw: File Explorer

- **`<leader>pv`**: Open a file explorer with **Netrw**.
#### NvimTree (Right window pane file explorer)
- **`<leader>e`**: Toggle NvimTree
**NOTE: Make sure NvimTree is Opened!**
- **`<leader>+`** - Increase the NvimTree (or current window) width by 5 columns.
- **`<leader>-`** - Decrease the NvimTree (or current window) width by 5 columns.
- **`<leader>fp`** - Manually set the width of the Project Pane.
##### Save Files
**`<leader>w`** - Save all open files.
##### Save and Exit Nvim
**`<leader>q`**: - Exit Neovim
**NEW Look!**

**Old Look**

#### Collaborative Editing
- **`<leader>vwm`**: Start a Vim-With-Me collaborative editing session.
- **`<leader>svwm`**: Stop a Vim-With-Me collaborative editing session.
#### Text Manipulation
- **``**: Delete selected text in visual mode.
- **``**: Yank text to the system clipboard.
- **`Ctrl+y`**: Yank the entire line to the system clipboard.
- **``**: Delete text without clobbering the register.
- **`Ctrl+c`**: Exit insert mode.
#### Code Formatting
- **`<leader>f`**: Format code using LSP (Language Server Protocol).
- Even awesome: **`:w`** triggers Prettier for code formatting!
#### Navigation
- **`<C-k>`** and **`<C-j>`**: Navigate through the quickfix list.
- **`<leader>k`** and **`<leader>j`**: Navigate through the location list.
#### Search and Replace
Search and Replace
- **`<leader>sr`**: Perform a search and replace using Telescope.
### Normal Mode Key Bindings<a name="normal-mode-key-bindings"></a>
#### Line Manipulation
- **`<leader>k`** and **`<leader>j`**: Move the current line up or down.
- **`<leader>K`** and **`<leader>J`**: Copy the current line up or down.
- **`<leader>dd`**: Delete the current line.
- **`<leader>cc`**: Duplicate the current line.
#### Scrolling
- **``** and **``**: Scroll down or up.
#### Code Navigation
- **`ds`** or **`gd`**: Go to definition (Normal Mode).
- **`gf`**: Go to file.
- **`gy`**: Go to type definition.
- **`gi`**: Go to implementation.
- **`gr`**: Show references.
- **``**: Rename symbol.
#### Ex Mode
- **`:W`**: Write the current file.
- **`:Wq`**: Write and quit.
- **`:WQ`**: Write and quit (forceful).
- **`:Wqa`**: Write all and quit.
#### Git Integration
- **`<leader>gs`**: Git status.
- **`<leader>gc`**: Git commit.
- **`<leader>gp`**: Git push.
- **`<leader>gl`**: Git log.
#### Harpoon Integration
- **`Ctrl+e`**: Harpoon open quick list.
- - **`<leader>a`**: Harpoon add buffer.
- **`Ctrl+t and Ctrl+h`**: Harpoon toggle buffer.
#### LSP Integration
- **`Shift+k`**: LSP hover.
- **`Ctrl+n`**: LSP toggle next in autocompletion.
- **`Ctrl+p`**: LSP toggle previous in autocompletion.
- **`Ctrl+k or Ctrl+y`**: LSP select in autocompletion.
- View Diagnostic Errors: **`<leader>dd` or `<leader>sd` or `<leader>vd`**
### **Telescope** Integration<a name="telescope-integration"></a>




- **`<leader>pf`**: Find files in the current directory.
NOTE: **`<leader>`** is **SPACE**
### TELESCOPE GREP Search
Search by keyword in files!


- **`<leader>ps`**: Live grep files.
## π₯ NEW UPDATES
### **Bufferline**

To enable bufferline (Tab based file buffer like VSCode), Go to:
`$ ~/.config/nvim`
Open nvim: `$ nvim .`
Navigate to `packer.lua` and uncomment `Bufferline Plugin`
After that, write `:w` and source it: `:so` and run packer sync: `:PackerSync`
Now you're good to go!
- **`<leader>h`**: Goes to next tab.
- **`<leader>g`**: Goes to prev tab.
- **`<leader>btl`**: Move tab left.
- **`<leader>btr`**: Move tab right.
- **`<leader>bd`**: Delete current tab.
- **`<leader>bcl`**: Delete all tabs on left hand side.
- **`<leader>bcr`**: Delete all tabs on right hand side.
- **`<leader>abc`**: Close all tabs except currently opened one.
### **JSX/TSX & Other Languages Commenting**
#### **@ Commenting in Normal Mode**
- **`gcc`** - Toggles the current line using `linewise` comment.
- **`gbc`** - Toggles the current line using `blockwise` comment.
- **`[count]gcc`** - Toggles the number of line given as a prefix count
using `linewise` comment.
- **`[count]gbc`** - Toggles the number of line given as a prefix count
using `blockwise` comment.
- **`gc[count]{motion}`** - Toggles the region using `linewise` comment.
- **`gb[count]{motion}`** - Toggles the region using `blockwise` comment
#### **@ Commenting in Visual Mode**
- **`gc`** - Toggles the region using `linewise` comment.
- **`gb`** - toggles the region using `blockwise` comment.
### **Discord Presence**
- Open discord first and then, open your workspace from terminal: `nvim .`
### Emmet (For HTML/JSX Autocompletion)
- **`!<Ctrl+k>`** To generate HTML standard boilerplate
- **`.app-header<Ctrl+k>`**: Creates `div` with `classname` of `app-header`.
- **`#root<Ctrl+k>`**: Creates `div` with `id` of `root`.
- **`.flex.color-blue-600`**: Creates `div` with `classnames` - `flex color-blue-600`.
- **`div<Ctrl+k>`**: Creates `div` element.
- **`nav>ul>li*2<Ctrl+k>`**: Creates
```js
<nav>
<ul>
<li></li>
<li></li>
</ul>
</nav>
```
- **`p+span<Ctrl+k>**: Creates
```js
<p></p>
<span></span>
```
- **`.className<Ctrl+k>`**: Creates `div` with `prop` `className` which can be useful for styling with css modules, tailwind or mixing with style components.
#### Normal Mode Tag Manipulation: tsx/jsx/html
- `vit`: Selects everything **inside the tag**, excluding the tags themselves.
- `vat`: Selects everything **including the tag** (inner and outer).
- `cit`: Deletes everything inside the tag and starts insert mode.
- `dit`: Deletes everything inside the tag without entering insert mode.
- `dat`: Deletes the tag and its contents.
### Tailwind CSS IntelliSense
- Use **`<Ctrl+k>`** to select when you use tailwind: Ex when you type `text-` in `className='text-'`, you get autocompletion!
- Use **`<Ctrl+k`** to select in autocompletion.
- Use **`<Ctrl+n`** to go to next in the occurrence.
- Use **`<Ctrl+p`** to go to prev in occurrence.
### Gen Lorem Ipsum
- To generate lorem ipsum paragraph: In normal mode, type `:Lorem`
- To generate specified constraint of words: `:Lorem 10` which generates 10 words.
### Code Fold
- To use code folding: First go to `Visual Line Mode` using `Shift+v`.
After that use `j` or `k` to select block of code.
Now use: `zf` to fold code.
To unfold the code, go to the code fold line and use: `zo` to open the code fold.
### Live Server
- First install live server globally: `sudo npm install -g live-server`
- Now inside `Neovim`: Go to `index.html` and on `Normal Mode`, type:
`:LiveServerStart` to start the server and `:LiveServerStop` to stop the server.
### System Clipboard Copy
First install `xclip` on your machine in order for the configurations to work:
```
$ sudo pacman -S xclip
```
Then open any workspace with `nvim .` in `Tmux` environment. Now you're ready to go!
- NORMAL OR VISUAL MODE: **`<leader>y`** - Copies to system clipboard.
- NORMAL MODE: **`<leader>Y`** - Copies text from cursor to the end of the line to the system clipboard.
## π React Snippets Autocompletion
### Ultisnips Dependency Installation
For this to work, the main package depends upon this dependency `Ultisnips`
which requires `pynvim` installed on your machine.
First, let's verify if `python3` support is enabled inside your `nvim` environment.
```
cd ~/.config/nvim
```
```
nvim .
```
Open `packer.lua` and in normal mode: Type
```
:echo has('python3')
```
If it returns 1, we're good to go else we need to install the dependencies to enable the support inside the neovim environment.
Here's how to do it on **Arch Linux**:
```
$ sudo pacman -S base-devel cmake unzip
$ sudo pacman -S python-pynvim
```
`NOTE`: Make sure to use the package manager based on your distribution!!
- On **Arch-based** distros:
```bash
sudo pacman -S <package-name>
```
- On Debian-based distros:
```bash
sudo apt install <package-name>
```
- On Red Hat-based distros:
```bash
sudo yum install <package-name>
```
**For macOS:**
```bash
brew install python3
brew install pynvim
```
Now, again open that `packer.lua` file and verify if we've got access to the `python3` inside `neovim` environment.
This time, it should return `1` aka OKAY!
Now, make sure you're synced with my latest configuration!
```
$ cd ~/.config/nvim
```
```
nvim .
```
Open `packer.lua`
```
:so
:PackerSync
```
Yay, finally now we should be able to use `React Snippets`!
### π₯ React Snippets Guide
> Use **`<Ctrl+l>`** after you type the trigger code!
#### Functional Components
| Trigger Code | What it does |
| ------------ | ------------------------------------------ |
| `fce` | `Function Component Export` |
| `fcde` | `Function Component Default Export` |
| `sfce` | `Simple Function Component Export` |
| `sfcde` | `Simple Function Component Default Export` |
| `useS` | `useState` |
| `useE` | `useEffect` |
| `useEA` | `useEffect async` |
| `useC` | `useContext` |
| `useRed` | `useReducer` |
| `useCB` | `useCallback` |
| `useM` | `useMemo` |
| `useR` | `useRef` |
| `useI` | `useImperativeHandle` |
| `useL` | `useLayoutEffect` |
| `useDV` | `useDebugValue` |
| `useT` | `useTransition` |
#### Class Components
| Trigger Code | What it does |
| ------------ | ----------------------------------------- |
| `rce` | `React Class Component Export` |
| `rcep` | `React Class Export with Prop interface` |
| `rceps` | `React Class Export with Props and State` |
| `rcc` | `React Class Component` |
| `rcon` | `React Class Constructor` |
| `spt` | `Static PropTypes` |
| `sdp` | `Static Default Props` |
| `sdpt` | `Static Default Props Typed` |
| `cdm` | `Component Did Mount` |
| `cdu` | `Component Did Update` |
| `cdc` | `Component Did Catch` |
| `cwum` | `Component Will Unmount` |
#### General Redux + Redux Toolkit
| Trigger Code | What it does |
| ------------ | ------------------------ |
| `useDS` | `useDispatch` |
| `useSL` | `useSelector` |
| `cs` | `createSlice` |
| `ecs` | `export createSlice` |
| `cpr` | `create prepare reducer` |
| `cat` | `createAsyncThunk` |
### π― TypeScript/JavaScript Engine: Cool Features
- **@ sorts and removes unused imports: `<leader>oi` or `<leader>soi`**
- **@ sorts imports: `<leader>si`**
- **@ removes unused imports: `<leader>ui` or `<leader>ri`**
- **@ adds imports for all statements that lack one and can be imported: `<leader>ai`**
- **@ fixes all fixable errors: `<leader>fe`**
- **@ goes to source definition (available since TS v4.7): `<leader>d`**
- **@ allow to rename current file and apply changes to connected files: `<leader>r` or `<leader>rn` or `<leader>rf`**
- **@ find files that reference the current file (available since TS v4.2): `<leader>fr`**
---
## Git Diff View π
These keymaps facilitate easy navigation and management of diffs in your codebase!
| Key Mapping | Action |
| ---------------- | ------------------------ |
| **`<leader>do`** | Open diff view |
| **`<leader>dc`** | Close diff view |
| **`<leader>df`** | Toggle file panel |
| **`<leader>dh`** | Focus file panel |
| **`<leader>dr`** | Refresh files |
| **`<leader>dp`** | Previous file entry |
| **`<leader>dn`** | Next file entry |
| **`<leader>dt`** | Select entry |
| **`<leader>dh`** | Open file history panel |
| **`<leader>dl`** | Close file history panel |
---
## π°οΈ HTTP REST Client
### Keymaps
| **Action** | **Key Mapping** |
| ---------------------------- | ---------------- |
| Send HTTP request | **`<leader>rr`** |
| Preview HTTP request | **`<leader>rp`** |
| Re-run last HTTP request | **`<leader>rl`** |
| Toggle environment variables | **`<leader>re`** |
### Key Mapping Explanation
- **`<leader>rr`**: Sends the HTTP request located at the cursor position. Useful for quickly testing endpoints without leaving the editor.
- **`<leader>rp`**: Previews the HTTP request that will be sent. This is beneficial for verifying the request structure and headers before execution.
- **`<leader>rl`**: Re-runs the last executed HTTP request. This saves time when you need to test the same endpoint multiple times.
- **`<leader>re`**: Toggles environment variables from a `.env` file, allowing you to manage configurations effectively.
## Usage Example
Hereβs an example of how to use **HTTP REST Client** in your workflow:
1. **Open a new buffer** in Neovim.
2. **Write your HTTP request** in the format supported in either one of these extension - **`.http`** or **`.rest`** . For example:
**API.http**
```http
POST http://localhost:3000/api/v1/users
Content-Type: application/json
{
"name": "Colson",
"currentYear": "2024",
"age": "25"
}
```
3. **Place the cursor** anywhere within the request.
4. Press `<leader>rr` to **send the request**.
5. Check the response in a split window.
---
## πͺ HTTP Client
This requires two dependencies: `pynvim` and `requests` library. Make sure these two dependencies are installed on your machine for it to work!
### pynvim Bindings:
- Install with `pip`:
```bash
pip install pynvim
```
- On Arch-based distros:
```bash
sudo pacman -S python-pynvim
```
- On Debian-based distros:
```bash
sudo apt install python3-pynvim
```
- On Red Hat-based distros:
```bash
sudo yum install python-pynvim
```
### requests Library:
- Install with `pip`:
```bash
pip install requests
```
- On Arch-based distros:
```bash
sudo pacman -S python-requests
```
- On Debian-based distros:
```bash
sudo apt install python3-requests
```
- On Red Hat-based distros:
```bash
sudo yum install python-requests
```
### β‘ Execute Network Request
Use the extension **`.http`** to run HTTP API Requests!
1. Go to the `.http` file.
2. To initiate a network request, execute: **`<leader>api`**
3. To terminate the current request, execute: **`<leader>ter`**
## π Syncing Packer Updates
1. Go to: `cd ~/.config/nvim`
2. Open with nvim: `nvim .`
3. Navigate to `lua/colson/packer.lua`
4. Execute this to source + sync packer plugins: **`<leader>pac`**
5. DONE :)
## β
Git Merge Conflicts Resolver
| Key Mapping | Command | Action |
| ------------ | ------------------------- | ------------------------------------------ |
| `<leader>co` | `GitConflictChooseOurs` | Choose your changes (`ours`). |
| `<leader>ct` | `GitConflictChooseTheirs` | Choose incoming changes (`theirs`). |
| `<leader>cb` | `GitConflictChooseBoth` | Include both sides (`both`). |
| `<leader>c0` | `GitConflictChooseNone` | Discard both sides (`none`). |
| `<leader>cn` | `GitConflictNextConflict` | Jump to the next conflict. |
| `<leader>cp` | `GitConflictPrevConflict` | Jump to the previous conflict. |
| `<leader>cs` | `GitConflictListQf` | List all conflicts in the quickfix window. |
---
## π Telescope π₯
### Telescope Normal Mode Commands
| Keymap | Mode | Description |
| -------------------------- | ----------- | ------------------------------------ |
| `<leader>pf or <leader>ff` | Normal Mode | Find files in the project |
| `<leader>ps or <leader>fg` | Normal Mode | GREP Search: Search across all files |
| `<leader>fb` | Normal Mode | Switch between buffers |
| `<leader>fh` | Normal Mode | Open help tags |
| `<leader>fs` | Normal Mode | Interactive string search |
| `<leader>fd` | Normal Mode | View diagnostics for the workspace |
| `<leader>fw` | Normal Mode | Search workspace symbols |
| `<leader>fr` | Normal Mode | Find references to a symbol |
| `<leader>fi` | Normal Mode | Locate implementations |
| `<leader>fc` | Normal Mode | Quickly execute Neovim commands |
| `<leader>ft` | Normal Mode | Explore syntax tree using Treesitter |
| `<leader>gs` | Normal Mode | View Git status |
| `<leader>gc` | Normal Mode | Browse Git commits |
| `<leader>gb` | Normal Mode | Switch Git branches |
| `<leader>gf` | Normal Mode | Locate files tracked by Git |
### Telescope Insert Mode Commands
| Keymap | Mode | Description |
| ------- | ----------- | ------------------------- |
| `<C-n>` | Insert Mode | Move to the next item |
| `<C-p>` | Insert Mode | Move to the previous item |
| `<C-c>` | Insert Mode | Close Telescope window |
| `<CR>` | Insert Mode | Select default item |
| `<C-x>` | Insert Mode | Select horizontally |
| `<C-v>` | Insert Mode | Select vertically |
---
## π€ Augment Code β Enterprise Grade Configuration
Augment understands your codebase. I've configured and optimized for engineers working on large enterprise applications. The configuration provides:
- **Precise workspace context:** Workspace folders are explicitly set (or autoβupdated) so that Augmentβs AI engine has full knowledge of your codebase.
- **Custom key mappings:** Quick keybindings for accepting AI suggestions, launching chat, and triggering enterprise workflows (e.g. code review and refactoring prompts).
- **User command aliases:** Short command aliases to quickly invoke Augment functions from the command line.
### Key Mappings
π Goto command: Use **`Ctrl+j`** to accept the suggested inline code completion!
| Mode | Key Binding | Command Executed | Description |
| ------ | ------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
| Insert | `<C-j> ` | `call augment#Accept()` | Accept the current inline suggestion. |
| Insert | `<CR>` | `call augment#Accept("\n")` | Accept suggestion; if none, insert a newline. |
| Normal | `<leader>as` | `:Augment status` | Show Augment status (sign-in and workspace sync info). |
| Normal | `<leader>asi` | `:Augment signin` | Start the sign-in flow for Augment. |
| Normal | `<leader>ao` | `:Augment signout` | Sign out from Augment. |
| Normal | `<leader>ae` | `:Augment enable` | Globally enable AI suggestions. |
| Normal | `<leader>ad` | `:Augment disable` | Globally disable AI suggestions. |
| Normal | `<leader>al` | `:Augment log` | Open the Augment log for errors and debugging. |
| Normal | `<leader>ac` | `:Augment chat` | Start a chat session to ask questions about your codebase. |
| Normal | `<leader>an` | `:Augment chat-new` | Begin a new chat conversation (clears previous context). |
| Normal | `<leader>at` | `:Augment chat-toggle` | Toggle the visibility of the chat panel. |
| Normal | `<leader>acp` | `:Augment chat Please review the current function for potential improvements.` | Send a code review prompt for the current function. |
| Normal | `<leader>acf` | `:Augment chat Suggest refactoring for this block of code.` | Request refactoring suggestions for the selected code block. |
| Visual | `<leader>ac` | `:Augment chat` | Send selected text to Augment chat for contextβspecific queries. |
| Visual | `<leader>aq` | `:Augment chat` | Alternative visual mapping to chat with the selected text. |
### User Command Aliases
| Alias | Executes Command | Description |
| -------------- | --------------------- | --------------------------------------- |
| `:AStatus` | `Augment status` | Display Augmentβs current status. |
| `:ASignin` | `Augment signin` | Launch the signβin process. |
| `:ASignout` | `Augment signout` | Sign out of Augment. |
| `:AEnable` | `Augment enable` | Enable AI suggestions globally. |
| `:ADisable` | `Augment disable` | Disable AI suggestions globally. |
| `:ALog` | `Augment log` | View Augmentβs log output. |
| `:AChat` | `Augment chat` | Open a chat session for code questions. |
| `:AChatNew` | `Augment chat-new` | Start a new chat conversation. |
| `:AChatToggle` | `Augment chat-toggle` | Toggle the chat panel display. |
### Workspace Configuration & Auto-Update
Optional since I've configured Augment to autodetect current working directory opened with **`$ nvim .`**.
| Feature | Behavior | Description |
| ------------------------ | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Workspace Folders | `vim.g.augment_workspace_folders` set via `get_workspace_folders()` | Defines which project directories are indexed by Augment. Uses the `ENTERPRISE_WORKSPACES` env variable (colon-separated) or defaults to the current directory. |
| Auto-Update on DirChange | `DirChanged` autocmd triggers `update_workspace()` | Automatically adds new workspace folders when you change directories in Neovim, ensuring up-to-date context. |
---
## π€ Github Copilot Integration
π Copilot for code completion.
| Mode | Key Mapping | Command/Action | Description |
| ------ | ------------- | ------------------------ | ---------------------------------- |
| Normal | `<leader>csi` | `:Copilot setup` | Authenticate and enable Copilot |
| Normal | `<leader>cd` | `:Copilot disable` | Disable Copilot inline suggestions |
| Normal | `<leader>ce` | `:Copilot enable` | Enable Copilot inline suggestions |
| Normal | `<leader>cso` | `:Copilot signout` | Sign out of GitHub Copilot |
| Normal | `<leader>cs` | `:Copilot status` | Check the Copilot status |
| Insert | `<leader>j ` | `copilot#Accept("<CR>")` | Accept the current suggestion |
| Insert | `<leader>cn` | `copilot#Next()` | Cycle to the next suggestion |
| Insert | `<leader>cp` | `copilot#Previous()` | Cycle to the previous suggestion |
Note: Either enable **Augment** or **Copilot**, not both at the same time!
---
## π **HTTP REST Client for Engineers**
I've integrated a high-performance, enterprise-grade HTTP REST client plugin for Neovim written entirely in Lua. This configuration is designed for large-scale web application microservices and large code basesβideal for software engineers at major tech companies or startups.
### Features
- **Dynamic Environment Integration:**
Automatically retrieves dynamic variables (such as service endpoints, auth tokens, and database URLs) from environment variables, shell commands (with caching), or input prompts.
- **Inline Configuration Overrides:**
Customize behavior on a per-request basis using inline `@cfg` directives in your HTTP files.
- **Rich Response Views:**
Display HTTP response details (body, headers, and additional HTTP info) with dedicated result pane settings.
- **Advanced Scripting:**
Execute inline Lua scripts as post-request hooks to process responses and set global variables.
- **Extensive Logging:**
Enterprise-grade debugging with verbose log levels for comprehensive troubleshooting.
- **Telescope Integration:**
Use Telescope to easily select and register dotenv files.
**Supported Neovim Versions:**
- Latest nightly
- 0.10.x
### Dependencies:
- `curl` (mandatory)
- `jq` (optional, recommended for JSON formatting)
- `nvim-telescope/telescope.nvim` (optional, for dotenv selection)
- `hrsh7th/nvim-cmp` (optional, for auto-completion)
### HTTP File Syntax Overview
When writing your HTTP request definitions (saved as `.http` or `.resty` files), you can leverage:
- **Variable Declarations:**
- Global: `@[variable]=value`
- Dynamic (environment, shell command, prompt):
- `@hostname = {{$HOSTNAME}}`
- `@hostname = {{> ./myscript.sh}}` (non-cached)
- `@hostname = {{>> ./myscript.sh}}` (cached)
- `@hostname = {{:prompt}}`
- **Configuration Variables:**
Override defaults with:
`@cfg.timeout = 2000`
`@cfg.check_json_body = true`
- **Request Definition:**
Specify HTTP method, URL (e.g., using dynamic `{{hostname}}`), headers, and body.
- **Inline Lua Scripting Hooks:**
Use `# @lang=lua` above Lua script blocks to process responses.
```http
# @lang=lua
> {%
local body = ctx.json_body()
if body.token then
ctx.set("login.token", body.token)
end
--%}
```
- **Favorites:**
Mark requests with delimiters (e.g., `### #my favorite`) to easily recall them via Telescope.
### **Commands & Key Mappings Table**
| **User / Alias** | **Command / Key Mapping** | **Description** |
| --------------------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| **Run Request** | `<leader>api` β `:Resty run` | Runs the HTTP request under the cursor or selected in visual mode. |
| **Open Result Pane** | `<leader>apo` β `:Resty open` | Opens the response/result pane in a new window. |
| **Run Last Request** | `<leader>apl` β `:Resty last` | Re-runs the last successfully executed request. |
| **Show Favorites** | `<leader>apf` β `:Resty favorite` | Displays a Telescope view listing all requests marked as favorites. |
| **Run Specific Favorite** | `<leader>apm` β `:Resty favorite my favorite` | Runs the favorite request named "my favorite", regardless of cursor location. |
| **Edit Logs File** | `<leader>aplgs` or `<leader>apil` β `:Resty logs` | Opens the log file to review detailed execution logs. |
| **Edit Cookies File** | `<leader>aprc` β `:Resty cookies` | Opens the cookies file used for session management. |
| **Show Environment File** | `<leader>apre` β `:Resty env show` | Displays the dotenv file currently registered with the active HTTP file. |
| **Select Environment File** | `<leader>aprs` β `:Resty env select` | Launches a Telescope view to select and register a dotenv file. |
| **Set Environment File** | `<leader>aprt` β `:Resty env set {path}` | Registers a specific dotenv file for the current HTTP file by appending the file path after the command. |
---
## Cool Pre-Configured Themes<a name="cool-themes"></a>
The themes are configured already but I've commented out rest. Feel free to explore these themes and uncomment the one that resonates with your taste!
Preconfigured themes:
#### **@ Github Themes** - Has flavors

#### **@ Catppuccin Theme** - Has flavors



#### **@ Rose Pine Theme** - Has flavors

#### **@ Jetbrains IDE Theme**

#### **@ MoonFly Theme**

#### **@ One Dark Theme** - Has flavors

#### **@ Nord Theme** - Has flavors

#### **@ Tokyo Night Theme** - Has flavors π



END:
May your coding journey with Neovim be nothing short of stellar! π
Peace! π
```
```