diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 0545a4b..d3c395b 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,3 +1,4 @@ require("core") require("plugins") require("lsp") +require("mappings") diff --git a/.config/nvim/lua/configs/plugins/airline.lua b/.config/nvim/lua/configs/plugins/airline.lua deleted file mode 100644 index 02fb200..0000000 --- a/.config/nvim/lua/configs/plugins/airline.lua +++ /dev/null @@ -1 +0,0 @@ -return { "vim-airline/vim-airline" } diff --git a/.config/nvim/lua/configs/plugins/langmapper.lua b/.config/nvim/lua/configs/plugins/langmapper.lua deleted file mode 100644 index a9d1fd6..0000000 --- a/.config/nvim/lua/configs/plugins/langmapper.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - 'Wansmer/langmapper.nvim', - lazy = false, - priority = 1, - config = { - hack_keymap = true, - } -} diff --git a/.config/nvim/lua/configs/plugins/lightline.lua b/.config/nvim/lua/configs/plugins/lightline.lua new file mode 100644 index 0000000..a8b6585 --- /dev/null +++ b/.config/nvim/lua/configs/plugins/lightline.lua @@ -0,0 +1,11 @@ +return { + "itchyny/lightline.vim", + config = function() + vim.g.lightline = { + colorscheme = "one", + enable = { + tabline = 0 + } + } + end +} diff --git a/.config/nvim/lua/configs/plugins/wakatime.lua b/.config/nvim/lua/configs/plugins/wakatime.lua deleted file mode 100644 index 56dcc41..0000000 --- a/.config/nvim/lua/configs/plugins/wakatime.lua +++ /dev/null @@ -1,4 +0,0 @@ -return { - "wakatime/vim-wakatime", - lazy = false, -} diff --git a/.config/nvim/lua/core.lua b/.config/nvim/lua/core.lua index e6ca263..192d6f0 100644 --- a/.config/nvim/lua/core.lua +++ b/.config/nvim/lua/core.lua @@ -17,17 +17,21 @@ vim.opt.syntax = on -- Enable undo after closing vim vim.opt.undofile = true --- Make vim work with russian layout -local function escape(str) - local escape_chars = [[;,."|\]] - return vim.fn.escape(str, escape_chars) +-- vim.g.lightline = { colorscheme = "one" } + +-- Autostart nvim-tree +local function open_nvim_tree(data) + local real_file = vim.fn.filereadable(data.file) == 1 + local no_name = data.file == "" and vim.bo[data.buf].buftype == "" + local directory = vim.fn.isdirectory(data.file) == 1 + + if real_file or no_name then + require("nvim-tree.api").tree.toggle({ focus = false, find_file = true, }) + elseif directory then + vim.cmd.enew() + vim.cmd.cd(data.file) + require("nvim-tree.api").tree.open() + end end +vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) -local en = [[`qwertyuiop[]asdfghjkl;'zxcvbnm]] local ru = [[ёйцукенгшщзхъфывапролджэячсмить]] -local en_shift = [[~QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>]] -local ru_shift = [[ËЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]] - -vim.opt.langmap = vim.fn.join({ - escape(ru_shift) .. ';' .. escape(en_shift), - escape(ru) .. ';' .. escape(en), -}, ',') diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua index a6ba2e9..b59dc38 100644 --- a/.config/nvim/lua/lsp.lua +++ b/.config/nvim/lua/lsp.lua @@ -1,9 +1,3 @@ --- require("utils").load_servers{ --- require("configs.lsp.pylsp"), --- require("configs.lsp.clangd"), --- require("configs.lsp.bash"), --- } --- local lspconfig = require("lspconfig") local custom_attach = function(client, bufnr) diff --git a/.config/nvim/lua/mappings.lua b/.config/nvim/lua/mappings.lua new file mode 100644 index 0000000..25e77d7 --- /dev/null +++ b/.config/nvim/lua/mappings.lua @@ -0,0 +1,78 @@ +local map = vim.keymap.set + +-- Remap leader +vim.g.mapleader = " " +map('n', '', '') + +-- Buffer movements +map("n", "", ":bp") +map("n", "", ":bn") + +-- Make use of Shift+hjkl +map("n", "H", "^") +map("n", "L", "$") +map("n", "", "}") +map("n", "", "{") + +-- Leader remap +map("n", "w", ":write") +map("n", "e", ":NvimTreeFocus") + +-- Split movements +map("n", "h", "h") +map("n", "j", "j") +map("n", "k", "k") +map("n", "l", "l") + +-- Remap comments +map("n", "", require("Comment.api").toggle.linewise.current) +map("i", "", require("Comment.api").toggle.linewise.current) +map("x", "", function() -- some evil trickery with comment plugin + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('', true, false, true), 'nx', false) + require("Comment.api").toggle.linewise(vim.fn.visualmode()) + end +) + +-- Close buffer and nvim +local close_buffer_and_nvimtree = function() + local try_quit = function(command) + local success, errorMsg = pcall(vim.api.nvim_command, command) + if not success then + print("Failed to quit: " .. errorMsg) + end + end + + local tree = require("nvim-tree.api").tree + local buffer_count = #vim.fn.filter(vim.fn.range(1, vim.fn.bufnr '$'), 'buflisted(v:val)') + + if buffer_count == 0 then + try_quit("quit") + -- elseif buffer_count == 1 then + -- vim.cmd("e .") + -- try_quit("bd") + -- vim.cmd("NvimTreeClose") + else + tree.toggle({ focus = false }) + try_quit("bd") + tree.toggle({ focus = false }) + end + -- if buffer_count == 1 and #vim.api.nvim_list_wins() == 1 then + -- try_quit("quit") + -- end +end + +-- Leader remapping +map("n", "q", function() close_buffer_and_nvimtree() end) +map("n", "Q", ":%bd | quit") +map("n", "", ":%bd! | quit!") +map("n", "", ":%bd! | quit!") + +map("v", "y", '"+y') +map("n", "y", '"+yy') + +map({ "n", "v" }, "p", '"+p') +map({ "n", "v" }, "P", '"+P') + +-- Toggle tree +map("n", "", function() require("nvim-tree.api").tree.toggle({ focus=false }) end) + diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua index 88386d9..e1e21c7 100644 --- a/.config/nvim/lua/plugins.lua +++ b/.config/nvim/lua/plugins.lua @@ -3,12 +3,11 @@ require("utils").init_lazy() require("lazy").setup{ require("configs.plugins.bufferline"), require("configs.plugins.comment"), + require("configs.plugins.devicons"), require("configs.plugins.lastplace"), + require("configs.plugins.lightline"), + require("configs.plugins.lspconfig"), require("configs.plugins.nvim-tree"), require("configs.plugins.onedark"), - require("configs.plugins.airline"), - require("configs.plugins.langmapper"), - require("configs.plugins.devicons"), require("configs.plugins.treesitter"), - require("configs.plugins.lspconfig"), }