My personal .files with chezmoi, tested and works well on macOS (MacBook Pro) and ArchLinux (Intel NUC 8i7HVK)
- Git, if you want to keep syncing with new updates
- chezmoi
- Neovim, or Vim version 8.0+, with python supports
- LazyVim: the plugin manager for Vim
- delta: for Git diff
- oh-my-zsh
- ctags (for tags generation)
# init
chezmoi init https://github.com/akccakcctw/dotfiles.git
# update
chezmoi updateUse tpm to manage plugins:
Cross-platform config (dot_wezterm.lua) — a single file that auto-detects the OS via wezterm.target_triple. Atom One Dark theme with a Warp-like look, plus a status bar showing the current directory's Node version (resolved by mise).
Keybindings differ per platform on purpose. On macOS Cmd is free for the GUI app, but on Linux plain Ctrl is reserved by the shell (Ctrl+C, Ctrl+D, Ctrl+W, …), so a direct Cmd→Ctrl swap would clobber core terminal keys. Linux therefore follows the Ctrl+Shift / Ctrl+Alt convention (and avoids Super, which desktop environments grab):
| Action | macOS | Linux |
|---|---|---|
| Split left/right | Cmd+D |
Ctrl+Shift+D |
| Split top/bottom | Cmd+Shift+D |
Ctrl+Alt+D |
| Close pane | Cmd+W |
Ctrl+Shift+W |
| Quick Select (copy URLs/paths/hashes) | Cmd+Shift+U |
Ctrl+Alt+U (built-in Ctrl+Shift+Space also works) |
| Tab navigator / filter tabs | Cmd+Shift+T |
Ctrl+Alt+T |
| Rename tab (empty input restores auto title) | Cmd+Shift+E |
Ctrl+Shift+E |
| Move focus between panes | Cmd+Alt+Arrow |
Ctrl+Alt+Arrow |
| Open link under cursor | Cmd+Click |
Ctrl+Click |
Other platform-specific bits handled in the same file: the mise binary path, macos_window_background_blur (macOS only), and font fallbacks (Nerd Font → DejaVu Sans Mono → monospace).
Requires a Nerd Font (e.g. Hack Nerd Font) for the Node icon in the status bar.
mapping leader key to ,.
- tabs
open a new tab:<C-n>- switch to next tab:
<Leader>n
- split window
- split horizontal:
<C-\> - split window navigations:
<C-Left>,<C-Down>,<C-Up>,<C-Right> - switch between vertical/horizontal split:
<Leader>E,<Leader>I
- split horizontal:
- no highlight search result:
<Leader>/ - toggle wrap:
<F2> - increase/decrease number under the cursour:
+,- - move text line up/down:
<C-j>,<C-k> - avoid the escape key:
jj - save a file as root:
<Leader>WW - strip trailing whitespace:
<Leader>ss - edit .vimrc:
<leader>ee
- indentLine
- nvim-tree.lua
- NvimTreeToggle:
<C-b>
- NvimTreeToggle:
- render-markdown.nvim
- vim-devicons
- choose a Nerd Font compatible font for your terminal to see fancy icons
- vim-airline-themes
- vim-airline
- vim-indent-guides
- vim-gitgutter
- vim-autoformat
<Leader>FF
- vim-import-cost
- vim-table-mode
<Leader>tmto start it (or typing:TableModeToggle)
- tidy-html5
- markdown-preview.nvim
- tender
- vim-buffergator
<Leader>bto open a window listing all buffers<C-v>to edit the selected buffer in a new vertical split<C-s>to edit the selected buffer in a new horizontal split<C-t>to edit the selected buffer in a new tab
- fzf
- fzf.vim
- gv.vim
- vim-easy-align
- patchreview-vim
- tagbar
- toggle tagbar:
<F8>
- toggle tagbar:
- emmet-vim
- enabled in html, css, scss, pug, vue, php files
- expand:
<C-e>, - wrap: select then
<C-e>, - next edit position:
<C-e>n - previous edit position:
<C-e>N - select current tag:
<C-e>d - delete tag:
<C-e>k - merge multiple lines:
<C-e>m
- vim-tags
- generate tags for the project (using ctags)
:TagGenerate!
- generate tags for the project (using ctags)
- vim-multiple-cursors
- tcomment_vim
- toggle comment with
<Leader>ccin normal mode - select then
<Leader>ccfor inline comment - select then
<Leader>c<Space>for block comment
- toggle comment with
- vim-fugitive
- vim-surround
- vdebug
- ale
- mason.nvim
- vim-windowswap
- Client
- Servers (install manually)
- JavaScript: sourcegraph/javascript-typescript-langserver
npm i -g javascript-typescript-langserver - PHP: intelephense
npm i -g intelephense - Dockerfile: rcjsuen/dockerfile-language-server-nodejs
npm i -g dockerfile-language-server-nodejs - Vue: vuejs/vetur/server
npm i -g vue-language-server
- JavaScript: sourcegraph/javascript-typescript-langserver
read linux/vimrc for more details.