Giter VIP home page Giter VIP logo

chad-nvim's Introduction

The config is complete but still work in progress as I am new to lua and slowly learning vim stuffs. I'll keep adding new features like snippets etc and clean the config , make neovim (cli version) as functional as an IDE while being eyecandy. Pull requests are welcome.

Screenshots -



Very Useful lua plugins used in my config -

lspkind-nvim

This tiny plugin adds vscode-like pictograms to neovim built-in lsp completion items :


nvim-tree.lua

fast file tree :


telescope-nvim -

A fuzzy file finder, picker, sorter, previewer and much more:


indent-blankline.nvim -

adds indentline :

using indenLine plugin on left and blanklineNvim on right

galaxyline -

fastest statusline plugin I've used so far:


gitsigns.nvim -

Shows git signs of a repo on the signcolumn to indicate diffs/changes etc (needs plenary.nvim)


nvim-bufferline.lua -

As a top bufferline like thing which lets me handle tabs like switching, closing tabs.


nvim-web-devicons -

Lua fork of vim devicons which lets me change icons of filetypes


nvim-treesitter

Better syntax highlighting for programming languages ( my config just has html,css,js support for now ).

without / with Treesitter :

nvim-base16 -

contains a collection of all base16 themes for vim , plugin written in lua (comparison of base16-vim and nvim-base16):

nvim-base16 doesnt even take time to load unlike base16-vim which was eating half of the loadup time! ( the below screenshot was taken and tested on my old pentium laptop , so results might differ)


(neovim loads pretty fast on ssds)


Config structure

     nvim
      ├──init.lua
      └──lua
          └──foo
              └──lua.lua
  • The init.lua is used instead of init.vim.

  • The lua folder contains modules ( config files ) , in the example above "foo" folder could be considered as a module and it contains a lua.lua.

  • The lua.lua file is supposed to have any nvim config written in lua , its like splitting the overall config into small bits and make it more organized.

  • To load or source that "foo" module (like making it load with init.lua ) , you need to load it in init.lua like this : require('foo.lua').

Features

  • File navigation with Nvimtree
  • mouse works
  • managing tabs with bufferline
  • autosave
  • icons on nvimtree , telescope , bufferline/statusline and almost everywhere! with nvim-web-devicons
  • minimal status line ( galaxyline)
  • gitsigns (colored bars in my config)
  • using nvim-lsp
  • nvim-lspconfig for nvim-lps configuration
  • nvim-compe for autocompletion
  • lspkind to show pictograms on autocompletion items
  • telescope for file finding , picking , previewing (files and even images)
  • nvim-treesitter for syntax highlighting
  • nvim-autopairs , for autolosing braces and stuffs
  • neoformat for prettifying / formatting code
  • packer.nvim as package manager
  • indent-blankline.Nvim for indentlines
  • smooth scrolling

Guides to migrate your nvim configs to init.lua -

Clone my setup -

  • Install neovim-nightly , also use a nerdfont on your terminal.

  • Use these colors for your terminal , Its in xresources format so it'd would be easier to use a terminal that supports xresources like st , urxvt , xterm , My st build.

  • run the install.sh (this might work only on nix systems),this opens neovim (press enter or y to skip the errors , the errors will only show once).

  • Install ripgrep , fd , ueberzug for telescope media extension to work.

  • Manual installation , incase the install.sh doesnt work for you :

  • Install packer.nvim


git clone https://github.com/wbthomason/packer.nvim\
 ~/.local/share/nvim/site/pack/packer/start/packer.nvim
 
  • copy lua folder and init.lua into ~/.config/nvim
  • Open neovim and install all plugins , :PackerInstall (let treesitter install all its extensionsm
  • Install language servers and prettier ( for autocompletion etc and code formatting , nodejs should be installed too!) , this usually depends on the language support you want to add in your neovim config.
npm config set prefix=~/.node_modules 
npm install -g vscode-html-languageserver-bin typescript typescript-language-server  vscode-css-languageserver-bin prettier

(ADD ~/.node_modules at your PATH)

To setup any language server , follow this guide https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md and search up the needed LSP. For example if I needed clangd's lsp server :

I'd install it first and add its setup line : `` -- in /lua/nvim-lspconfig/lua.lua file

   require'lspconfig'.clangd.setup{}  ``

Default Mappings

space is the leader key.

  • Opening terminals!

  • Ctrl l Open terminal vertically over right

  • Ctrl x Open terminal horizontally below the current window

  • File tree (nvim-tree)

  • Ctrl n toggle neovim tree

  • Shift h show hidden files (use these keybinds when cursor's in the filetree, same for the keybinds below).

  • Ctrl + v open files in vertical split

  • Ctrl + x open files in horizontal split

  • Toggling stuffs

  • leader + n toggle line number

  • leader + z toggle truezen.nvim's Ataraxis mode

  • leader + m toggle truezen.nvim's minimalistic mode

  • Copy text

  • Ctrl a copies everything in the current file

  • select any text + y copies the selected text

  • Telescope

  • leader + f b open all buffers

  • leader + f f find files in the current DIR

  • leader + f o open recently edited files

  • leader + f f find files in the current DIR

  • leader + f h opens up a help page like thing

  • Ctrl + v open files in vertical split

  • Ctrl + x open files in horizontal split

  • Formatting code

  • leader + f m formats or beautifies the code in current window via neoformat (currently only html ,css , js can be formatted . To be able to use this keybind you need to install the formatter locally for your language , in my case prettier was required only so I installed it. check (this)[https://github.com/sbdchd/neoformat].

  • Neoscroll

  • <C-u>, <C-d>, <C-b>, <C-f>, <C-y> and <C-e> : Smooth scrolling for window movement commands.

  • Managing tabs with bufferline!

  • Shift l or s cycle through opened tabs

  • Shift d close current tab

  • Shift b open new tab

TODO

  • Add snippets support.
  • Make the statusline more elegant.
  • Add more themes.

Contact -

  • My linux / unix related ricing community: https://t.me/DE_WM (telegram)
  • Me: @siduck (telegram)

chad-nvim's People

Contributors

alok8bb avatar aserowy avatar jack0son avatar jaydamani avatar marvelman3284 avatar mtvare6 avatar rxditay avatar thehamkercat avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.