This Neovim configuration is based on kickstart.nvim. Refer there for features not covered in this documentation.
And he has finally made his own distribution.
- Add a
Neorg
configuration - Add custom folds and markers
- Remove
vim-tmux-navigator
- Add
zen-mode
andtwilight
- Use
mini.pairs
instead ofautoclose.nvim
- Add a disable command for autoformatting in
conform.nvim
- Redid code structure of
init.lua
,dashboard.lua
, andtheme.lua
- Added folds for legibility
- Add hanging indents on wrapping lines
- Add
leap.nvim
- Improve README documentation and installation guide
- File handling using:
- Beautiful code snippet snapshots silicon.nvim
- Zen-mode zen-mode and twilight
- Lualine lualine.nvim
- Customizable dashboard dashboard.nvim
- Extensive markdown support
- Previewing markdown-preview.nvim
- Stylized rendering in text headlines.nvim
- Autoclosing HTML tags nvim-ts-autotag
- Autoclosing and paired grouping symbols mini.pairs
- Toggleable lines for indentation indent-blankline.nvim
- Blazingly fast project traversal using marks harpoon
- Document symbols navigation aerial.nvim
- Support for Github Copilot copilot.lua
- Pre-configured Kitty Scrollback kitty-scrollback.nvim
- Note-taking Neorg
- Fast motions to go to wherever on the screen leap.nvim
- Customizable folds and fold markers
- Supplementary keymappings
- Ships with Language Server Protocols (Make sure you have their dependencies
installed)
- C/C++
clangd
- Python
pyright
- Lua
lua_ls
- Javascript/Typescript
tsserver
- C/C++
NOTE: background opacity is not a feature included in this distribution but in my Arch Linux +
Hyprland
configuration.
init.lua |
dashboard.lua |
---|---|
neotree |
splits and telescope buffer |
---|---|
neorg with zen-mode and twilight |
preview markdown |
---|---|
IMPORTANT: This repository doubles as my backup for my configuration backup so clone from a stable branch version not the main one!
-
Install all dependencies needed by this distribution (Can refer to
kickstart.nvim
's documentation)neovim
.- Basic utilities such as:
git
,make
,unzip
,ripgrep
, andgcc
- A clipboard tool such as
xclip
/xsel
/win32yank
(depending on platform) - A Nerd Font of your choice
- Language setup such as
python
,npm
,cargo
(Rust),go
(Go) - The
kitty
terminal is also recommended, as this distribution supportskitty-scrollback
andvim-kitty
- If you are going to use
kitty-scrollback
, refer to their documentation on other things needed to setup beforehand
- If you are going to use
- A Github account eligible for Copilot, if you are planning on using the
copilot.lua
plugin.
-
Clone your stable version of choice
OS | PATH |
---|---|
Linux, MacOS | $XDG_CONFIG_HOME/nvim , ~/.config/nvim |
Windows (cmd) | %userprofile%\AppData\Local\nvim\ |
Windows (powershell) | $env:USERPROFILE\AppData\Local\nvim\ |
git clone -b stable-<VERSION> git@https://github.com/44mira/tyraelvim.git
"${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
- Install your language servers and formatters needed using
:Mason
and update plugins with:Lazy
.- You can also install
tree-sitter
using:TSInstall
syntax highlighting manually, though this automatically happens whenever you open a file without treesitter parsing yet.
- You can also install
NOTE: All keybindings won't be found in [[ tyraelvim keymaps ]], some of them you will have to find (
Telescope Live-Grep
can help with this).
- Optional customization (these can all be found in
./lua/custom/plugins
):- Text pools found in
dashboard.lua
- Font and background for
silicon
- Theme in
themes
- Text pools found in
From kickstart.nvim
, you can press <leader>sk
to search for particular keymappings. Moreover, kickstart.nvim
has which-key.nvim
for hints.
init.lua
code snippet
-- ./init.lua
-- shorthand for binding keymap
local bind = vim.keymap.set
-- Open File tree
bind('n', '<leader>t', '<cmd>Neotree toggle reveal<CR>', { desc = 'Open Neo[T]ree' })
-- Open an Oil buffer
bind('n', '<leader>f', '<cmd>Oil<CR>', { desc = 'Open [F]ile explorer buffer' })
-- Toggle lines for indented
bind('n', '<leader>i', '<cmd>IBLEnable | set cc=80<CR>', { desc = 'Enable Indent Blank Line' })
bind('n', '<leader>j', '<cmd>IBLDisable | set cc=0<CR>', { desc = 'Disable Indent Blank Line' })
-- Additional normal bind shortcut for ergonomics
bind('i', 'jk', '<Esc>', { desc = 'Normal mode' })
-- Close a tab
bind('n', '<leader>bd', '<cmd>bd!<CR>', { desc = '[B]uffer [D]elete' })
-- Cycle through buffers
bind('n', '<leader>[', '<cmd>bp<CR>', { desc = '[[] Previous Buffer' })
bind('n', '<leader>]', '<cmd>bn<CR>', { desc = '[]] Next Buffer' })
-- Zen mode
bind('n', '<leader>zen', function()
require('zen-mode').toggle()
end, { desc = '[Zen] mode' })
-- Trigger Twilight
bind('n', '<leader>tw', '<cmd>Twilight<CR>', { desc = 'Toggle [Tw]ilight' })
-- Take code snapshot
bind('v', '<leader><leader>', function()
require('nvim-silicon').clip()
end, { desc = '[ ][ ] Take code snapshot' })
-- Markdown preview
bind('n', '<leader>pm', '<cmd>MarkdownPreviewToggle<CR>', { desc = '[P]review [M]arkdown' })
-- Note taking
bind('n', '<leader>nb', '<cmd>:enew<CR>', { desc = '[N]ew [B]uffer' })
-- Conceal cursor with in a Neorg file
bind('n', '<leader>cc', function()
if vim.o.concealcursor == '' then
vim.o.concealcursor = 'nc'
else
vim.o.concealcursor = ''
end
end, { desc = '[C]onceal [c]ursor' })
-- Format on save disable on command
vim.api.nvim_create_user_command('FormatDisable', function(args)
if args.bang then
-- FormatDisable! will disable formatting just for this buffer
vim.b.disable_autoformat = true
else
vim.g.disable_autoformat = true
end
end, {
desc = 'Disable autoformat-on-save',
bang = true,
})
vim.api.nvim_create_user_command('FormatEnable', function()
vim.b.disable_autoformat = false
vim.g.disable_autoformat = false
end, {
desc = 'Re-enable autoformat-on-save',
})
Additional plugins are added by creating a corresponding .lua
file in ./lua/custom/plugins/
that returns a Lazy.nvim table.
- The file names don't have to match the plugins, they just have to be in the directory.
Example:
-- ./lua/custom/plugins/oil.lua
return {
'stevearc/oil.nvim',
opts = {},
-- Optional dependencies
dependencies = { 'nvim-tree/nvim-web-devicons' },
}
Be sure to remove unused LSPs in ./init.lua
.