Skip to content

Latest commit

 

History

History
120 lines (86 loc) · 4.4 KB

README.md

File metadata and controls

120 lines (86 loc) · 4.4 KB

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
        cargo-subcommands        Subcommands for cargo that are provided as crates
        bob                      Installs bob and nvim
        macos                    Configures MacOS
        tools                    Various command line tools (atuin, delta, rg, uv, z)
        atuin                    Atuin for fuzzy finding shell completion
        zoxide                   z, a smart cd
        completions              Generate the shell completions for many installed tools
        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