idk if this'll even work
This commit is contained in:
parent
8983794e9d
commit
2b567fae93
2 changed files with 143 additions and 2 deletions
139
dotfiles/nvim/init.lua
Normal file
139
dotfiles/nvim/init.lua
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
-- ===================================
|
||||
-- | General Neovim Configuration |
|
||||
-- ===================================
|
||||
-- I won't lie to you, I vibecoded the boilerplate for this stuff.
|
||||
-- Aside from Emacs, I don't really like having to configure my editors
|
||||
-- very much. Basic understanding of the config is all I really prioritize.
|
||||
vim.opt.number = true -- Show line numbers
|
||||
vim.opt.relativenumber = true -- Show relative line numbers
|
||||
vim.opt.tabstop = 2 -- A tab is 2 spaces
|
||||
vim.opt.shiftwidth = 2 -- Indent is 2 spaces
|
||||
vim.opt.expandtab = true -- Use spaces instead of tabs
|
||||
vim.opt.termguicolors = true -- Enable terminal colors
|
||||
vim.opt.scrolloff = 8 -- Lines above/below cursor
|
||||
vim.opt.signcolumn = "yes" -- Always show the sign column
|
||||
-- Set the leader key to space. This is a crucial step for custom mappings.
|
||||
vim.g.mapleader = " "
|
||||
-- ====================================
|
||||
-- | Plugin Management with lazy.nvim |
|
||||
-- ====================================
|
||||
-- The configuration below bootstraps lazy.nvim if it's not already installed.
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system({
|
||||
"git", "clone", "--filter=blob:none",
|
||||
"https://github.com/folke/lazy.nvim.git", lazypath
|
||||
})
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
-- Setup the plugins you need.
|
||||
require("lazy").setup({
|
||||
{ 'sphamba/smear-cursor.nvim' },
|
||||
-- For background transparency
|
||||
{ 'xiyaowong/transparent.nvim' },
|
||||
-- === The colorscheme plugin is specified here. ===
|
||||
-- Gruvbox theme plugin. It will be automatically installed by lazy.nvim.
|
||||
{ 'ellisonleao/gruvbox.nvim', config = function()
|
||||
-- Ensure the background is set to 'dark' for the gruvbox colorscheme.
|
||||
vim.o.background = 'dark'
|
||||
-- Load the colorscheme.
|
||||
vim.cmd.colorscheme("gruvbox")
|
||||
end },
|
||||
-- Treesitter plugin for syntax highlighting.
|
||||
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
|
||||
-- Autocomplete plugins
|
||||
{ "hrsh7th/nvim-cmp" },
|
||||
{ "hrsh7th/cmp-nvim-lsp" },
|
||||
{ "L3MON4D3/LuaSnip" },
|
||||
{ "neovim/nvim-lspconfig" },
|
||||
-- Plugin to automatically close paired characters like (), {}, [], and ""
|
||||
{ 'echasnovski/mini.pairs' },
|
||||
-- File tree and icon plugins
|
||||
{
|
||||
'nvim-tree/nvim-tree.lua',
|
||||
version = '*',
|
||||
lazy = false,
|
||||
dependencies = {
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
config = function()
|
||||
-- The setup call for the nvim-tree plugin.
|
||||
require('nvim-tree').setup {}
|
||||
end
|
||||
},
|
||||
})
|
||||
-- Transparent configuration
|
||||
require('transparent').setup({
|
||||
enable = true, -- boolean: enable transparent
|
||||
extra_groups = { -- table: additional groups to clear
|
||||
'Normal', 'NormalNC', 'Comment', 'Constant', 'Identifier',
|
||||
'Statement', 'PreProc', 'Type', 'Special', 'Underlined',
|
||||
'Todo', 'String', 'Function', 'Conditional', 'Repeat',
|
||||
'Operator', 'Structure', 'LineNr', 'SignColumn', 'EndOfBuffer'
|
||||
},
|
||||
})
|
||||
-- Treesitter configuration.
|
||||
require("nvim-treesitter.configs").setup({
|
||||
highlight = { enable = true },
|
||||
-- You can specify languages to install with `ensure_installed`.
|
||||
-- e.g., ensure_installed = { "lua", "python", "javascript" },
|
||||
})
|
||||
-- Autocomplete (cmp) configuration.
|
||||
local cmp = require("cmp")
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args) require("luasnip").lsp_expand(args.body) end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<Tab>"] = cmp.mapping.select_next_item(),
|
||||
["<S-Tab>"] = cmp.mapping.select_prev_item(),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
}),
|
||||
sources = {
|
||||
{ name = "nvim_lsp" },
|
||||
},
|
||||
})
|
||||
-- Mini.pairs configuration.
|
||||
-- This simple setup is all that's needed for the basic functionality.
|
||||
require('mini.pairs').setup({})
|
||||
-- ===================================
|
||||
-- | Custom Keymaps |
|
||||
-- ===================================
|
||||
-- Keymaps are custom commands mapped to a specific key combination.
|
||||
-- The "<leader>" prefix will be replaced with your leader key, which is "space".
|
||||
-- Split creation keymaps
|
||||
vim.keymap.set('n', '<leader>sv', ':vsplit<CR>', { desc = 'Create a vertical split' })
|
||||
vim.keymap.set('n', '<leader>ss', ':split<CR>', { desc = 'Create a horizontal split' })
|
||||
-- Buffer navigation
|
||||
-- <leader>bh/j/k/l to navigate between buffers
|
||||
vim.keymap.set('n', '<leader>bh', ':bprev<CR>', { desc = 'Go to previous buffer' })
|
||||
vim.keymap.set('n', '<leader>bl', ':bnext<CR>', { desc = 'Go to next buffer' })
|
||||
-- The following mappings are less common, but fulfill your request.
|
||||
vim.keymap.set('n', '<leader>bj', ':bnext<CR>', { desc = 'Go to next buffer' })
|
||||
vim.keymap.set('n', '<leader>bk', ':bprev<CR>', { desc = 'Go to previous buffer' })
|
||||
-- Split navigation
|
||||
-- <leader>sh/j/k/l to move between splits
|
||||
vim.keymap.set('n', '<leader>sh', '<C-w>h', { desc = 'Move to left split' })
|
||||
vim.keymap.set('n', '<leader>sj', '<C-w>j', { desc = 'Move to split below' })
|
||||
vim.keymap.set('n', '<leader>sk', '<C-w>k', { desc = 'Move to split above' })
|
||||
vim.keymap.set('n', '<leader>sl', '<C-w>l', { desc = 'Move to right split' })
|
||||
-- Normal mode keymaps
|
||||
-- Save the current file.
|
||||
vim.keymap.set('n', '<leader>w', ':w<CR>', { desc = 'Save file' })
|
||||
-- Force quit the current window without saving.
|
||||
vim.keymap.set('n', '<leader>q', ':q!<CR>', { desc = 'Force quit window' })
|
||||
-- Save and quit.
|
||||
vim.keymap.set('n', '<leader>x', ':wq<CR>', { desc = 'Save and quit' })
|
||||
-- Save all open buffers.
|
||||
vim.keymap.set('n', '<leader>wa', ':wa<CR>', { desc = 'Save all buffers' })
|
||||
-- Close all windows except the current one.
|
||||
vim.keymap.set('n', '<leader>o', ':only<CR>', { desc = 'Close all other windows' })
|
||||
-- Toggle the file tree.
|
||||
vim.keymap.set('n', '<leader>e', ':NvimTreeToggle<CR>', { desc = 'Toggle file tree' })
|
||||
-- Select the entire file content.
|
||||
vim.keymap.set('n', '<leader>a', 'ggVG', { desc = 'Select entire file' })
|
||||
-- Various commands to compile different file types.
|
||||
-- Typst => PDF
|
||||
vim.keymap.set('n', '<leader>ct', ':!typst compile %:t<CR>', { desc = 'Compile Typst file to PDF'} )
|
||||
-- Keybinding to toggle transparency
|
||||
vim.api.nvim_set_keymap('n', '<leader>tt', ':TransparentToggle<CR>', { noremap = true, silent = true })
|
||||
|
|
@ -31,8 +31,6 @@
|
|||
neovim # Text editor of choice
|
||||
htop # Resource manager
|
||||
iina # Media player
|
||||
# raycast # AI chat/Application launcher/Automation tool
|
||||
# kanata # Keyboard remapping tool
|
||||
];
|
||||
|
||||
homebrew = {
|
||||
|
|
@ -53,6 +51,7 @@
|
|||
"font-monocraft-nerd-font"
|
||||
"obsidian"
|
||||
"raycast"
|
||||
"leader-key"
|
||||
"foobar2000"
|
||||
"android-platform-tools"
|
||||
"zen"
|
||||
|
|
@ -67,6 +66,9 @@
|
|||
system.defaults = {
|
||||
dock.autohide = true;
|
||||
finder.AppleShowAllExtensions = true;
|
||||
NSGlobalDomain.AppleShowAllFiles = true;
|
||||
# finder.AppleShowAllFiles
|
||||
NSGlobalDomain.AppleShowScrollBars = "WhenScrolling"
|
||||
};
|
||||
|
||||
nix.enable =false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue