0%

Neovim

vim

Neovim 安装

Linux

对于 Ubuntu,安装更新版本的 Neovim

  1. 添加源

    1
    sudo add-apt-repository ppa:neovim-ppa/unstable
  2. 更新源

    1
    sudo apt-get update
  3. 安装 Neovim

    1
    sudo apt-get install neovim

安装后输入 nvim 即可进入

如果依旧想要输入 vim 进入,可使用链接替换

1
alias vim='nvim'

Mac

对于 mac,

1
brew install neovim

~/.bash_profile 中添加

1
alias vim='nvim'
1
source ~/.bash_profile

Vim 模式

普通模式

打开 Vim 直接进入的就是普通模式,主要用于浏览文件、执行复制粘贴删除等的操作

输入模式

普通模式下输入 i 进入输入模式,输入 Esc 退出输入模式回到普通模式

命令模式

普通模式下输入 : 进入命令模式

可视模式

普通模式下输入 v 进入可视模式,用于选中

普通模式

光标移动

可以使用方向键进行移动,但更多地使用 hjkl 移动光标

快捷键 指令
h 左移
j 下移
k 上移
l 右移
4h 左移4格
w (word) 跳转到下一个单词的开头
b (beginning) 跳转到前一个单词的开头
gg 跳转到文件开头
G 跳转到文件结尾
Ctrl+u (PgUp) 向上翻页
Ctrl+d (PgDown) 向下翻页
fr (find r) 移动到下一个 r

复制粘贴

复制键 y (yank),粘贴键 p (paste)

快捷键 指令
yaw (yank all word) 复制整个单词
y4j 复制本行以及下4行(一共5行)
yfr 复制到 r 为止的内容(包括 r
p 粘贴

删除

删除键 d (delete),操作与复制同理

改变

改变键 c (change),操作与复制同理,删除选中内容并进入输入模式

查找

快捷键 指令
/ 从上往下查找
? 从下往上查找
n 下一个
N 上一个

命令模式

命令

:h <plugin name> 查看插件说明书

窗口

快捷键 指令
:b<N> 跳到第 N 个 Tab
:b <file name> 跳到相应文件名的 Tab
:bn 跳到上一个的 Tab
:bp 跳到下一个的 Tab

快捷键

快捷键 指令
<Ctrl-w> + h/j/k/l 切换聚焦窗口
<Ctrl-w> + w 切换聚焦到下一个窗口

LazyVim

http://www.lazyvim.org

【【教完必会】别再说配置neovim麻烦了!给我1分钟就够!— Lazyvim教程】https://www.bilibili.com/video/BV1ds4y1P7Rs?vd_source=c44e01a0c037484413d7d1b782385f3e

插件

常用操作

光标跳转

  • 跳转到周围特定字母
    1. s 进入查找状态
    2. 输入待查找字母,标亮周围该字母,并附上标签
    3. 输入标签,跳转到特定位置

目录树

侧边栏的目录树由 NeoTree 插件驱动

  • 显示/隐藏侧边栏 Space -> e
  • 查看快捷键 ?

终端

  • 唤出/隐藏终端:ctrl + \

Buffer

  • 切换下一个 Buffer:SHIFT + l
  • 切换上一个 Buffer:SHIFT + h

LSP

安装

  1. 输入:Mason 进入 Mason

LSP

Lazyvim 默认配置 LSP

Mason

Mason 用来做 LSP 的包管理

进入 Mason 管理窗口

有两种方法:

  • :Mason
  • leader -> c -> m

在这个窗口适用文件的各种查找操作

image-20241115215614647

搜索包

可以通过 Language Filter 过滤出指定语言:CTRL + f

image-20241115220223740

或者和文件一样,通过 / 或其他搜索

安装包

移动到相应包,按 i

卸载包

移动到相应包,按 X

操作

跳转查看

  • 查看定义:g —> d
  • 跳转到定义:g —> D
  • 查看引用:g —> r
  • 查看详情:K

查找替换

  • 变量重命名:Leader —> c —> r

配置

新建 nvim 的配置文件夹 ~/.config/nvim ,结构如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
├── init.vim                              入口文件,这里负责加载所有lua文件夹里的文件
└── lua 所有 lua 配置文件
├── basic.lua Neovim 的基础配置
├── keybindings.lua 快捷键配置
├── lsp 内置 LSP (Language Server Protocol) 配置
│ ├── diagnostic_signs.lua
│ ├── language_servers.lua
│ └── nvim-cmp-config.lua
├── plugin-config 各个插件配置在这个文件夹
│ ├── bufferline.lua
│ ├── comment.lua
│ ├── nvim-autopairs.lua
│ ├── nvim-colorizer.lua
│ ├── nvim-tree.lua
│ ├── nvim-treesitter.lua
│ ├── rust-tools.lua
│ ├── surround.lua
│ ├── telescope.lua
│ └── which-key.lua
└── plugins.lua 插件安装管理

nvim 在下次启动时会自动查看其中的内容进行更新,当然也可以在编辑后直接使用 :so 命令当重新载入。

~/.config/nvim/init.lua 作为入口,lua 文件夹放置不同的模块

插件

使用插件管理器 lazy.vim 进行插件管理

安装 lazyvim

  • 新建 lua/lazynvim-init.lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
    if not vim.loop.fs_stat(lazypath) then
    vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
    })
    end
    vim.opt.rtp:prepend(lazypath)
    require("lazy").setup({})
  • init.lua

    1
    require("lazynvim-init")
  • 如此后,便可输入 :Lazy 打开

安装插件

以安装 nvim-tree 为例

  • lua 文件夹下新建 plugins 目录

  • lazynvim-init.lua 中的 setup 中将 plugins 目录添加为参数

    1
    require("lazy").setup("plugins")
  • lua/plugins 下添加文件 plugin-nvim-tree.lua

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    return {
    {
    "nvim-tree/nvim-tree.lua",
    version = "*",
    dependencies = {"nvim-tree/nvim-web-devicons"},
    config = function()
    require("nvim-tree").setup {}
    end
    }
    }
    • "nvim-tree/nvim-tree.lua":插件在 github 上的短 url

    • version:下载的版本,* 表示自动更新最新版本

    • dependencies = {"nvim-tree/nvim-web-devicons"}:依赖插件

    • config = ... ...:当插件启动加载以后,则会执行该 config 的代码

  • 重新打开 vim 即可自动加载插件

常用插件

主题插件 TokyoNight

1
2
3
4
5
6
7
8
9
return {
{
"folke/tokyonight.nvim",
version = "*",
config = function()
require("tokyonight").setup {}
end
}
}

文件树插件 nvim-tree

  • 下载 nerd fornt 字体

    Linux

    1
    wget -c https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/DejaVuSansMono.zip
    1
    sudo unzip DejaVuSansMono.zip -d /usr/share/fonts/DejaVuSansMono
    1
    2
    3
    4
    cd /usr/share/fonts/SourceCodePro
    sudo mkfontscale # 生成核心字体信息
    sudo mkfontdir # 生成字体文件夹
    sudo fc-cache -fv # 刷新系统字体缓存

    Mac

    https://joit.info/essay/a5f51f2cbbb240d7a992d481fc09f7e0

    下载字体后在配置里配置 Terminal 字体

    1
    2
    brew tap homebrew/cask-fonts
    brew install --cask font-hack-nerd-font
1
2
3
4
5
6
7
8
9
10
return {
{
"nvim-tree/nvim-tree.lua",
version = "*",
dependencies = {"nvim-tree/nvim-web-devicons"},
config = function()
require("nvim-tree").setup {}
end
}
}

相关命令:

快捷键 指令
g? 查看帮助
<C-k> 查看信息
r 重命名
o 开文件
a 创建新文件
d 删除文件
c 复制文件
p 粘贴文件
x 剪切文件
J 跳到顶部的文件/文件夹
K 跳到底部的文件/文件夹
< / > 跳到上一个/下一个兄弟文件/文件夹
y 复制文件名
Y 复制相对地址
gy 复制绝对地址

状态栏插件 lualine.nvim

1
2
3
4
5
6
7
8
9
return {
{
"nvim-lualine/lualine.nvim",
version = "*",
config = function()
require("lualine").setup {}
end
}
}

页插件 bufferline.nvim

1
2
3
4
5
6
7
8
9
10
return {
{
"akinsho/bufferline.nvim",
version = "*",
config = function()
vim.opt.termguicolors = true
require("bufferline").setup{}
end
}
}

参考