This repository contains my personal configuration files (dotfiles) for various tools and applications, with a focus on a modern Neovim setup optimized for web development.
- Overview
- Features
- Structure
- Installation
- Neovim Configuration
- Customization
- Updating
- Troubleshooting
- License
This dotfiles repository uses symbolic links to maintain configuration files in a centralized Git repository while keeping them properly linked in their expected locations. This makes it easy to:
- Track changes to configuration files
- Synchronize settings across multiple machines
- Quickly set up a new development environment
- Share configurations with others
- 🚀 Modern Neovim Config: Complete IDE-like experience with LSP, autocompletion, and debugging
- 🔧 Web Development Focus: Optimized for JavaScript, TypeScript, React, and other web technologies
- 🎨 Beautiful UI: Clean themes and statusline with meaningful visual indicators
- 💻 Cross-Platform: Works on macOS, Linux, and WSL
- 📦 Easy Installation: Scripts to automate setup and dependencies
- 📚 Well-Documented: Detailed explanations of configurations and keybindings
dotfiles/
├── install.sh # Main installation script
├── README.md # This readme file
├── nvim/ # Neovim configuration
│ ├── init.lua # Main entry point
│ └── lua/ # Lua modules
│ ├── config/ # Core configuration
│ └── plugins/ # Plugin-specific configurations
├── bash/ # Bash configuration
├── zsh/ # Zsh configuration
├── git/ # Git configuration
└── bin/ # Utility scripts
- Git
- Neovim >= 0.9.0 (0.10.0+ recommended)
- Node.js and npm (for LSP support)
- A patched Nerd Font (for icons)
- ripgrep (for telescope search)
- fd (for telescope file finding)
- Clone this repository:
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles- Run the installation script:
cd ~/dotfiles
./install.shIf you prefer to set up parts of the configuration manually:
- Clone this repository:
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles- Create necessary directories:
mkdir -p ~/.config- Set up symbolic links:
# Neovim configuration
ln -sf ~/dotfiles/nvim ~/.config/nvim
# Add other configurations as needed
# ln -sf ~/dotfiles/bash/.bashrc ~/.bashrc
# ln -sf ~/dotfiles/zsh/.zshrc ~/.zshrc
# ln -sf ~/dotfiles/git/.gitconfig ~/.gitconfigMy Neovim configuration is built for modern web development, with a focus on JavaScript/TypeScript ecosystems.
- 🔍 LSP integration for intelligent code navigation and autocompletion
- 🌳 Treesitter for advanced syntax highlighting and code understanding
- 🔎 Fuzzy finding with Telescope for files, text, and more
- 📦 Git integration with signs, blame, and diff view
- 🧩 Autocompletion with nvim-cmp and snippets
- 🎨 Beautiful UI with statusline, bufferline, and file explorer
- 🐞 Debugging support for JavaScript/TypeScript
- ⚡ Fast startup with lazy loading of plugins
Some of the key plugins included:
- lazy.nvim - Plugin manager
- nvim-lspconfig - LSP configuration
- nvim-cmp - Completion engine
- nvim-treesitter - Syntax highlighting
- telescope.nvim - Fuzzy finder
- null-ls.nvim - Linting/formatting
- lualine.nvim - Statusline
- neo-tree.nvim - File explorer
- gitsigns.nvim - Git integration
- nvim-dap - Debugging
See Neovim Cheat Sheet for detailed keybindings.
This configuration uses Space as the leader key. Here are some key mappings:
General
<Space>ff- Find files<Space>fg- Live grep<Space>e- Toggle file explorer<Space>h- Clear search highlighting
LSP
gd- Go to definitiongr- Find referencesK- Show documentation<Space>ca- Code actions<Space>rn- Rename symbol
Git
<Space>gs- Stage hunk<Space>gr- Reset hunk<Space>gb- Toggle blame<Space>gd- Diff view
For a complete list of keybindings, see the Neovim Cheat Sheet.
To customize this setup:
- Fork this repository
- Make changes to the configuration files
- Update your local repository with
git pull - Run
./install.shto apply changes
- Add or modify plugins in
nvim/lua/plugins/*.lua - Change keybindings in
nvim/lua/config/keymaps.lua - Adjust options in
nvim/lua/config/options.lua
To update your dotfiles:
cd ~/dotfiles
git pull
./install.shFor Neovim plugins:
- Open Neovim
- Run
:Lazy update
Neovim plugin installation fails
- Ensure you have the right version of Neovim installed
- Check that all dependencies are installed
Missing icons or broken UI
- Make sure you have a Nerd Font installed and configured in your terminal
LSP not working
- Verify that the language servers are installed
- Run
:LspInfoto check the status of language servers
If you encounter any issues, please open an issue on GitHub.
This project is licensed under the MIT License - see the LICENSE file for details.
If you find these dotfiles useful, consider giving this repository a star on GitHub! ⭐
