<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mainendra</title>
    <description>The latest articles on DEV Community by Mainendra (@mainendra).</description>
    <link>https://dev.to/mainendra</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F89065%2F933662ed-94c6-46e4-b63f-2edaa3ce6e9e.png</url>
      <title>DEV Community: Mainendra</title>
      <link>https://dev.to/mainendra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mainendra"/>
    <language>en</language>
    <item>
      <title>asdf (what?? 🤔)</title>
      <dc:creator>Mainendra</dc:creator>
      <pubDate>Sat, 13 Jul 2024 13:59:08 +0000</pubDate>
      <link>https://dev.to/mainendra/asdf-what--2p20</link>
      <guid>https://dev.to/mainendra/asdf-what--2p20</guid>
      <description>&lt;p&gt;&lt;a href="https://asdf-vm.com/" rel="noopener noreferrer"&gt;asdf&lt;/a&gt; - the multiple runtime version manager&lt;/p&gt;

&lt;h2&gt;
  
  
  Why asdf?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Simple to install and maintain.&lt;/li&gt;
&lt;li&gt;Easy to switch runtime (e.g. nodejs) version, just cd into directory&lt;/li&gt;
&lt;li&gt;one tool for most common runtime needed for development&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install asdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for details refer to - &lt;a href="https://asdf-vm.com/guide/getting-started.html" rel="noopener noreferrer"&gt;getting started&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Update path (for zsh shell)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" &amp;gt;&amp;gt; ${ZDOTDIR:-~}/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for other shells refer to - &lt;a href="https://asdf-vm.com/guide/getting-started.html#_3-install-asdf" rel="noopener noreferrer"&gt;getting started&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install plugin (nodejs)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;asdf plugin add nodejs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;other supported &lt;a href="https://github.com/asdf-vm/asdf-plugins" rel="noopener noreferrer"&gt;plugins&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install node latest version
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;asdf install nodejs latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;user version number instead of latest for any specific version&lt;/p&gt;

&lt;p&gt;e.g. &lt;code&gt;asdf install nodejs 20.12.0&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  To use any globally everywhere
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;asdf global nodejs latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  To use any folder specific local version
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd local_folder
asdf local nodejs 20.12.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  config file
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Global version versions config normally available under home folder (&lt;code&gt;~/.tool-versions&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Local version will be under specific local folder same file name &lt;code&gt;.tool-versions&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;config file format&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deno 1.44.4
nodejs 20.12.2
rust 1.79.0
yarn 1.22.22
pnpm 9.4.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for another other details refer to documentation on &lt;a href="https://asdf-vm.com/" rel="noopener noreferrer"&gt;asdf-vm.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Note
&lt;/h2&gt;

&lt;p&gt;Don't forget to run &lt;code&gt;asdf reshim&lt;/code&gt; after installing global packages (e.g. &lt;code&gt;npm install -g &amp;lt;tool_name&amp;gt;&lt;/code&gt;, &lt;code&gt;cargo install &amp;lt;tool_name&amp;gt;&lt;/code&gt;, etc)&lt;/p&gt;

&lt;p&gt;HAPPY CODING 🎉&lt;/p&gt;

</description>
      <category>asdf</category>
      <category>development</category>
      <category>node</category>
    </item>
    <item>
      <title>Dotfiles Backup using `chezmoi` (MacOS)</title>
      <dc:creator>Mainendra</dc:creator>
      <pubDate>Sat, 23 Jul 2022 23:27:45 +0000</pubDate>
      <link>https://dev.to/mainendra/dotfiles-backup-using-chezmoi-macos-2n3c</link>
      <guid>https://dev.to/mainendra/dotfiles-backup-using-chezmoi-macos-2n3c</guid>
      <description>&lt;h2&gt;
  
  
  Install &lt;code&gt;chezmoi&lt;/code&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Brew
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install chezmoi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Curl
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sh -c "$(curl -fsLS https://chezmoi.io/get)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Backup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;(First time) Create a new repo - &lt;code&gt;$ chezmoi init&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;(First time) Create a github (or gitlab, etc) - &lt;a href="https://docs.github.com/en/get-started/quickstart/create-a-repo"&gt;https://docs.github.com/en/get-started/quickstart/create-a-repo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add / Update dot files - &lt;code&gt;$ chezmoi add ~/.zshrc&lt;/code&gt;, &lt;code&gt;$chezmoi add ~/.config/neovim&lt;/code&gt;, etc&lt;/li&gt;
&lt;li&gt;CD into local repo - &lt;code&gt;$ chezmoi cd&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Commit your changes - &lt;code&gt;$ git commit -am "Initial commit"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;(First time) Add remote origin - &lt;code&gt;$ git remote add origin git@github.com:username/dotfiles.git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Push your changes to remote repo - &lt;code&gt;$ git push -u origin main&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Restore
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;(First time) Clone remote repo - &lt;code&gt;$ chezmoi init https://github.com/username/dotfiles.git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Pull and apply the latest changes - &lt;code&gt;$ chezmoi update -v&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reference: &lt;a href="https://www.chezmoi.io"&gt;https://www.chezmoi.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dotfile</category>
      <category>backup</category>
      <category>github</category>
    </item>
    <item>
      <title>Neovim Setup (MacOS)</title>
      <dc:creator>Mainendra</dc:creator>
      <pubDate>Sat, 23 Jul 2022 16:56:33 +0000</pubDate>
      <link>https://dev.to/mainendra/neovim-setup-macos-56ec</link>
      <guid>https://dev.to/mainendra/neovim-setup-macos-56ec</guid>
      <description>&lt;h2&gt;
  
  
  Install Neovim
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Using brew
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install neovim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Using curl
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -LO https://github.com/neovim/neovim/releases/download/nightly/nvim-macos.tar.gz tar xzf nvim-macos.tar.gz ./nvim-osx64/bin/nvim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create config files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;~/.config/neovim/init.lua&lt;/code&gt;&lt;br&gt;
&lt;code&gt;~/.config/neovim/lua/options.lua&lt;/code&gt;&lt;br&gt;
&lt;code&gt;~/.config/neovim/lua/config.lua&lt;/code&gt;&lt;br&gt;
&lt;code&gt;~/.config/neovim/lua/plugins.lua&lt;/code&gt;&lt;br&gt;
&lt;code&gt;~/.config/neovim/after/plugin/lspconfig.lua&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;init.lua
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require('options');
require('config');
require('plugins');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;options.lua
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-------------------- HELPERS ------------------------------

local scopes = {o = vim.o, b = vim.bo, w = vim.wo}

local function opt(scope, key, value)
  scopes[scope][key] = value
  if scope ~= 'o' then scopes['o'][key] = value end
end

-------------------- OPTIONS -------------------------------
local indent = 4
opt('b', 'expandtab', true)                           -- Use spaces instead of tabs
opt('b', 'shiftwidth', indent)                        -- Size of an indent
opt('b', 'smartindent', true)                         -- Insert indents automatically
opt('b', 'tabstop', indent)                           -- Number of spaces tabs count for
opt('o', 'completeopt', 'menuone,noinsert,noselect')  -- Completion options (for deoplete)
opt('o', 'hidden', true)                              -- Enable modified buffers in background
opt('o', 'ignorecase', true)                          -- Ignore case
opt('o', 'joinspaces', false)                         -- No double spaces with join after a dot
opt('o', 'scrolloff', 4 )                             -- Lines of context
opt('o', 'shiftround', true)                          -- Round indent
opt('o', 'sidescrolloff', 8 )                         -- Columns of context
opt('o', 'smartcase', true)                           -- Don't ignore case with capitals
opt('o', 'splitbelow', true)                          -- Put new windows below current
opt('o', 'splitright', true)                          -- Put new windows right of current
opt('o', 'termguicolors', true)                       -- True color support
opt('o', 'wildmode', 'list:longest')                  -- Command-line completion mode
opt('w', 'list', true)                                -- Show some invisible characters (tabs...)
opt('w', 'number', true)                              -- Print line number
opt('w', 'relativenumber', false)                     -- Relative line numbers
opt('w', 'wrap', false)                               -- Disable line wrap
opt('o', 'swapfile', false)                           -- Disable swapfile
opt('o', 'history', 1000)
opt('o', 'autoread', true)
opt('o', 'backup', false)
opt('o', 'writebackup', false)
opt('w', 'cursorline', true)
opt('o', 'pumheight', 10)
opt('o', 'fileencoding', 'utf-8')
opt('o', 'cmdheight', 2)
opt('o', 'mouse', 'a')
opt('o', 'updatetime', 50)
--opt('o', 'timeoutlen', 100)
opt('o', 'clipboard', 'unnamedplus')
opt('o', 'wildmenu', true)
opt('o', 'wildmode', 'full')
opt('o', 'lazyredraw', true)
opt('o', 'signcolumn', 'yes:1')
opt('o', 'background', 'dark')
opt('o', 'synmaxcol', 200)                           -- syntax file is slow,
opt('o', 'foldlevelstart', 99)                       -- no fold closed


----------------------- DISABLE BUILT-IN PLUGINS -------------------------

local disabled_built_ins = {
    "netrw",
    "netrwPlugin",
    "netrwSettings",
    "netrwFileHandlers",
    "gzip",
    "zip",
    "zipPlugin",
    "tar",
    "tarPlugin",
    "getscript",
    "getscriptPlugin",
    "vimball",
    "vimballPlugin",
    "2html_plugin",
    "logipat",
    "rrhelper",
    "spellfile_plugin",
    "matchit"
}

for _, plugin in pairs(disabled_built_ins) do
    vim.g["loaded_" .. plugin] = 1
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;config.lua
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-------------------- HELPERS ------------------------------

local cmd = vim.cmd  -- to execute Vim commands e.g. cmd('pwd')
local g = vim.g      -- a table to access global variables

local function map(mode, lhs, rhs, opts)
    local options = {noremap = true}
    if opts then options = vim.tbl_extend('force', options, opts) end
    vim.api.nvim_set_keymap(mode, lhs, rhs, options)
end

-------------------- CONFIG -------------------------------
g['mapleader'] = ' ' -- leader key
g['maplocalleader'] = ' ' -- leader key

g['node_host_prog'] = vim.call('system', 'which neovim-node-host | tr -d "\n"')

-- register
g['peekup_paste_before'] = '&amp;lt;leader&amp;gt;P'
g['peekup_paste_after'] = '&amp;lt;leader&amp;gt;p'

cmd [[au TextYankPost * silent! lua vim.highlight.on_yank {on_visual=false, timeout=200}]]

-- Remove trailing space
cmd [[autocmd InsertLeavePre * :%s/\s\+$//e]]

-------------------- MAPPINGS -------------------------------

map('n', '&amp;lt;Leader&amp;gt;sv', ':source $MYVIMRC&amp;lt;CR&amp;gt;')

map('n', '&amp;lt;Space&amp;gt;', '&amp;lt;Nop&amp;gt;', { noremap = true, silent = true })

-- &amp;lt;Tab&amp;gt; to navigate the completion menu
map('i', '&amp;lt;S-Tab&amp;gt;', 'pumvisible() ? "\\&amp;lt;C-p&amp;gt;" : "\\&amp;lt;Tab&amp;gt;"', {expr = true})
map('i', '&amp;lt;Tab&amp;gt;', 'pumvisible() ? "\\&amp;lt;C-n&amp;gt;" : "\\&amp;lt;Tab&amp;gt;"', {expr = true})

map('n', '\\', '&amp;lt;cmd&amp;gt;noh&amp;lt;CR&amp;gt;')    -- Clear highlights

map('n', '&amp;lt;Leader&amp;gt;j', ':j&amp;lt;CR&amp;gt;')
map('n', '&amp;lt;Leader&amp;gt;J', ':j!&amp;lt;CR&amp;gt;')

map('n', '&amp;lt;Leader&amp;gt;w', ':w&amp;lt;CR&amp;gt;')

-- keep visual selection after indenting
map('v', '&amp;gt;', '&amp;gt;gv');
map('v', '&amp;lt;', '&amp;lt;gv');

-- copy file path
map('n', '&amp;lt;Leader&amp;gt;cp', ':let @*=expand("%")&amp;lt;CR&amp;gt;')

map('n', '&amp;lt;S-u&amp;gt;', '&amp;lt;C-u&amp;gt;')
map('n', '&amp;lt;S-d&amp;gt;', '&amp;lt;C-d&amp;gt;')

map('n', 'qo', ':only&amp;lt;CR&amp;gt;')

map('', '&amp;lt;C-S-Left&amp;gt;', ':vertical resize -5&amp;lt;CR&amp;gt;')
map('', '&amp;lt;C-S-Right&amp;gt;', ':vertical resize +5&amp;lt;CR&amp;gt;')
map('', '&amp;lt;C-S-Up&amp;gt;', ':resize +5&amp;lt;CR&amp;gt;')
map('', '&amp;lt;C-S-Down&amp;gt;', ':resize -5&amp;lt;CR&amp;gt;')

-- switch window using hjkl
map('n', '&amp;lt;S-h&amp;gt;', '&amp;lt;C-w&amp;gt;h')
map('n', '&amp;lt;S-j&amp;gt;', '&amp;lt;C-w&amp;gt;j')
map('n', '&amp;lt;S-k&amp;gt;', '&amp;lt;C-w&amp;gt;k')
map('n', '&amp;lt;S-l&amp;gt;', '&amp;lt;C-w&amp;gt;l')

-- move selection using jk
map('v', '&amp;lt;S-j&amp;gt;', ':m\'&amp;gt;+&amp;lt;CR&amp;gt;gv=gv')
map('v', '&amp;lt;S-k&amp;gt;', ':m-2&amp;lt;CR&amp;gt;gv=gv')

-- escape visual selection
map('v', ';;', '&amp;lt;Esc&amp;gt;')

-- disable recording macros
map('n', 'q', '&amp;lt;Nop&amp;gt;')
map('n', 'Q', '&amp;lt;Nop&amp;gt;')

map('n', 'qq', ':q&amp;lt;CR&amp;gt;')
map('n', 'QQ', ':q!&amp;lt;CR&amp;gt;')

-- paste on selection
map('x', 'p', [["_dP]])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;plugins.lua
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-------------------- PLUGIN MANAGER ------------------------------

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

-------------------- PLUGINS ------------------------------

require('lazy').setup({    -- Packer can manage itself as an optional plugin
    -- lsp
    'neovim/nvim-lspconfig',
    'williamboman/mason.nvim',
    'williamboman/mason-lspconfig.nvim',

    -- utilities. autocomplete, surround, pair, etc ...
    {
        'echasnovski/mini.nvim',
        config = function()
            require('mini.align').setup()
            require('mini.comment').setup()
            require('mini.completion').setup()
            require('mini.fuzzy').setup()
            require('mini.jump').setup()
            require('mini.jump2d').setup()
            require('mini.misc').setup()
            require('mini.pairs').setup()
            require('mini.statusline').setup()
            require('mini.surround').setup()
            require('mini.trailspace').setup()
            require('mini.ai').setup()
        end
    },

    -- Useful status updates for LSP
    {
        'j-hui/fidget.nvim',
        config = true,
    },

    { -- Highlight, edit, and navigate code
        'nvim-treesitter/nvim-treesitter',
        build = function()
            pcall(require('nvim-treesitter.install').update { with_sync = true })
        end,
        config = function()
            require('nvim-treesitter.configs').setup({
                sync_install = false,
                auto_install = true,
                highlight = {
                    enable = true,
                    additional_vim_regex_highlighting = false,
                },
                indent = {
                    enable = true,
                },
                autotag = {
                    enable = true,
                }
            })

            -- folding with treesitter
            vim.opt.foldmethod = "expr"
            vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
        end
    },

    -- Git related plugins
    {
        'f-person/git-blame.nvim',
        cmd = 'GitBlameToggle',
        keys = { { '&amp;lt;Leader&amp;gt;gb', '&amp;lt;cmd&amp;gt;GitBlameToggle&amp;lt;CR&amp;gt;' } },
        config = function()
            vim.g['gitblame_date_format'] = '%r' -- relative date
            vim.g['gitblame_enabled'] = 0 -- default disabled
        end
    },

    -- theme
    {
        'ellisonleao/gruvbox.nvim',
        config = function()
            require('gruvbox').setup({
                contrast = 'hard',
                transparent_mode = true,
            })
            vim.cmd('colorscheme gruvbox')
        end,
    },

    -- Detect tabstop and shiftwidth automatically
    'tpope/vim-sleuth',

    -- Fuzzy Finder (files, lsp, etc)
    {
        'nvim-telescope/telescope.nvim',
        branch = '0.1.x',
        dependencies = { 'nvim-lua/plenary.nvim' },
        keys = {
            { '&amp;lt;Leader&amp;gt;fl', '&amp;lt;cmd&amp;gt;Telescope current_buffer_fuzzy_find theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;ff', '&amp;lt;cmd&amp;gt;Telescope find_files theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;fg', '&amp;lt;cmd&amp;gt;Telescope live_grep theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;fb', '&amp;lt;cmd&amp;gt;Telescope buffers theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;fh', '&amp;lt;cmd&amp;gt;Telescope help_tags theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;fv', '&amp;lt;cmd&amp;gt;Telescope git_files theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;fp', '&amp;lt;cmd&amp;gt;Telescope planets theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;fk', '&amp;lt;cmd&amp;gt;Telescope keymaps theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;fc', '&amp;lt;cmd&amp;gt;Telescope builtin theme=get_ivy layout_config={height=0.5}&amp;lt;CR&amp;gt;' },
        },
        config = {
            defaults = {
                mappings = {
                    i = {
                        ['&amp;lt;C-u&amp;gt;'] = false,
                        ['&amp;lt;C-d&amp;gt;'] = false,
                    },
                },
            },
        }
    },

    -- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available
    {
        'nvim-telescope/telescope-fzf-native.nvim',
        dependencies = { 'nvim-telescope/telescope.nvim' },
        build = 'make',
        cond = vim.fn.executable 'make' == 1,
        config = function()
            require('telescope').load_extension('fzf');
        end,
    },

    -- improve default vim ui. e.g. code actions
    {
        'stevearc/dressing.nvim',
        event = 'VeryLazy',
    },

    -- quick fix list
    {'kevinhwang91/nvim-bqf', ft = 'qf'},

    -- search and replace
    {
        'windwp/nvim-spectre',
        dependencies = {
            'nvim-lua/plenary.nvim'
        },
        keys = {
            { '&amp;lt;Leader&amp;gt;sr', '&amp;lt;cmd&amp;gt;lua require("spectre").open()&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;sw', '&amp;lt;cmd&amp;gt;lua require("spectre").open_visual({select_word=true})&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;sp', '&amp;lt;cmd&amp;gt;lua require("spectre").open_file_search()&amp;lt;CR&amp;gt;' },
        },
        config = true,
    },

    -- marks
    {
        'ThePrimeagen/harpoon',
        dependencies = { 'nvim-lua/plenary.nvim' },
        keys = {
            { '&amp;lt;Leader&amp;gt;ha', '&amp;lt;cmd&amp;gt;lua require("harpoon.mark").add_file()&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;ht', '&amp;lt;cmd&amp;gt;lua require("harpoon.ui").toggle_quick_menu()&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;hn', '&amp;lt;cmd&amp;gt;lua require("harpoon.ui").nav_next()&amp;lt;CR&amp;gt;' },
            { '&amp;lt;Leader&amp;gt;hp', '&amp;lt;cmd&amp;gt;lua require("harpoon.ui").nav_prev()&amp;lt;CR&amp;gt;' },
        }
    },

    -- file explorer
    {
        'nvim-tree/nvim-tree.lua',
        cmd = 'NvimTreeFindFileToggle',
        keys = { { '&amp;lt;Leader&amp;gt;e', '&amp;lt;cmd&amp;gt;NvimTreeFindFileToggle&amp;lt;CR&amp;gt;' } },
        dependencies = {
            'nvim-tree/nvim-web-devicons', -- optional, for file icons
        },
        tag = 'nightly', -- optional, updated every week. (see issue #1193)
        config = {
            respect_buf_cwd = true,
            sort_by = 'case_sensitive',
            view = {
                adaptive_size = true,
                mappings = {
                    list = {
                        { key = 'u', action = 'dir_up' },
                    },
                },
            },
            renderer = {
                group_empty = true,
            },
            filters = {
                dotfiles = true,
            },
        },
    },

    -- startup page
    {
        'mhinz/vim-startify',
        lazy = false,
        keys = { { '&amp;lt;Leader&amp;gt;S', '&amp;lt;cmd&amp;gt;Startify&amp;lt;CR&amp;gt;' } },
        config = function()
            vim.g['startify_lists'] = {{type = 'bookmarks', header = {'Bookmarks'}}}
            vim.g['startify_bookmarks'] = {
                { i = '~/.config/nvim/init.lua' },
                { p = '~/.config/nvim/lua/plugins.lua' },
                { c = '~/.config/nvim/lua/config.lua' },
                { o = '~/.config/nvim/lua/options.lua' },
                { s = '~/.config/nvim/after/plugin' },
                { z = '~/.zshrc' },
                { g = '~/.gitconfig' },
                { t = '~/.tmux.conf'},
            }
        end,
    },

    -- startup time
    {
        'dstein64/vim-startuptime',
        cmd = "StartupTime",
    },
    -- jk to escape
    {
        'max397574/better-escape.nvim',
        config = true,
    },
    -- case convert
    {
        'tpope/vim-abolish',
        event = 'VeryLazy',
    }
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;luaconfig.lua
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;local status_ok, mason, mason_lspconfig, lspconfig

status_ok, mason = pcall(require, 'mason')
if not status_ok then
  return
end

status_ok, mason_lspconfig = pcall(require, 'mason-lspconfig')
if not status_ok then
  return
end

status_ok, lspconfig = pcall(require, 'lspconfig')
if not status_ok then
  return
end

-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(_, bufnr)
  -- Enable completion triggered by &amp;lt;c-x&amp;gt;&amp;lt;c-o&amp;gt;
  vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')

  -- Mappings.
  -- See `:help vim.lsp.*` for documentation on any of the below functions
  local bufopts = { noremap=true, silent=true, buffer=bufnr }
  vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
  vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
  vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
  vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
  vim.keymap.set('n', '&amp;lt;C-k&amp;gt;', vim.lsp.buf.signature_help, bufopts)
  vim.keymap.set('n', '&amp;lt;Leader&amp;gt;wa', vim.lsp.buf.add_workspace_folder, bufopts)
  vim.keymap.set('n', '&amp;lt;Leader&amp;gt;wr', vim.lsp.buf.remove_workspace_folder, bufopts)
  vim.keymap.set('n', '&amp;lt;Leader&amp;gt;wl', function()
    print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
  end, bufopts)
  vim.keymap.set('n', '&amp;lt;Leader&amp;gt;D', vim.lsp.buf.type_definition, bufopts)
  vim.keymap.set('n', '&amp;lt;Leader&amp;gt;rn', vim.lsp.buf.rename, bufopts)
  vim.keymap.set('n', '&amp;lt;Leader&amp;gt;ca', vim.lsp.buf.code_action, bufopts)
  vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
  vim.keymap.set('n', '&amp;lt;Leader&amp;gt;f', function() vim.lsp.buf.format { async = true } end, bufopts)
end

mason.setup()
mason_lspconfig.setup({
  ensure_installed = { 'sumneko_lua' },
  automatic_installation = true
})
mason_lspconfig.setup_handlers({
  function (server_name)
    lspconfig[server_name].setup {
      on_attach = on_attach
    }
  end,
  ['sumneko_lua'] = function ()
    lspconfig.sumneko_lua.setup {
      settings = {
        Lua = {
          diagnostics = {
            globals = { 'vim' }
          }
        }
      }
    }
  end,
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install / Sync up
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open neovim&lt;/li&gt;
&lt;li&gt;Sync packages &lt;code&gt;:Lazy sync&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;To install language server just open any file and run &lt;code&gt;:LspInstall&lt;/code&gt; to install related server&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>neovim</category>
      <category>lua</category>
    </item>
    <item>
      <title>terminal UI for git 🤩</title>
      <dc:creator>Mainendra</dc:creator>
      <pubDate>Tue, 03 Nov 2020 21:42:39 +0000</pubDate>
      <link>https://dev.to/mainendra/terminal-ui-for-git-283p</link>
      <guid>https://dev.to/mainendra/terminal-ui-for-git-283p</guid>
      <description>&lt;h1&gt;
  
  
  lazygit ❤️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbv2lxjpo65q3vpt457pa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbv2lxjpo65q3vpt457pa.png" alt="lazygit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Similar to other UI tools.&lt;/li&gt;
&lt;li&gt;Easy to switch branch and commit changes.&lt;/li&gt;
&lt;li&gt;Supports VIM commands for navigation.&lt;/li&gt;
&lt;li&gt;Has mouse support if you need.&lt;/li&gt;
&lt;li&gt;Launch menu if you don't remember shortcuts 😀&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reference - &lt;a href="https://github.com/jesseduffield/lazygit" rel="noopener noreferrer"&gt;https://github.com/jesseduffield/lazygit&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  gitui
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs7yq6600dvo9uyuwvmls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs7yq6600dvo9uyuwvmls.png" alt="gitui"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast keyboard only controls.&lt;/li&gt;
&lt;li&gt;Context based help for hot keys.&lt;/li&gt;
&lt;li&gt;Async git API for fluid control.&lt;/li&gt;
&lt;li&gt;written in rust 🦀&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reference - &lt;a href="https://github.com/extrawurst/gitui" rel="noopener noreferrer"&gt;https://github.com/extrawurst/gitui&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  tig
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9riaaap84chdgc4ncxnt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9riaaap84chdgc4ncxnt.png" alt="tig"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F522jag5ykaf4vlqr8mp2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F522jag5ykaf4vlqr8mp2.png" alt="tig-help"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ncurses-based text-mode interface 🤔&lt;/li&gt;
&lt;li&gt;directly use sub-command from terminal 👍&lt;/li&gt;
&lt;li&gt;kind of similar to gitk 😬&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reference - &lt;a href="https://github.com/jonas/tig" rel="noopener noreferrer"&gt;https://github.com/jonas/tig&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>terminal</category>
    </item>
    <item>
      <title>How to use npm package without build tool?</title>
      <dc:creator>Mainendra</dc:creator>
      <pubDate>Sat, 31 Oct 2020 19:33:32 +0000</pubDate>
      <link>https://dev.to/mainendra/how-to-use-npm-package-without-build-tool-5dil</link>
      <guid>https://dev.to/mainendra/how-to-use-npm-package-without-build-tool-5dil</guid>
      <description>&lt;h1&gt;
  
  
  How to?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Search for npm package &lt;a href="https://skypack.dev"&gt;skypack.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Import script using skypack url in your html page
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;script type="module"&amp;gt;
        import { nanoid } from 'https://cdn.skypack.dev/nanoid';
        console.log('Random ID', nanoid());
    &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Refer to &lt;a href="https://github.com/mainendra/skypack-app/blob/main/index.html"&gt;index.html&lt;/a&gt; for sample page using nanoid.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Outuput (using sample index.html)
&lt;/h1&gt;

&lt;p&gt;Page hosted on &lt;a href="https://m-skypack.surge.sh/"&gt;surge.sh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eYDxs7cL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/mainendra/skypack-app/raw/main/output.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eYDxs7cL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/mainendra/skypack-app/raw/main/output.png" width="800" height="673"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>skypack</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>neovim as IDE</title>
      <dc:creator>Mainendra</dc:creator>
      <pubDate>Thu, 29 Oct 2020 03:01:42 +0000</pubDate>
      <link>https://dev.to/mainendra/neovim-as-ide-1cnp</link>
      <guid>https://dev.to/mainendra/neovim-as-ide-1cnp</guid>
      <description>&lt;h1&gt;
  
  
  Install &lt;a href="https://neovim.io"&gt;neovim&lt;/a&gt; (macos 😉)
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install neovim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Others: &lt;a href="https://github.com/neovim/neovim/wiki/Installing-Neovim"&gt;https://github.com/neovim/neovim/wiki/Installing-Neovim&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Install plugin manager (&lt;a href="https://github.com/junegunn/vim-plug"&gt;vim-plug&lt;/a&gt;)
&lt;/h1&gt;

&lt;p&gt;vim-plug is one of the simple plugin manager&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Useful (n)vim plugins
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;Plug 'gruvbox-community/gruvbox'&lt;/code&gt; - Awesome theme 😉&lt;br&gt;
&lt;code&gt;Plug 'junegunn/fzf', { 'do': { -&amp;gt; fzf#install() } }&lt;/code&gt; - Fuzzy finder, find almost anything&lt;br&gt;
&lt;code&gt;Plug 'junegunn/fzf.vim'&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Plug 'wincent/ferret'&lt;/code&gt; - Powerful multi-file search&lt;br&gt;
&lt;code&gt;Plug 'tpope/vim-commentary'&lt;/code&gt; - comment out lines&lt;br&gt;
&lt;code&gt;Plug 'tpope/vim-surround'&lt;/code&gt; - surroundings&lt;br&gt;
&lt;code&gt;Plug 'editorconfig/editorconfig-vim'&lt;/code&gt; - maintain consistent coding styles for multiple projects&lt;br&gt;
&lt;code&gt;Plug 'neoclide/coc.nvim', {'branch': 'release'}&lt;/code&gt; - Intellisense engine for neovim 🤩&lt;br&gt;
&lt;code&gt;Plug 'mattn/emmet-vim'&lt;/code&gt; - emmet for vim&lt;br&gt;
&lt;code&gt;Plug 'pechorin/any-jump.vim'&lt;/code&gt; - Jump to definition or references&lt;br&gt;
&lt;code&gt;Plug 'sheerun/vim-polyglot'&lt;/code&gt; - collection of language pack, you can install individual language pack as you need&lt;/p&gt;
&lt;h1&gt;
  
  
  Useful coc plugins
&lt;/h1&gt;

&lt;p&gt;Install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:CocInstall &amp;lt;package-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;coc-explorer&lt;/code&gt; - file explorer&lt;br&gt;
&lt;code&gt;coc-marketplace&lt;/code&gt; - coc plugins&lt;br&gt;
&lt;code&gt;coc-smartf&lt;/code&gt; - easily jump to any character&lt;br&gt;
&lt;code&gt;coc-prettier&lt;/code&gt; - formatter&lt;/p&gt;

&lt;h1&gt;
  
  
  Useful bash utilities
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/jesseduffield/lazygit"&gt;Lazygit&lt;/a&gt; - terminal ui for git commands&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jesseduffield/lazydocker"&gt;Lazydocker&lt;/a&gt; - terminal ui for docker&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dystroy.org/broot"&gt;broot&lt;/a&gt; - new way to navigate directory tree&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tmux/tmux/wiki"&gt;tmux&lt;/a&gt; - terminal multiplexer, &lt;a href="https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux"&gt;Easy Guide&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Useful terminals
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/alacritty/alacritty"&gt;Alacritty&lt;/a&gt; -  GPU-accelerated terminal emulator, &lt;code&gt;brew cask install alacritty&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.iterm2.com"&gt;iterm2&lt;/a&gt; - terminal emulator for macos&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>neovim</category>
      <category>vim</category>
      <category>vimplug</category>
    </item>
    <item>
      <title>Volta.sh</title>
      <dc:creator>Mainendra</dc:creator>
      <pubDate>Thu, 29 Oct 2020 00:27:36 +0000</pubDate>
      <link>https://dev.to/mainendra/volta-sh-4037</link>
      <guid>https://dev.to/mainendra/volta-sh-4037</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://volta.sh"&gt;Volta&lt;/a&gt; - node version manager on steroids
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl https://get.volta.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will install &lt;code&gt;volta&lt;/code&gt; library under &lt;code&gt;~/.volta&lt;/code&gt; directory and also update your &lt;code&gt;~/.bashrc&lt;/code&gt;, &lt;code&gt;~/.zshrc&lt;/code&gt; and &lt;code&gt;~/.config/fish&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Script will add &lt;code&gt;bin&lt;/code&gt; directory to path, something like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uninstallation
&lt;/h2&gt;

&lt;p&gt;You have to manually remove &lt;code&gt;volta&lt;/code&gt; references from your system.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove &lt;code&gt;volta&lt;/code&gt; from path from your bash or zsh config (&lt;code&gt;~/.bashrc&lt;/code&gt; and / or &lt;code&gt;~/.zshrc&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Removed &lt;code&gt;~/.volta&lt;/code&gt; folder. &lt;code&gt;rm -rf ~/.volta&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Volta Commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    fetch          Fetches a tool to the local machine
    install        Installs a tool in your toolchain
    uninstall      Uninstalls a tool from your toolchain
    pin            Pins your project's runtime or package manager
    list           Displays the current toolchain
    completions    Generates Volta completions
    which          Locates the actual binary that will be called by Volta
    setup          Enables Volta for the current user / shell
    help           Prints this message or the help of the given subcommand(s)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install node engines
&lt;/h3&gt;

&lt;p&gt;You have to install node using &lt;code&gt;volta install&lt;/code&gt; command. You can install as many node versions as you like.&lt;/p&gt;

&lt;p&gt;Install latest LTS release&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;volta install node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install specific version&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;volta install node@12
volta install node@12.2.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Package manager to install local dependencies (package.json)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;volta install npm
volta install yarn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Pinning Node engines for your project
&lt;/h4&gt;

&lt;p&gt;To use specific node or npm version for your project use &lt;code&gt;pin&lt;/code&gt; command. It will update your package.json file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;volta pin node@12.2.0
volta pin npm@6.14.8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;package.json&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
  "volta": {
    "node": "11.14.0",
    "npm": "6.14.8"
  }
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Global packages
&lt;/h3&gt;

&lt;p&gt;To install global packages (similar to &lt;code&gt;npm install -g&lt;/code&gt;) use &lt;code&gt;install&lt;/code&gt; or &lt;code&gt;fetch&lt;/code&gt; commands&lt;br&gt;
To uninstall global packages (similar to &lt;code&gt;npm uninstall -g&lt;/code&gt;) use &lt;code&gt;uninstall&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;e.g.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;volta install surge
volta fetch surge
volta uninstall surge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;install - install and set the default version of tool&lt;br&gt;
fetch - fetch tool locally without setting it as default&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;a href="https://neovim.io"&gt;neovim&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;You have to update node host in &lt;code&gt;init.vim&lt;/code&gt; for neovim&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let g:node_host_prog = system('volta which neovim-node-host | tr -d "\n"')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;For for information visit &lt;a href="https://docs.volta.sh/reference"&gt;volta.sh&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>node</category>
      <category>volta</category>
      <category>neovim</category>
      <category>npm</category>
    </item>
  </channel>
</rss>
