From 05f6385865e734dd3b372c2838d8ced540369452 Mon Sep 17 00:00:00 2001 From: TheK4n Date: Wed, 18 Jan 2023 18:51:09 +0300 Subject: [PATCH] ref nvim --- README.md | 3 - sub/nvim/lua/base/init.lua | 2 +- sub/nvim/lua/base/keys/init.lua | 2 + sub/nvim/lua/base/keys/keys.lua | 97 +++++++++++++++++ sub/nvim/lua/base/keys/run-scripts.lua | 59 +++++++++++ sub/nvim/lua/base/maps.lua | 141 ------------------------- sub/nvim/lua/base/options.lua | 116 ++++++++++---------- 7 files changed, 222 insertions(+), 198 deletions(-) create mode 100644 sub/nvim/lua/base/keys/init.lua create mode 100644 sub/nvim/lua/base/keys/keys.lua create mode 100644 sub/nvim/lua/base/keys/run-scripts.lua delete mode 100644 sub/nvim/lua/base/maps.lua diff --git a/README.md b/README.md index 4682b43..210e1ee 100644 --- a/README.md +++ b/README.md @@ -80,9 +80,6 @@ echo "Hello $USER!" | ,rr | Run script in new tab (python, go, preview markdown)| | ,rm | Run script (make run) | | ,rf | Format file (go) | -| ,nn | Toggle NerdTree | -| ,nf | Toggle NerdTree focus | -| ,ve | Open ~/.vimrc or ~/.config/nvim/init.vim in new tab | diff --git a/sub/nvim/lua/base/init.lua b/sub/nvim/lua/base/init.lua index 541cd72..083e923 100644 --- a/sub/nvim/lua/base/init.lua +++ b/sub/nvim/lua/base/init.lua @@ -1,3 +1,3 @@ require("base.options") -require("base.maps") +require("base.keys") require("base.plugins") diff --git a/sub/nvim/lua/base/keys/init.lua b/sub/nvim/lua/base/keys/init.lua new file mode 100644 index 0000000..28829fd --- /dev/null +++ b/sub/nvim/lua/base/keys/init.lua @@ -0,0 +1,2 @@ +require("base.keys.keys") +require("base.keys.run-scripts") diff --git a/sub/nvim/lua/base/keys/keys.lua b/sub/nvim/lua/base/keys/keys.lua new file mode 100644 index 0000000..2649472 --- /dev/null +++ b/sub/nvim/lua/base/keys/keys.lua @@ -0,0 +1,97 @@ +local map = vim.keymap.set +local opts = { noremap = true, silent = true } + + +vim.g.mapleader = ',' + + +function create_function_tabdo(command) + return function() + local curr_tab = vim.fn.tabpagenr() + vim.cmd.tabdo(command) + vim.cmd.tabn(curr_tab) + end +end + +-- Toggle line highlighting +map('n', 'c', create_function_tabdo('set cursorline!'), opts) + +map('n', '/', + function() vim.opt.hlsearch = not vim.opt.hlsearch["_value"] end, + opts) + +map('i', 'jk', '', opts) +map('i', 'ол', '', opts) + + +-- x to blackhole +map('n', 'x', '"_x', opts) + +-- Increment/decrement +map('n', '+', '', opts) +map('n', '-', '', opts) + +-- map \ to prev finding +map({"n", "v"}, [[\]], ',', opts) + +-- Select all +map('n', '', 'ggG', opts) + + +-- Scroll tabs +map("n", '', vim.cmd.tabnext, opts) +map("n", '', vim.cmd.tabprev, opts) + + +-- Kill current buffer +map("n", 'qq', ':bd!', opts) +-- Quick exit without saving +map("n", 'qa', ':qa!', opts) + + +map("n", 'eh', ':set list!', opts) +vim.opt.listchars=[[tab:→\ ,eol:↵,trail:·,extends:↷,precedes:↶]] + + +-- Tags panel (ctags required) +map("n", 't', ':TagbarToggle', opts) + + +-- Telescope +map("n", 'ff', 'Telescope find_files', opts) +map("n", 'fg', 'Telescope live_grep', opts) + + +-- Expand %% to dirname of current file in command line +map("c", '%%', [[getcmdtype() == ':' ? expand('%:h').'/' : '%%']], {expr = true}) + + +-- Save from root +vim.api.nvim_create_user_command('Sw', [[execute 'silent! write !SUDO_ASKPASS=$(which vim_askpass_helper) sudo -A tee % >/dev/null']], {}) + + + +-- Toggle line number style +function toggle_number_style() + + local opt = vim.opt + local number = opt.number["_value"] + local relativenumber = opt.relativenumber["_value"] + + if (not number) and (not relativenumber) then + opt.number = true + opt.relativenumber = false + elseif (number) and (not relativenumber) then + opt.number = false + opt.relativenumber = true + elseif (not number) and (relativenumber) then + opt.number = true + opt.relativenumber = true + elseif (number) and (relativenumber) then + opt.number = false + opt.relativenumber = false + end +end + +-- Toggle line number style +map('n', 'l', create_function_tabdo('lua toggle_number_style()'), opts) diff --git a/sub/nvim/lua/base/keys/run-scripts.lua b/sub/nvim/lua/base/keys/run-scripts.lua new file mode 100644 index 0000000..b470419 --- /dev/null +++ b/sub/nvim/lua/base/keys/run-scripts.lua @@ -0,0 +1,59 @@ + +function autocmd(func) + local create_autocmd = vim.api.nvim_create_autocmd + + create_autocmd("BufEnter", + { pattern = '*', callback = func} + ) +end + +function set_keymap_base(key, cmd) + local map = vim.keymap.set + keymap_keys = string.format([[r%s]], key) + map("n", keymap_keys, cmd, opts) +end + +function set_keymap_format_file(cmd) + local cmd_string = string.format([[:!%s %% ]], cmd) + set_keymap_base("f", cmd_string) +end + +function set_keymap_run_script(cmd) + local cmd_string = string.format([[:tabnew %% :terminal %s %% :set nocursorline number norelativenumber G ]], cmd) + set_keymap_base("r", cmd_string) +end + +function create_function_autocmd_filetype(set_keymap_func, ft, cmd) + return function() + if vim.bo.filetype == ft then + set_keymap_func(cmd) + end + end +end + +function create_function_autocmd_filename(set_keymap_func, fn, cmd) + return function() + if vim.fn.expand('%:t') == fn then + set_keymap_func(cmd) + end + end +end + +function autocmd_run_script_filetype(ft, cmd) + autocmd(create_function_autocmd_filetype(set_keymap_run_script, ft, cmd)) +end + +function autocmd_format_file_by_filetype(ft, cmd) + autocmd(create_function_autocmd_filetype(set_keymap_format_file, ft, cmd)) +end + + +autocmd_run_script_filetype('python', 'python3') +autocmd_run_script_filetype('go', 'go run') +autocmd_run_script_filetype('rust', 'cargo run') +autocmd_run_script_filetype('markdown', 'glow') + +autocmd(create_function_autocmd_filename(set_keymap_run_script, 'manpage', 'man -P cat -l')) + +autocmd_format_file_by_filetype('rust', 'cargo fmt -p') +autocmd_format_file_by_filetype('go', 'go fmt') diff --git a/sub/nvim/lua/base/maps.lua b/sub/nvim/lua/base/maps.lua deleted file mode 100644 index 710a040..0000000 --- a/sub/nvim/lua/base/maps.lua +++ /dev/null @@ -1,141 +0,0 @@ -local keymap = vim.keymap - - -vim.g.mapleader = ',' - -local opts = { noremap = true, silent = true } - -function create_function_tabdo(command) - return function() - local curr_tab = vim.fn.tabpagenr() - vim.cmd.tabdo(command) - vim.cmd.tabn(curr_tab) - end -end - --- Toggle line highlighting -vim.opt.cursorline = true -keymap.set('n', 'c', create_function_tabdo('set cursorline!'), opts) - -keymap.set('n', '/', - function() vim.opt.hlsearch = not vim.opt.hlsearch["_value"] end, - opts) - -keymap.set('i', 'jk', '', opts) -keymap.set('i', 'ол', '', opts) - - --- x to blackhole -keymap.set('n', 'x', '"_x', opts) - --- Increment/decrement -keymap.set('n', '+', '', opts) -keymap.set('n', '-', '', opts) - --- map \ to prev finding -keymap.set({"n", "v"}, [[\]], ',', opts) - --- Select all -keymap.set('n', '', 'ggG', opts) - - --- Scroll tabs -keymap.set("n", '', vim.cmd.tabnext, opts) -keymap.set("n", '', vim.cmd.tabprev, opts) - - --- Kill current buffer -keymap.set("n", 'qq', ':bd!', opts) --- Quick exit without saving -keymap.set("n", 'qa', ':qa!', opts) - - -keymap.set("n", 'eh', ':set list!', opts) -vim.opt.listchars=[[tab:→\ ,eol:↵,trail:·,extends:↷,precedes:↶]] - - --- Tags panel (ctags required) -keymap.set("n", 't', ':TagbarToggle', opts) - - --- Telescope -keymap.set("n", 'ff', 'Telescope find_files', opts) -keymap.set("n", 'fg', 'Telescope live_grep', opts) - - --- Expand %% to dirname of current file in command line -keymap.set("c", '%%', [[getcmdtype() == ':' ? expand('%:h').'/' : '%%']], {expr = true}) - - --- Save from root -vim.api.nvim_create_user_command('Sw', [[execute 'silent! write !SUDO_ASKPASS=$(which vim_askpass_helper) sudo -A tee % >/dev/null']], {}) - - - -function create_autocmd_filetype(func) - local create_autocmd = vim.api.nvim_create_autocmd - - create_autocmd("BufEnter", - { pattern = '*', callback = func} - ) -end - -function set_keymap_run_script(cmd) - local cmd_string = string.format([[:tabnew %% :terminal %s %% :set nocursorline number norelativenumber G ]], cmd) - keymap.set("n", "rr", cmd_string, opts) -end - -function create_function_create_autocmd_filetype(ft, cmd) - return function() - if vim.bo.filetype == ft then - set_keymap_run_script(cmd) - end - end -end - -function create_function_create_autocmd_filename(fn, cmd) - return function() - if vim.fn.expand('%:t') == fn then - set_keymap_run_script(cmd) - end - end -end - - --- Run current file by type -create_autocmd_filetype(create_function_create_autocmd_filetype('python', 'python3')) -create_autocmd_filetype(create_function_create_autocmd_filetype('go', 'go run')) -create_autocmd_filetype(create_function_create_autocmd_filetype('rust', 'cargo run')) -create_autocmd_filetype(create_function_create_autocmd_filetype('markdown', 'glow')) - -create_autocmd_filetype(create_function_create_autocmd_filename('manpage', 'man -P cat -l')) - - - --- Toggle line number style -vim.opt.number = true -vim.opt.relativenumber = true - - -function toggle_number_style() - - local number = vim.opt.number["_value"] - local relativenumber = vim.opt.relativenumber["_value"] - - if (not number) and (not relativenumber) then - vim.opt.number = true - vim.opt.relativenumber = false - elseif (number) and (not relativenumber) then - vim.opt.number = false - vim.opt.relativenumber = true - elseif (not number) and (relativenumber) then - vim.opt.number = true - vim.opt.relativenumber = true - elseif (number) and (relativenumber) then - vim.opt.number = false - vim.opt.relativenumber = false - end -end - --- Toggle line number style -keymap.set('n', 'l', create_function_tabdo('lua toggle_number_style()'), opts) diff --git a/sub/nvim/lua/base/options.lua b/sub/nvim/lua/base/options.lua index cb8e9fd..f81ed28 100644 --- a/sub/nvim/lua/base/options.lua +++ b/sub/nvim/lua/base/options.lua @@ -1,64 +1,74 @@ +local opt = vim.opt -vim.opt.ruler = true +opt.ruler = true +opt.encoding = 'utf-8' +opt.fileencoding = 'utf-8' + +opt.number = true +opt.relativenumber = true + +opt.clipboard:append { 'unnamedplus' } +opt.shell = 'bash' + +opt.ttimeoutlen = 0 + +vim.cmd([[ + filetype plugin indent on +]]) + +vim.cmd([[ + syntax enable +]]) + +opt.compatible = false + +opt.hidden = true + +opt.expandtab = true +opt.smarttab = true +opt.tabstop = 4 -vim.scriptencoding = 'utf-8' -vim.opt.encoding = 'utf-8' -vim.opt.fileencoding = 'utf-8' +opt.cursorline = true +opt.softtabstop = 4 +opt.shiftwidth = 4 +opt.autoindent = true +opt.smartindent = true +opt.wrap = false -vim.opt.clipboard:append { 'unnamedplus' } -vim.opt.shell = 'bash' - -vim.opt.ttimeoutlen = 0 - -vim.opt.compatible = false - -vim.opt.hidden = true - -vim.opt.expandtab = true -vim.opt.smarttab = true -vim.opt.tabstop = 4 +opt.ttyfast = true +opt.autoread = true -vim.opt.softtabstop = 4 -vim.opt.shiftwidth = 4 -vim.opt.autoindent = true -vim.opt.smartindent = true -vim.opt.wrap = false +opt.errorbells = false +opt.visualbell = false +opt.showcmd = true +opt.showtabline = 2 -vim.opt.ttyfast = true -vim.opt.autoread = true +opt.smartcase = true -- if search line hasn`t Upper case chars - ignore case search, else case-sensivity search +opt.incsearch = true + +opt.mousehide = true +opt.mouse = 'a' + +opt.colorcolumn = '81' +opt.scrolloff = 7 -vim.opt.errorbells = false -vim.opt.visualbell = false -vim.opt.showcmd = true -vim.opt.showtabline = 2 +opt.termguicolors = true +opt.background = 'dark' -vim.opt.smartcase = true -- if search line hasn`t Upper case chars - ignore case search, else case-sensivity search -vim.opt.incsearch = true - -vim.opt.mousehide = true -vim.opt.mouse = 'a' - -vim.opt.colorcolumn = '81' -vim.opt.scrolloff = 7 - - -vim.opt.termguicolors = true -vim.opt.background = 'dark' - -vim.opt.backup = true -vim.opt.swapfile = false -vim.opt.undofile = true -vim.opt.history = 1000 -vim.opt.undoreload = 1000 +opt.backup = true +opt.swapfile = false +opt.undofile = true +opt.history = 1000 +opt.undoreload = 1000 local prefix = vim.fn.expand("~/.cache/nvim/tmp") -vim.opt.undodir = { prefix .. "/undo//" } -vim.opt.backupdir = { prefix .. "/backup//" } -vim.opt.directory = { prefix .. "/swp//" } +opt.undodir = { prefix .. "/undo//" } +opt.backupdir = { prefix .. "/backup//" } +opt.directory = { prefix .. "/swp//" } function makeDirIfNoExists(path) @@ -69,13 +79,13 @@ function makeDirIfNoExists(path) end -- make this dirs if no exists previously -makeDirIfNoExists(vim.opt.undodir) -makeDirIfNoExists(vim.opt.backupdir) -makeDirIfNoExists(vim.opt.directory) +makeDirIfNoExists(opt.undodir) +makeDirIfNoExists(opt.backupdir) +makeDirIfNoExists(opt.directory) -vim.opt.ffs = 'unix,mac' +opt.ffs = 'unix,mac' -vim.opt.path:append { '**' } -- Finding files - Search down into subfolders +opt.path:append { '**' } -- Finding files - Search down into subfolders vim.cmd([[