This repository contains my personal dotfiles for a fully keyboard-driven development workflow, featuring a Neovim IDE setup built from scratch in Lua, a tmux configuration for multiplexed terminal sessions, and a Zsh shell setup.
dotfiles/
βββ .config/
β βββ nvim/ # Neovim config (Lua, LunarVim/Neovim-from-scratch base)
β βββ lua/user/
β βββ options.lua
β βββ keymaps.lua
β βββ plugins.lua
β βββ colorscheme.lua
β βββ cmp.lua
β βββ lsp/
β βββ telescope.lua
β βββ treesitter.lua
β βββ autopairs.lua
β βββ comment.lua
β βββ gitsigns.lua
β βββ nvim-tree.lua
β βββ bufferline.lua
β βββ lualine.lua
β βββ toggleterm.lua
β βββ alpha.lua
β βββ whichkey.lua
βββ .tmux.conf # tmux configuration
βββ .zshrc # Zsh shell configuration
Built on top of nvim-lua/kickstart.nvim β a fully Lua-based Neovim config designed to be readable and educational.
rustc
cargo
ripgrep
grep
gcc
bun
nodejs (v20 or above)
nvm
fzf
unzip
luarocks
Plugin
Description
wbthomason/packer.nvim
Plugin manager β manages itself
nvim-lua/plenary.nvim
Lua utility library, required by many plugins
windwp/nvim-autopairs
Auto-close brackets, parens, quotes; integrates with cmp & treesitter
numToStr/Comment.nvim
Smart code commenting (gcc, gbc)
JoosepAlviste/nvim-ts-context-commentstring
Treesitter-aware comment strings
kyazdani42/nvim-web-devicons
File type icons for the UI
kyazdani42/nvim-tree.lua
File explorer tree
akinsho/bufferline.nvim
Buffer tabs at the top
nvim-lualine/lualine.nvim
Blazing fast status line in Lua
akinsho/toggleterm.nvim
Integrated floating/split terminal
ahmedkhalf/project.nvim
Project root detection and management
lewis6991/impatient.nvim
Speed up Lua module loading
lukas-reineke/indent-blankline.nvim
Indentation guides
goolord/alpha-nvim
Customizable start screen / dashboard
folke/which-key.nvim
Popup showing available keybindings
Colorschemes
catppuccin/nvim
Cattppuccin colorscheme collection
Completion (cmp)
hrsh7th/nvim-cmp
Completion engine
hrsh7th/cmp-buffer
Completions from current buffer
hrsh7th/cmp-path
Filesystem path completions
hrsh7th/cmp-cmdline
Command-line completions
saadparwaiz1/cmp_luasnip
Snippet completions
hrsh7th/cmp-nvim-lsp
LSP-based completions
hrsh7th/cmp-nvim-lua
Neovim Lua API completions
Snippets
L3MON4D3/LuaSnip
Snippet engine written in Lua
rafamadriz/friendly-snippets
Community snippet collection
LSP
neovim/nvim-lspconfig
Quickstart configs for built-in LSP client
williamboman/mason.nvim
Portable LSP/linter/formatter installer
williamboman/mason-lspconfig.nvim
Bridge between Mason and lspconfig
RRethy/vim-illuminate
Highlight other uses of the word under cursor
Telescope
nvim-telescope/telescope.nvim
Fuzzy finder over everything
nvim-telescope/telescope-media-files.nvim
Preview media files in Telescope
Treesitter
nvim-treesitter/nvim-treesitter
Advanced syntax highlighting & code parsing
JoosepAlviste/nvim-ts-context-commentstring
Context-aware comment strings
Git
lewis6991/gitsigns.nvim
Git blame, hunks, diff signs in the gutter
Leader key: <Space>
Keybinding
Mode
Action
Ctrl-h
Normal
Move to left window
Ctrl-j
Normal
Move to window below
Ctrl-k
Normal
Move to window above
Ctrl-l
Normal
Move to right window
Keybinding
Mode
Action
Shift-l
Normal
Go to next buffer
Shift-h
Normal
Go to previous buffer
Keybinding
Mode
Action
Alt-j
Normal
Move current line down
Alt-k
Normal
Move current line up
jk
Insert
Exit insert mode
kj
Insert
Exit insert mode
Keybinding
Mode
Action
<
Visual
Dedent and keep selection
>
Visual
Indent and keep selection
Alt-j
Visual
Move selection down
Alt-k
Visual
Move selection up
p
Visual
Paste without overwriting register
Keybinding
Mode
Action
J
Visual Block
Move block down
K
Visual Block
Move block up
Alt-j
Visual Block
Move block down
Alt-k
Visual Block
Move block up
Prefix key changed from the default Ctrl-b to Ctrl-t for ergonomics.
Plugin
Description
tmux-plugins/tpm
Tmux Plugin Manager
niksingh710/minimal-tmux-status
Minimal, clean status bar
tmux-plugins/tmux-sensible
Sensible tmux defaults everyone can agree on
Prefix: Ctrl-t
Keybinding
Action
Alt-c
Create new window (inherits current path)
Alt-n
Go to next window
Alt-p
Go to previous window
Alt-w
Kill current window
Alt-e
Rename current window
Keybinding
Action
Alt-Ctrl-l
Split pane vertically (right, same path)
Alt-Ctrl-k
Split pane horizontally (below, same path)
Alt-m
Toggle pane zoom (fullscreen)
Keybinding
Action
Alt-h
Move to left pane
Alt-j
Move to pane below
Alt-k
Move to pane above
Alt-l
Move to right pane
ποΈ Session Management
Keybinding
Action
Alt-s
Show session/window tree chooser
Alt-d
Detach from current session
Alt-N
Switch to next session
Alt-P
Switch to previous session
Setting
Value
Mouse support
Enabled
History limit
5000 lines
Window numbering
Starts at 1
Pane numbering
Starts at 1
True color
Enabled (xterm*:Tc)
Neovim >= 0.9
tmux >= 3.x
Zsh
Git
A Nerd Font for icons
ripgrep β for Telescope live grep
fd β for Telescope find files
Node.js β required by many LSP servers
# Clone the repo
git clone https://github.com/ihtesham510/dotfiles.git ~ /dotfiles
# Symlink Neovim config
ln -s ~ /dotfiles/.config/nvim ~ /.config/nvim
# Symlink tmux config
ln -s ~ /dotfiles/.tmux.conf ~ /.tmux.conf
# Symlink zshrc
ln -s ~ /dotfiles/.zshrc ~ /.zshrc
# Install tmux plugins (after starting tmux)
# Inside tmux: press Ctrl-t then I (capital i)
# Install Neovim plugins
nvim +PackerSync
Item
Description
Jetbrains nerd font
nerd fonts for terminal
HomeBrew
Package Manger for install pacakges (neovim ,fzf etc.)
zsh
shell
oh my zsh
for better looks and more features (mostly default settings)
windows terminal preview
windows terminal preview for better termnal experience
The neovim and windows terminal both use Cattppuccin colorscheme the wallpapers is also selected from awsome catppuccin wallpapers