Its been over two years since I switched over to Nvim. Do I miss Emacs. I don’t think so.
I was not religious about emacs or vim. I always knew them as great editors. A must have
tool for a software engineer. After using emacs for over 14 plus years, I dont think I miss
emacs at all. May be Vim does a pretty good job of replacing all the features I’d using in emacs
which is not alot. I used org-mode for organisation. Various major mode for the myriad of languages
I was using, namely C, Python, Javascript. LSP was non existing or at its infancy at the time, so
yasnippets on emacs for completion and magit for git integration. All those have been replaced by
a great list of plugins in Nvim. And I really enjoy having to work in the terminal.
Here are the short list of plugins I use on a daily basis.
| Plugin | 
|---|
| packer - Plugin Manager | 
| telescope - Finding files | 
| netrtw - File browsing | 
| onedark - Darkmode theme | 
| treesitter - Parsing code and code highlight | 
| undotree - Undo tree | 
| lspzero - zero config language server. This plug in avoids the complecated setup of LSP | 
| autopairs - Must have clever completion of quotes, parenthesis and curly brackets etc | 
| Lualine - Gives a cool status bar | 
| gitsins - Must have tool for git operations. | 
| vim-fugitive - Git operations | 
| vim-commentary - Git commits | 
| ripgrep - Extreamly fast grepping | 
| null-ls - I use this mainly for typescript / javascript linting | 
Well that is in a nutshell. Below is the detail packer file.
-- Only required if you have packer configured as `opt`
vim.cmd [[packadd packer.nvim]]
return require('packer').startup(function(use)
  -- Packer can manage itself
  use('wbthomason/packer.nvim')
  -- Telescope for navigation
  use({
    'nvim-telescope/telescope.nvim', tag = '0.1.0',
    -- or                            , branch = '0.1.x',
    requires = { { 'nvim-lua/plenary.nvim' } }
  })
  use({ "nvim-telescope/telescope-file-browser.nvim" })
  -- Using Packer
  use('navarasu/onedark.nvim')
  -- Tree sitter
  use('nvim-treesitter/nvim-treesitter', { run = ':TSUpdate' })
  use 'nvim-treesitter/nvim-treesitter-context'
  use('mbbill/undotree')
  use('tpope/vim-fugitive')
  use('tpope/vim-commentary')
  use {
    'VonHeikemen/lsp-zero.nvim',
    requires = {
      -- LSP Support
      { 'neovim/nvim-lspconfig' },
      { 'williamboman/mason.nvim' },
      { 'williamboman/mason-lspconfig.nvim' },
      -- Autocompletion
      { 'hrsh7th/nvim-cmp' },
      { 'hrsh7th/cmp-buffer' },
      { 'hrsh7th/cmp-path' },
      { 'saadparwaiz1/cmp_luasnip' },
      { 'hrsh7th/cmp-nvim-lsp' },
      { 'hrsh7th/cmp-nvim-lua' },
      -- Snippets
      { 'L3MON4D3/LuaSnip' },
      { 'rafamadriz/friendly-snippets' },
    }
  }
  use {
    "windwp/nvim-autopairs",
    config = function() require("nvim-autopairs").setup {} end
  }
  use('nvim-lualine/lualine.nvim')
  use ('lewis6991/gitsigns.nvim')
  use('jremmen/vim-ripgrep')
  use('jose-elias-alvarez/null-ls.nvim')
  -- install without yarn or npm
  use({
      "iamcco/markdown-preview.nvim",
      run = function() vim.fn["mkdp#util#install"]() end,
  })
end)