1.0.28 β€’ Published 4 months ago

colson-nvim v1.0.28

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

npm.io

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! πŸ”₯

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

Installation through NPM

Ensure Neovim (v >= 0.9.0) and Node are installed on your machine!

NOTE: Leader key for Neovim -> SPACE

$ 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:

$ 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:

Here's quick guide!!

$ sudo pacman -S base-devel cmake unzip
$ sudo pacman -S python-pynvim

Now, make sure you're synced with my latest configuration!

$ 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 πŸš€

DEMO Screenshot

✨ New Updated Zenful Look (COLSON NVIM)

@ Neovim on Arch Linux

πŸ’Ž NEW LOOK (Colson NVIM, December 5th, 2024)

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

colson nvim npm

New Modern Look, September 2024 πŸ’Ž

colsonn nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

Latest Fresh Look, July 2024 :)

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim


@ Neovim on macOS

2023/Early 2024 Look

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

πŸ”₯ Discord Presence for Neovim

colson nvim

❕ 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:

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:

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

Introduction

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)

nvim IDE colson

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

Installation

To embark on this Neovim journey, follow these steps:

  1. Clone this repository to your Neovim configuration directory:

    git clone https://github.com/colson0x1/colson-nvim ~/.config/nvim
  2. Install Packer.nvim for managing plugins:

    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:

Now, you're all set to unleash the power of this Neovim configuration!

colson nvim

Features

Global Key Bindings

Leader Key

  • <Space> serves as the leader key for most key bindings.

Netrw: File Explorer

colson nvim netrw

  • <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!

colson nvim nvimtree

Old Look

colson nvim nvimtree

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

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

colson nvim telescope

colson nvim telescope

colson nvim telescope

colson nvim telescope

  • <leader>pf: Find files in the current directory.

NOTE: <leader> is SPACE

TELESCOPE GREP Search

Search by keyword in files!

colson nvim telescope grep search

colson nvim telescope grep search

  • <leader>ps: Live grep files.

πŸ”₯ NEW UPDATES

Bufferline

colson nvim 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
    <nav>
      <ul>
        <li></li>
        <li></li>
      </ul>
    </nav>
  • `p+span<Ctrl+k>: Creates
    <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:
    sudo pacman -S <package-name>
  • On Debian-based distros:
    sudo apt install <package-name>
  • On Red Hat-based distros:
    sudo yum install <package-name>

For macOS:

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 CodeWhat it does
fceFunction Component Export
fcdeFunction Component Default Export
sfceSimple Function Component Export
sfcdeSimple Function Component Default Export
useSuseState
useEuseEffect
useEAuseEffect async
useCuseContext
useReduseReducer
useCBuseCallback
useMuseMemo
useRuseRef
useIuseImperativeHandle
useLuseLayoutEffect
useDVuseDebugValue
useTuseTransition

Class Components

Trigger CodeWhat it does
rceReact Class Component Export
rcepReact Class Export with Prop interface
rcepsReact Class Export with Props and State
rccReact Class Component
rconReact Class Constructor
sptStatic PropTypes
sdpStatic Default Props
sdptStatic Default Props Typed
cdmComponent Did Mount
cduComponent Did Update
cdcComponent Did Catch
cwumComponent Will Unmount

General Redux + Redux Toolkit

Trigger CodeWhat it does
useDSuseDispatch
useSLuseSelector
cscreateSlice
ecsexport createSlice
cprcreate prepare reducer
catcreateAsyncThunk

🎯 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 MappingAction
<leader>doOpen diff view
<leader>dcClose diff view
<leader>dfToggle file panel
<leader>dhFocus file panel
<leader>drRefresh files
<leader>dpPrevious file entry
<leader>dnNext file entry
<leader>dtSelect entry
<leader>dhOpen file history panel
<leader>dlClose file history panel

πŸ›°οΈ HTTP REST Client

Keymaps

ActionKey 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

POST http://localhost:3000/api/v1/users
Content-Type: application/json

{
 "name": "Colson",
 "currentYear": "2024",
 "age": "25"
}
  1. Place the cursor anywhere within the request.
  2. Press <leader>rr to send the request.
  3. 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:
    pip install pynvim
  • On Arch-based distros:
    sudo pacman -S python-pynvim
  • On Debian-based distros:
    sudo apt install python3-pynvim
  • On Red Hat-based distros:
    sudo yum install python-pynvim

requests Library:

  • Install with pip:
    pip install requests
  • On Arch-based distros:
    sudo pacman -S python-requests
  • On Debian-based distros:
    sudo apt install python3-requests
  • On Red Hat-based distros:
    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 MappingCommandAction
<leader>coGitConflictChooseOursChoose your changes (ours).
<leader>ctGitConflictChooseTheirsChoose incoming changes (theirs).
<leader>cbGitConflictChooseBothInclude both sides (both).
<leader>c0GitConflictChooseNoneDiscard both sides (none).
<leader>cnGitConflictNextConflictJump to the next conflict.
<leader>cpGitConflictPrevConflictJump to the previous conflict.
<leader>csGitConflictListQfList all conflicts in the quickfix window.

πŸ”­ Telescope πŸ”₯

Telescope Normal Mode Commands

KeymapModeDescription
<leader>pf or <leader>ffNormal ModeFind files in the project
<leader>ps or <leader>fgNormal ModeGREP Search: Search across all files
<leader>fbNormal ModeSwitch between buffers
<leader>fhNormal ModeOpen help tags
<leader>fsNormal ModeInteractive string search
<leader>fdNormal ModeView diagnostics for the workspace
<leader>fwNormal ModeSearch workspace symbols
<leader>frNormal ModeFind references to a symbol
<leader>fiNormal ModeLocate implementations
<leader>fcNormal ModeQuickly execute Neovim commands
<leader>ftNormal ModeExplore syntax tree using Treesitter
<leader>gsNormal ModeView Git status
<leader>gcNormal ModeBrowse Git commits
<leader>gbNormal ModeSwitch Git branches
<leader>gfNormal ModeLocate files tracked by Git

Telescope Insert Mode Commands

KeymapModeDescription
<C-n>Insert ModeMove to the next item
<C-p>Insert ModeMove to the previous item
<C-c>Insert ModeClose Telescope window
<CR>Insert ModeSelect default item
<C-x>Insert ModeSelect horizontally
<C-v>Insert ModeSelect 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!

ModeKey BindingCommand ExecutedDescription
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 statusShow Augment status (sign-in and workspace sync info).
Normal<leader>asi:Augment signinStart the sign-in flow for Augment.
Normal<leader>ao:Augment signoutSign out from Augment.
Normal<leader>ae:Augment enableGlobally enable AI suggestions.
Normal<leader>ad:Augment disableGlobally disable AI suggestions.
Normal<leader>al:Augment logOpen the Augment log for errors and debugging.
Normal<leader>ac:Augment chatStart a chat session to ask questions about your codebase.
Normal<leader>an:Augment chat-newBegin a new chat conversation (clears previous context).
Normal<leader>at:Augment chat-toggleToggle 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 chatSend selected text to Augment chat for context‑specific queries.
Visual<leader>aq:Augment chatAlternative visual mapping to chat with the selected text.

User Command Aliases

AliasExecutes CommandDescription
:AStatusAugment statusDisplay Augment’s current status.
:ASigninAugment signinLaunch the sign‑in process.
:ASignoutAugment signoutSign out of Augment.
:AEnableAugment enableEnable AI suggestions globally.
:ADisableAugment disableDisable AI suggestions globally.
:ALogAugment logView Augment’s log output.
:AChatAugment chatOpen a chat session for code questions.
:AChatNewAugment chat-newStart a new chat conversation.
:AChatToggleAugment chat-toggleToggle the chat panel display.

Workspace Configuration & Auto-Update

Optional since I've configured Augment to autodetect current working directory opened with $ nvim ..

FeatureBehaviorDescription
Workspace Foldersvim.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 DirChangeDirChanged 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.

ModeKey MappingCommand/ActionDescription
Normal<leader>csi:Copilot setupAuthenticate and enable Copilot
Normal<leader>cd:Copilot disableDisable Copilot inline suggestions
Normal<leader>ce:Copilot enableEnable Copilot inline suggestions
Normal<leader>cso:Copilot signoutSign out of GitHub Copilot
Normal<leader>cs:Copilot statusCheck the Copilot status
Insert<leader>jcopilot#Accept("<CR>")Accept the current suggestion
Insert<leader>cncopilot#Next()Cycle to the next suggestion
Insert<leader>cpcopilot#Previous()Cycle to the previous suggestion

Note: Either enable Augment or Copilot, not both at the same time!


Cool Pre-Configured Themes

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

@ Jetbrains IDE Theme

@ Tokyo Night Theme - Has flavors

@ Catppuccin Theme - Has flavors

@ Rose Pine Theme - Has flavors

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

colson nvim

END: May your coding journey with Neovim be nothing short of stellar! πŸš€

Peace! πŸ•Š