当前位置:   article > 正文

Ubuntu配置NeoVim (小白可进)_ubuntu安装neovim

ubuntu安装neovim

NeoVim配置

NeoVim是什么?

不百度,只说我的理解:是一个 个性化极强的, 上手难度极大的, 不太适配windows的 文本编辑器

虽然说是文本编辑器,但其具有非常活跃的社区去开发插件,于是其插件非常多,也非常强大

系统环境

Ubuntu 22.0.4

安装GCC和CMake

安装GCC

sudo apt update
sudo apt install build-essential
sudo apt-get install manpages-dev
  • 1
  • 2
  • 3

测试

gcc --version
  • 1

安装CMake

首先卸载掉默认的CMake版本

sudo apt remove --purge --auto-remove cmake
  • 1

下载另一个库

sudo apt update && \
sudo apt install -y software-properties-common lsb-release && \
sudo apt clean all
  • 1
  • 2
  • 3

然后获得Kitware的key

wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
  • 1

将Kitware’s repository 加入到我们的库中

sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main"
  • 1

开始下载

sudo apt update
sudo apt install kitware-archive-keyring
sudo rm /etc/apt/trusted.gpg.d/kitware.gpg
  • 1
  • 2
  • 3

复制key

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6AF7F09730B3F0A4
  • 1

下载CMake

sudo apt update
sudo apt install cmake
  • 1
  • 2

测试

cmake --version
  • 1

下载一些必要的软件

sudo apt-get install ninja-build gettext libtool-bin cmake g++ pkg-config unzip curl
  • 1

安装NeoVim

首先从github上下载代码

git clone https://github.com/neovim/neovim
  • 1

然后再目录里跑CMake

cd neovim && make CMAKE_BUILD_TYPE=RelWithDebInfo
  • 1

获得Stable版本

git checkout stable
  • 1

安装

sudo make install
  • 1

在这里插入图片描述

授权NeoVim

如果 nvim 命令不可用,需要去改权限

cd /usr/local/bin
sudo chmod u+x nvim

  • 1
  • 2
  • 3

配置插件

配置文件在 ~/.config/nvim 里,但默认应该是没有这个文件夹

cd ~/.config
mkdir nvim
touch init.lua
  • 1
  • 2
  • 3

我的目录是这样的

nvim
    ├── init.lua
    ├── lua
    │   └── v9
    │       ├── keymaps.lua
    │       ├── lsp
    │       │   ├── cmp.lua
    │       │   ├── handlers.lua
    │       │   └── init.lua
    │       ├── plugin_config
    │       │   ├── bufferline.lua
    │       │   ├── gruvbox.lua
    │       │   ├── lualine.lua
    │       │   └── nvim-tree.lua
    │       └── plugins.lua
    └── plugin
        └── packer_compiled.lua
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

keymaps和plugins

首先需要创建这两个文件

keymaps

local set=vim.opt

vim.wo.number=true

set.backspace='2'
set.showcmd=true
set.laststatus=2
set.autowrite=true
set.autoread=true

set.tabstop=2
set.shiftwidth=2
set.shiftround=true
set.expandtab=true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

init.lua 中:

require("v9.keymaps")
  • 1

需要执行 :source % 来生效

之后在 plugins.lua 中:

local ensure_packer = function()
  local fn = vim.fn
  local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
  if fn.empty(fn.glob(install_path)) > 0 then
    fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
    vim.cmd [[packadd packer.nvim]]
    return true
  end
  return false
end

local packer_bootstrap = ensure_packer()

return require('packer').startup(function(use)

  use 'wbthomason/packer.nvim'

  use 'ellisonleao/gruvbox.nvim'
  use 'nvim-tree/nvim-tree.lua'
  use 'neovim/nvim-lspconfig'
  use 'williamboman/mason.nvim'
  use 'williamboman/mason-lspconfig.nvim'
  use 'kosayoda/nvim-lightbulb'
  use 'ray-x/lsp_signature.nvim'
  use 'rmagatti/alternate-toggler'
  use 'windwp/nvim-autopairs'
  use 'mg979/vim-visual-multi'
  use 'gcmt/wildfire.vim'
  use 'tpope/vim-surround'
  
  use{
      'nvim-lualine/lualine.nvim',
      requires = {
        'kyazdani42/nvim-web-devicons',
        opt = true
      }
    }

  use 'akinsho/bufferline.nvim'

  use {
  'nvim-telescope/telescope.nvim',tag = '0.1.1',
  requires ={{'nvim-lua/plenary.nvim'}}
  }

  use 'hrsh7th/cmp-nvim-lsp'
  use 'hrsh7th/cmp-buffer'
  use 'hrsh7th/cmp-path'
  use 'hrsh7th/cmp-cmdline'
  use 'hrsh7th/nvim-cmp'
  use 'hrsh7th/cmp-nvim-lua'
  use 'L3MON4D3/LuaSnip'
  use 'saadparwaiz1/cmp_luasnip'
  use 'onsails/lspkind-nvim'
  use 'jose-elias-alvarez/null-ls.nvim'
  use 'terrortylor/nvim-comment'

  if packer_bootstrap then
    require('packer').sync()
  end
end)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

这里面都是我安装的插件,想要改的,可以在进行修改

每次配置完插件都需要 :PackerSync 进行安装/升级

init.lua 中:

require("v9.keymaps")
require("v9.plugins")
  • 1
  • 2

nvim-tree

vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1

require("nvim-tree").setup({
  view = {
    adaptive_size = true,
    signcolumn = "yes"
  }
})

vim.keymap.set('n', '<c-b>', ':NvimTreeFindFileToggle<CR>')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

lualine

require('lualine').setup {
  options = {
    icons_enabled = true,
    theme = 'dracula',
  },
  sections = {
    lualine_a = {
      {
        'filename',
        path = 1,
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

gruvbox

vim.o.termguicolors = true
vim.cmd [[ colorscheme gruvbox ]]
  • 1
  • 2

buffline

local status, bufferline = pcall(require, "bufferline")
if not status then
    vim.notify("没有找到 bufferline")
  return
end
 
bufferline.setup({
	options = {
    close_command = "bdelete! %d",       -- 点击关闭按钮关闭
		right_mouse_command = "bdelete! %d", -- 右键点击关闭
		indicator = {
			icon = '▎', -- 分割线
			style = 'underline',
		},
		buffer_close_icon = '
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/216714
推荐阅读
相关标签