前言
Nvim与Tmux在github上已有很多成熟的配置方案,本方案以较小的配置量来简单的配置Nvim与Tmux。我的配置文件https://github.com/Mel-SRK/My_config
REDME涵盖安装
预览
Neovim
基础
保证neovim已在本地安装如(以arch为例)
sudo pacman -S neovim
默认配置位置~/.config/nvim/
使用插件管理器为packer.nvim
实现功能/优化主要有:
- 快捷的保存退出
- 文件目录树
- 标签页
- 与系统共用剪切板
- 保存光标位置在下次打开文件时自动跳转
- 基于coc的自动补全
- 基于lsp的代码高亮显示
配置
基础配置
init.lua
为默认配置文件,使用lua可调用其他文件所以init.lua
内的配置并不多
--加载文件
require('options')
require('keymaps')
require('plugins')
require('treesitter')
require('coc')
require('lualine').setup()
require('colors')
require('tree')
--配置
--bufferline
vim.opt.termguicolors = true
require("bufferline").setup{
options = {
mode = "buffer",
-- 显示id
number = "ordinal"
}
}
加载文件区调用的是lua文件夹内的lua脚本
options内是基础配置
keymaps内为键位映射
plugins内为插件管理的配置,插件的安装以及更新需要此配置文件
treesitter为高亮渲染插件配置
coc为coc配置,在nvim文件下其实还有coc-settings.json
lualine为底栏相关配置
colors为主题配色相关配置
tree为文件树插件的配置信息
bufferline的配置则是标签页的插件加载
以上插件配置详尽可阅读相关wiki,均有github页面
键位
在keymaps.lua内可见
-- define common options
local opts = {
noremap = true, -- non-recursive
silent = true, -- do not show message
}
-----------------
-- Normal mode --
-----------------
-- Hint: see `:h vim.map.set()`
-- Better window navigation
vim.keymap.set('n', '<C-h>', '<C-w>h', opts)
vim.keymap.set('n', '<C-j>', '<C-w>j', opts)
vim.keymap.set('n', '<C-k>', '<C-w>k', opts)
vim.keymap.set('n', '<C-l>', '<C-w>l', opts)
-- Resize with arrows
-- delta: 2 lines
vim.keymap.set('n', '<C-Up>', ':resize -2<CR>', opts)
vim.keymap.set('n', '<C-Down>', ':resize +2<CR>', opts)
vim.keymap.set('n', '<C-Left>', ':vertical resize -2<CR>', opts)
vim.keymap.set('n', '<C-Right>', ':vertical resize +2<CR>', opts)
-----------------
-- Visual mode --
-----------------
-- Hint: start visual mode with the same area as the previous area and the same mode
vim.keymap.set('v', '<', '<gv', opts)
vim.keymap.set('v', '>', '>gv', opts)
-- Nvim Tree
vim.keymap.set('n','t',':NvimTreeFocus<CR>',opts)
vim.keymap.set('n','T',':NvimTreeToggle<CR>',opts)
-- 快速在buffer间跳转
vim.api.nvim_set_keymap("n", "1", ":BufferLineGoToBuffer 1<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "2", ":BufferLineGoToBuffer 2<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "3", ":BufferLineGoToBuffer 3<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "4", ":BufferLineGoToBuffer 4<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "5", ":BufferLineGoToBuffer 5<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "6", ":BufferLineGoToBuffer 6<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "7", ":BufferLineGoToBuffer 7<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "8", ":BufferLineGoToBuffer 8<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "9", ":BufferLineGoToBuffer 9<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>bg", ":BufferLinePick", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "gt", ":BufferLineCycleNext<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "gT", ":BufferLineCyclePrev<CR>", {noremap = true, silent = true})
--q键退出
vim.keymap.set('n','q',':q<CR>',opts)
vim.keymap.set('n','w',':w<CR>',opts)
对一些插件的功能进行快捷键映射,并且添加了简单的去阴间化配置:
在有标签页且非编辑模式下可直接使用数字键在多个标签页间跳跃,使用t
打开和回到目录树T
打开和关闭目录树,q
映射为:q
,w
为:w
键位配置调用vim.keymap.set
函数,在第二个单引内配置键位,在第三个单引内配置映射功能即可,其中<CR>
为回车操作,Ctrl+x可写作<C-x>
Tmux
tmux默认配置应当放到主目录下,但是为了统一管理我把他们也放到了.config
内,然后使用ln
创建连接
ln -s ~/.config/tmux/.tmux.conf ~/.tmux.conf
ln -s ~/.config/tmux/.tmux.conf.local ~/.tmux.conf.local
我的配置只是把前缀改为了C-x来去阴间化,其他一概不动,说好听些是为了上手服务器和没有自己配置的机器时可以记得默认快捷键,实际情况是懒得改了,一定程度已经适应了。
默认前置快捷键为:Ctrl-x
新建窗口:Ctrl-x+c
横向分割窗口:Ctrl-x±
纵向分割窗口:Ctrl-x+—
默认开启鼠标支持,鼠标拖动选中文本后松开即可复制至系统剪切板
实现再次打开终端继续使用上次的shell,可将虚拟终端程序的启动shell改为tmux a
(图片以kde的Konsole为例)
随后将My_config/tmux/tmux.sh
加入开机自启(可自行配置)