/dotfiles

Configuration files for bash, git, tmux, nvim and more.

Primary LanguageLuaMIT LicenseMIT

Dotfiles

This is a collection of my configuration files.

Initially, I tried having a config that can be used for both Vim and NeoVim but with the release of NeoVim 0.5, which added Lua support and a native LSP client, I decided to drop the old Vim compatibility and create a NeoVim config based on Lua. Wherever possible, I tried to use as many Lua plugins as possible over VimScript ones, because those either try to support old versions of Vim or potentially not use newer features.

Installation

git clone https://github.com/jungomi/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
make

make creates symbolic links of every directory in the .config/ directory to ~/.config/. If the target of the linking already exists, it is overwritten. make safe provides a safer version, which creates a backup of all existing targets, that can then be restored with make restore.

$ make [targets]

  targets:
        default          # Installs all dotfiles and configures bash
        safe             # Runs backup before installing
        envs             # Installs all environments
        link             # Creates symbolic links
        backup           # Makes a backup of the existing dotfiles
        restore          # Restores the backup files
        clean            # Removes the backup files
        bash             # Configures Bash
        node             # Installs n and Node.js
        ruby             # Installs rvm and Ruby
        rust             # Installs rustup and Rust
        macos            # Configures MacOS
        help             # Shows this help message

Patched Font

A font patched with Nerd Fonts is required to display icons properly.

On Linux the patched version of JetBrains Mono is used, and on macOS a patched version of SF Mono.

Integrated Tools

The following tools are either frequently used at the command line or integrated into NeoVim for a better and more efficient workflow:

  • Fzf - Fuzzy finder (used a lot for fuzzy file navigation in NeoVim)
  • ripgrep (rg) - Faster and more intuitive grep, which respects .gitignore
  • fd - Faster and more intuitive find, which also respects .gitignore
  • bat - A cat(1) clone with syntax highlighting and Git integration.
  • delta - Viewer for (git) diffs with syntax highlighting and side-by-side views

Screenshots

Shell + Tmux + Git

The git diff is displayed using Delta

Tmux icons:

  • 🔎 = A pane is maximized (zoomed) in that window.
  • 🔗 = Panes are synchronised, i.e. all are focused and receive the same inputs.

Shell + Tmux + Git

NeoVim

Language Server Protocol (LSP)

Language Server Protocol (LSP) integration for diagnostics and other language actions, such as formatting, signature help, type hints etc.

150% font size for better visibility in the screenshot

NeoVim LSP

Completion

Completion with suggestions from Language Server Protocol (LSP), open buffers, file paths and more, including support for snippets.

150% font size for better visibility in the screenshot

NeoVim Completion

Debug Adapter Protocol (DAP)

Debugger using the Debug Adapter Protocol (DAP).

150% font size for better visibility in the screenshot

NeoVim DAP