Skip to content

Instantly share code, notes, and snippets.

@doole
Last active January 22, 2025 18:45
Show Gist options
  • Save doole/b82e2cdd7473073cb9098ebf7fc47094 to your computer and use it in GitHub Desktop.
Save doole/b82e2cdd7473073cb9098ebf7fc47094 to your computer and use it in GitHub Desktop.
neovim simple conguration https://neovim.io
require("options")
require("plugins")
-- borrowed config options from https://github.com/khuedoan/dotfiles/blob/master/.config/nvim
return {
-- Files
{
"<leader><leader>",
function()
require("fzf-lua").files()
end,
desc = "Find file",
},
{ "<leader>fg", "<cmd>FzfLua git_files<CR>", desc = "Find git files" },
-- Buffer
{ "<leader>bb", "<cmd>FzfLua buffers<CR>", desc = "Switch buffer" },
{ "<leader>bn", "<cmd>bnext<CR>", desc = "Next buffer" },
{ "<leader>bp", "<cmd>bprevious<CR>", desc = "Previous buffer" },
-- Search and replace
{ "<leader>/", "<cmd>FzfLua grep_project<CR>", desc = "Search project (fuzzy)" },
{ "<leader>?", "<cmd>FzfLua live_grep<CR>", desc = "Search project (regex)" },
-- {
-- "<leader>sr",
-- function()
-- require("grug-far").grug_far({
-- prefills = {
-- flags = vim.fn.expand("%"),
-- },
-- })
-- end,
-- desc = "Search and replace in current file",
-- },
-- {
-- "<leader>sR",
-- function()
-- require("grug-far").grug_far({})
-- end,
-- desc = "Search and replace in project",
-- },
-- Yank
{ "<leader>Y", '"+y', mode = { "n", "v" } , desc = "Yank to clipboard"},
{ "<leader>yF", "<cmd>let @+ = expand('%:p:~')<CR>", desc = "Yank absolute file path to clipboard" },
{ "<leader>yf", "<cmd>let @+ = expand('%')<CR>", desc = "Yank relative file path to clipboard" },
}
-- minimal configuration
vim.opt.expandtab = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.scrolloff = 3
vim.opt.cursorline = true
vim.opt.signcolumn = "yes"
vim.opt.smartindent = true
vim.opt.smartcase = true
vim.opt.ignorecase = true
vim.opt.splitbelow = true
vim.opt.splitright = true
vim.cmd("set noswapfile")
vim.cmd("set termguicolors")
-- line numbers
vim.wo.number = true
vim.wo.relativenumber = false
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Custom statusline
vim.opt.scrolloff = 3
vim.opt.statusline =
"%#Substitute# %Y %0*" .. -- filetype
" %f " .. -- path to file
"%m" .. -- modifed
"%r" .. -- readonly
"%=" .. -- separator
" %{&fileencoding} " .. -- file encoding
"|" .. -- padding
" %{&fileformat} " .. -- file format
"|" .. -- padding
" %c:%l/%L " -- column at line per total lines
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
{
"ibhagwan/fzf-lua",
event = "VeryLazy",
config = function()
require("fzf-lua").setup({
"max-perf",
winopts = {
height = 0.5,
width = 1,
row = 1,
},
})
require("fzf-lua").register_ui_select()
end,
},
-- {
-- "MagicDuck/grug-far.nvim",
-- lazy = true,
-- config = function()
-- require("grug-far").setup({})
-- end,
-- },
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
event = "VeryLazy",
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"lua",
"python",
"html"
},
highlight = {
enable = true,
},
indent = {
enable = true,
},
})
end,
},
{
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
require("nvim-autopairs").setup()
end,
},
{
"echasnovski/mini.diff",
event = "VeryLazy",
config = function()
require("mini.diff").setup({})
end,
},
{
"echasnovski/mini.surround",
event = "VeryLazy",
config = function()
require("mini.surround").setup({})
end,
},
{
"folke/which-key.nvim",
event = "VeryLazy",
keys = require("keymaps"),
},
install = { colorscheme = { "default" } },
checker = { enabled = true, notify = false },
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment