diff --git a/.config/nvim/lua/general/autocmd.lua b/.config/nvim/lua/general/autocmd.lua new file mode 100644 index 0000000..e64256e --- /dev/null +++ b/.config/nvim/lua/general/autocmd.lua @@ -0,0 +1,33 @@ + +-- Remove any trailing whitespace from the file on write +vim.api.nvim_create_autocmd({ 'BufWritePre' }, { command = [[%s/\s\+$//e]] }) + +-- Load file on last line +-- TODO: change this to use lua +vim.api.nvim_create_autocmd({ 'BufRead' }, { + command = [[if @% !~# '\.git[\/\\]COMMIT_EDITMSG$' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif]] +}) + +-- Save session on VimLeave +vim.api.nvim_create_autocmd({ 'VimLeave' }, { + command = [[mksession! ~/.config/nvim/session/shutdown_session.vim]] +}) + +-- Set tabs to 2 for dart, vue, and js files +vim.api.nvim_create_autocmd({ 'BufNewFile', 'BufRead' }, { + pattern = { '*.dart', '*.vue', '*.js' }, + callback = function() + vim.o.tabstop = 2 + vim.o.softtabstop = 2 + vim.o.shiftwidth = 2 + end +}) + +-- Ensure to read .docker files as a dockerfile +vim.api.nvim_create_autocmd({ 'BufNewFile', 'BufRead' }, { + pattern = { '*.docker' }, + callback = function() + vim.o.syntax = 'dockerfile' + end +}) + diff --git a/.config/nvim/lua/general/options.lua b/.config/nvim/lua/general/options.lua new file mode 100644 index 0000000..07aef10 --- /dev/null +++ b/.config/nvim/lua/general/options.lua @@ -0,0 +1,30 @@ +vim.g.mapleader = ',' + +vim.o.clipboard = 'unnamedplus' + +vim.o.nohlsearch = true +vim.o.incsearch = true +vim.o.ignorecase = true + +-- autocmd BufWritePre * :%s/\s\+$//e + +vim.o.mouse = 'a' +vim.o.smartcase = true +vim.o.linebreak = true + +vim.o.noswapfile = true +vim.o.nobackup = true +vim.o.undodir = vim.fn.expand('~/.config/nvim/undodir') +vim.o.undofile = true + +vim.o.encoding = 'utf-8' +vim.o.number = true +vim.o.relativenumber = true + +vim.o.tabstop = 4 +vim.o.softtabstop = 4 +vim.o.expandtab = true +vim.o.shiftwidth = 4 +vim.o.smarttab = true + +vim.o.formatoptions = 'tqj' diff --git a/.config/nvim/lua/general/remaps.lua b/.config/nvim/lua/general/remaps.lua new file mode 100644 index 0000000..5ba2a80 --- /dev/null +++ b/.config/nvim/lua/general/remaps.lua @@ -0,0 +1,35 @@ +local options = { noremap = true } + +vim.api.nvim_set_keymap('n', 'c', '"_c', options) + +-- Easily open splits +vim.api.nvim_set_keymap('n', 'hs', 'split', options) +vim.api.nvim_set_keymap('n', 'vs', 'vsplit', options) + +-- Copy the entire file +vim.api.nvim_set_keymap('n', 'y', 'ggyG', options) + +-- Easily navigate tabs +vim.api.nvim_set_keymap('n', '1', '1gt', options) +vim.api.nvim_set_keymap('n', '2', '2gt', options) +vim.api.nvim_set_keymap('n', '3', '3gt', options) +vim.api.nvim_set_keymap('n', '4', '4gt', options) +vim.api.nvim_set_keymap('n', '5', '5gt', options) + +-- Manually store session +vim.api.nvim_set_keymap('n', '', 'mksession! ~/.config/nvim/session/manual_session.vim', options) +-- Restore manually stored session +vim.api.nvim_set_keymap('n', '', 'source ~/.config/nvim/session/manual_session.vim', options) +-- Restore auto saved session created on exit +vim.api.nvim_set_keymap('n', '', 'source ~/.config/nvim/session/shutdown_session.vim', options) + +-- Replace all is aliased to S. +vim.api.nvim_set_keymap('n', '', '%s//g', options) + +-- Navigating with guides +vim.api.nvim_set_keymap('n', '', '/<++>"_c4l', options) +vim.api.nvim_set_keymap('i', '', '/<++>"_c4l', options) +vim.api.nvim_set_keymap('v', '', '/<++>"_c4l', options) + +-- Spell-check +vim.api.nvim_set_keymap('n', 'o', 'setlocal spell! spelllang=en_au', options) diff --git a/.config/nvim/lua/helper/toggle-tab-width.lua b/.config/nvim/lua/helper/toggle-tab-width.lua new file mode 100644 index 0000000..ff702a9 --- /dev/null +++ b/.config/nvim/lua/helper/toggle-tab-width.lua @@ -0,0 +1,19 @@ +local tabWidth = 4 + +function ToggleTabWidth() + if tabWidth == 2 then + vim.o.tabstop = 4 + vim.o.softtabstop = 4 + vim.o.shiftwidth = 4 + tabWidth = 4 + print('Set tab width to 4') + return + end + vim.o.tabstop = 2 + vim.o.softtabstop = 2 + vim.o.shiftwidth = 2 + tabWidth = 2 + print('Set tab width to 2') +end + +vim.keymap.set('n', 't', ToggleTabWidth, { noremap = true}) diff --git a/.config/nvim/lua/packer-plugins.lua b/.config/nvim/lua/packer-plugins.lua new file mode 100644 index 0000000..a4c2099 --- /dev/null +++ b/.config/nvim/lua/packer-plugins.lua @@ -0,0 +1,25 @@ +return require('packer').startup(function() + -- Packer can manage itself + use 'wbthomason/packer.nvim' + + -- colorscheme + use 'gruvbox-community/gruvbox' + + use { 'neoclide/coc.nvim', run = 'yarn install' } + + use 'nvim-lua/popup.nvim' + use 'nvim-lua/plenary.nvim' + use 'nvim-telescope/telescope.nvim' + use 'nvim-telescope/telescope-fzy-native.nvim' + + use 'Rican7/php-doc-modded' + + use 'f-person/git-blame.nvim' + + use 'dart-lang/dart-vim-plugin' + + use { 'fatih/vim-go', cmd = 'GoUpdateBinaries' } + use { 'darrikonn/vim-gofmt', cmd = 'GoUpdateBinaries' } + + use 'aserowy/tmux.nvim' +end)