This repository contains links to multiple different configurations that live across my WSL and Linux Mint Environments.
This folder repository is intented to live in either the home directory or .config directory and the invidual directorys
and .config files are symbolically linked with the ln -s
bash command to the appropriate directory, example ~/.bashrc
- First clone the repository into appropriate directory
By default files like the bashrc will look for other resources like the terminal prompt theme in the home directory
git clone https://github.com/hgreenstein/.dotfiles.git ~/.dotfiles
- Create Symbolic links to the appropriate directories
A. .bashrc and .inputrc
ln -s ~/.dotfiles/bash/.bashrc ~/.bashrc
ln -s ~/.dotfiles/bash/.inputrc ~/.inputrc
B. Neovim (Assuming neovim is already installed and looking for the neovim folder in ~/.config/nvim
ln -s ~/.dotfiles/nvim ~/.config/nvim
Doing the above installation steps will successfully install all the plugins in Neovim but many errors will still likely occur upon startup of Neovim This is due to package dependencies in many plugins, for example Telescope (cited below) requires ripgrep for the grep functionality to work properly. Additionally, many standard programming libraries and environments must be installed including but not limited to:
- Python
- Node & npm
- C-compiler like GCC in path
- Java dev tools for java lsp servers
- Curl, Tar, Git, Gzip, Unzip, ripgrep, lazygit
- A "Nerd Font" of choice installed, a great resource is nerdfonts.com a. If you don't have a preferred font, I suggest JetBrains Mono Nerd Font, it's designed for easy code readability!
I hope to add a comprehensive installation script for all common linux operating systems in the future, but for now please refer to the linked documentation of each plugin you plan to use to ensure all system dependencies are installed. If you have been using your linux system for development for a long period of time, many of these may already be installed but if not, refer to the official documentation to install these tools
Bash utilizes multiple aliases that may be useful for those that have the appropriate packages installed
Alias: ls -> eza -alFh
for a prettier, long formatted and human readable ls command
If you do not have eza installed on your system, it can be easily installed with a linux package manager: Example for those with a Cargo Rust environment already setup:
cargo install eza
Learn more about eza on the official GitHub page
For the colorscript pixel art randomly at each run of the bashrc, see the documentation of Shell Color Scripts by Derek Taylor
The .inputrc makes basic modifications like changing the default emacs keybindings to vi keybindings to fit with my neovim workflow. Additionally, it prepends a 'i' or 'n' to the prompt for insert and normal mode to easily keep track of vi mode while using the terminal
- My bash uses Oh My Posh for it's custom prompt, please refer to the original github for more
- The pixel art that appears randomly on every bash prompt is Shell Color Scripts by Derek Taylor
- Additionally, credit to many useful terminal utility commands like exa
-
Rebinds prefix to Ctrl-S
-
Adds vim keybindings for navigation and visual mode
-
Adds plugin support via TPM
- Easily switch between Neovim and Tmux panes with ctrl + hjkl on both!
- Dual support comes via the vim-tmux-navigator plugin
- Must be installed on both Neovim and Tmux
- Informative and easy to read, red and black status bar
- Provided by the tmux-power plugin
Neovim configuration utilizes the Lazy.Nvim Package Manager Additionally, a variety of Neovim Plugins are used to extend the default Functionality Including:
- Nvim Telescope For Grep Functionality
- Plenary Telescope Dependency
- Vscode.Nvim For Color Scheme mimicking VSCode dark+
- Nvim Treesitter For Syntax highlighting, function jumping and more
- Treesitter Playground - Ability to parse syntax tree using treesitter
- Harpoon - ThePrimeagen For each file switching with leader + # of file
- Undo Tree For a google drive like local edit history to easily revert to a previous state between github commits
- Lsp-Zero For an LSP manager plugin
- Mason & Mason Lspconfig For lsp server installation and management
- Nvim-cmp and cmp-nvim-lsp For LSP completion related Capabilities
- LuaSnip for snippets
- Autopairs for auto closing {}, (), [], + more
- Vim Be Good for fun vim games to help with quick actions
- Nvim Tree Adds tree like file structure in a buffer, far superior to :Explorer
- Nvim Web Devicons Adds icon support
- Null Ls Nvim Additional LSP functionality
- Prettier Nvim Prettier Linter formatting for HTML/JS/React(JSX/TSX)/CSS/ + more
- Vim Rainbow Corresponding rainbow colored brackets for easy scope identification
- Vim Vsnip & Vim Vsnip Integ Additional Snippets
- Lualine Nvim Adds nice status bar below focused buffer including mode, file name, line % and more
- Obsidian Nvim Adds Markdown support to Neovim for editting an Obsidian vault
- Nvim Surround Ability to quickly surround text in "", '', {}, (), func(), , and more using motions like
ys+motion+[surround_char]
ex:ysiw"
surrounds word with quotes - Nvim Comment Quickly comment out lines in any language with
gc+motion
orgcc
for line - Glow Nvim Preview formatted markdown documents in neovim utilizing the glow package
- Vim Fugative Graphical Git management, staging, merging, commiting, pushing and more
- vim-tmux-navigator Easily switch between Neovim and Tmux panes with ctrl + hjkl on both!
- Lazygit.nvim Bring a floating lazygit terminal panel into your neovim if lazygit is already installed
- Rust Tools Adds tools for developing in the rust language such as in buffer running of code
- LSP Inlay Hints Adds in line hints from the language server (ex: adds type hints for rust variables and functions when types are only implicitly defined)