Skip to content

Dotfile repository for Linux configuration files including Neovim, bashrc, and tmux

Notifications You must be signed in to change notification settings

hgreenstein/.dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

.dotfiles

Description:

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

Neovim Config Example Image:

Neovim Image

Bashrc Config Example Image:

.bashrc image

Installation:

  1. 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
  1. 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 

Neovim Installation Part 2: System dependencies

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:

  1. Python
  2. Node & npm
  3. C-compiler like GCC in path
  4. Java dev tools for java lsp servers
  5. Curl, Tar, Git, Gzip, Unzip, ripgrep, lazygit
  6. 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

Additional Information and Credit

Bash

Bash utilizes multiple aliases that may be useful for those that have the appropriate packages installed

Example

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

Inputrc

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

Bash Credit:

  1. My bash uses Oh My Posh for it's custom prompt, please refer to the original github for more
  2. The pixel art that appears randomly on every bash prompt is Shell Color Scripts by Derek Taylor
  3. Additionally, credit to many useful terminal utility commands like exa

Tmux

  • Rebinds prefix to Ctrl-S

  • Adds vim keybindings for navigation and visual mode

  • Adds plugin support via TPM

Tmux plugins

  • 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

Neovim Credits:

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 or gcc 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)

Releases

No releases published

Packages

No packages published