This repo defines Ryan's (personal, public) terminal environment. It contains:
- a Neovim environment with tons of plugins and customization
- a tmux environment with a few plugins and some customization
- a (simple by today's standard) bash environment
- a collection of scripts to help with random things
- a convenient one-line command to install various system dependencies that I always need
The following should be done in all cases (i.e. on the host, in docker containers, on remote servers):
Debian:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/acu192/config-env/main/install_debian.bash)"MacOS:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/acu192/config-env/main/install_macos.bash)"On the host machine, you also need to install the fonts:
cd fonts/<your-system> && makeAlso on the host machine, you need to configure your terminal to:
- use one of those fonts install above,
- have a reasonable default color palette (e.g. in gnome terminal I use "GNOME dark" as the background and "Tango" or "Solarized" as the palette), and
- support 24bit color.
My mappings:
- My
<leader>is,. <Space>: mapped to:(and:is mapped to nothing so you stop the bad habit)jj: mapped to<Esc><C-s>or<leader>s: Save the buffer.<C-q>or<leader>q: Close (quit) the window.<leader>/: Clear the active search (to un-highlight them).Q: Replay the macro stored in theqmacro. Hint: First useqqto record the macro.<F5>or<leader>5: Toggle spell check (it's ON by default).<F6>or<leader>6: Toggle word wrap (it's OFF by default).- (in visual mode):
JandKmove the selected lines up and down. <leader>G: Select the entire buffer.
folke/which-key.nvim:
- upon any hesitation: Show a little pop-up with suggestions to help you remember what you want.
z=: Fix spelling with the same little pop-up (rather than the default ugly full-screen behavior).
numToStr/Comment.nvim:
- Normal Mode:
gccToggle the current line using linewise comment.gbcToggle the current line using blockwise comment.[count]gccToggle the number of line given as a prefix-count using linewise.[count]gbcToggle the number of line given as a prefix-count using blockwise.gc[count]{motion}(Op-pending) Toggle the region using linewise comment.gb[count]{motion}(Op-pending) Toggle the region using blockwise comment.
- Visual Mode:
gcToggle the region using linewise comment.gbToggle the region using blockwise comment.
nvim-treesitter/nvim-treesitter:
<C-space>: start incremental select & node increment<C-a>: node decrement
lewis6991/gitsigns.nvim:
<F1>or<leader>1: Go to next git hunk.<F2>or<leader>2: Go to previous git hunk.<F3>or<leader>3: Preview this git hunk's diff.<F4>or<leader>4: Stage this git hunk (also works in visual mode to stage only a certain line(s)).<leader>B: Toggle current-line git-blame viewer.
akinsho/bufferline.nvim:
<C-w>or<leader>w: Close current buffer (IF SAVED; else ignore command).<C-b>or<leader>b: Close all other buffers (IF SAVED; else they stay open).<Shift-Tab>: Cycle to Previous Buffer<Tab>: Cycle to Next Buffer
nvim-tree/nvim-tree.lua:
- Anytime:
<F7>or<leader>7: Close file tree.<F8>or<leader>8: Open file tree on current buffer's file, and focus it.<F9>or<leader>9: Collapse all the folders in the file tree.
- When in File Tree:
<Enter>: Open file/folderDouble-click: Open file/foldero: Open file/folderO: Open file/folder (without asking for which window in the case that there is more than one window)\: Open file in vertical split-: Open file in horizontal split<Tab>: Move focus back to buffers<BS>: Close parent folder{: Select parent folderi: See file info.: Run command on current filea: Create new filer: Rename filed: Delete filec: Copy filex: Cut filep: Paste fileM: Maximize all foldersm: minimize all foldersb: Toggle "No Buffer" filter (i.e. hiding all files not currently open)h: Toggle hidden files (i.e. files starting with a dot)g: Toggle gitignore filesq: Close the file treeR: Refresh file tree?: See help dialog
christoomey/vim-tmux-navigator:
<C-j>: Activate the window DOWN.<C-k>: Activate the window UP.<C-h>: Activate the window LEFT.<C-l>: Activate the window RIGHT.<C-\>: Activate previous window.
neovim/nvim-lspconfig:
- Things set by nvim's default LSP client (ref):
- omnifunc ... which is, in insert mode,
C-x + C-o: LSP-powered autocomplete - tagfunc ... which is:
C-]: jump to definition (LSP-powered)C-w + ]: split current window and go to definition in the new split (doesn't work since we use C-w elsewhere)C-w + }: make a preview window with the results of:ptag(doesn't work since we use C-w elsewhere)
- formatexpr ... which autoformats lines with
gq(LSP-powered) Kwhich looks up documentation (via the LSP) for the word under the cursor
- omnifunc ... which is, in insert mode,
- Things I set myself (mostly copied from the suggestions of nvim-lspconfig):
<leader>d: [DIAGNOSTICS] Open floating diagnostics window[d: [DIAGNOSTICS] Goto previous diagnostic issue]d: [DIAGNOSTICS] Goto next diagnostic issuegD: [LSP] Goto declarationgd: [LSP] Goto definitiongt: [LSP] Goto type definitiongi: [LSP] Goto implementationgr: [LSP] Goto referencesK: [LSP] Help: HoverS: [LSP] Help: Signature<leader>r: [LSP] Rename this symbol<leader>c: [LSP] Do code action<leader>f: [LSP] Format code
hrsh7th/nvim-cmp:
- No global or buffer-level mappings are created (as far as I know)
- The plugin has these defaults for navigating the autocomplete floating window list:
<Down>and<Up>: go down and up in the list<C-n>and<C-p>: go down and up in the list<C-y>: confirm selection<C-e>: abort
- I add a few more:
<CR>: confirm selection<Tab>and<S-Tab>: go down and up in the list; also navigate snippet jumps<C-space>: complete!
nvim-telescope/telescope.nvim:
C-f: Find Files (in CWD)C-g: Find Files (in Git root)<leader>g: Live Grep Files (in CWD)<leader>*: Search Selection<leader>D: List Diagnostics<CR>: (if not using multi-selections) open single selection; (if using multi-selections) open all selected<M-CR>: open all buffers shown in the filtered list
TODO:
- quickfix