使用容器启动 Neovim 并自启动 Neovim 和 NvimTree

我上一篇文章《neovim 安装使用备忘》已经有点老了,这会儿 NvChad 已经更新到2.5了。按照之前的办法已经无法安装了。

1. 编写 Dockerfile

FROM alpine:latest

# 设置工作目录
WORKDIR /root

# 安装必要的软件包:git、nodejs、neovim 等
RUN apk add --no-cache git nodejs neovim ripgrep build-base wget && \
    git clone https://github.com/NvChad/starter ~/.config/nvim && \
    nvim --headless +PlugInstall +qall

CMD ["nvim"]
  • 自动安装插件:使用 nvim –headless +PlugInstall +qall 来在容器构建过程中自动安装 Neovim 插件。–headless 使得 Neovim 在没有 GUI 的情况下运行,而 +PlugInstall +qall 则是自动安装插件并退出 Neovim。

2. 构建镜像

docker build -t nvchad:v20241223 .

构建完成后,Docker 会生成一个镜像,可以用于后续的容器启动。

3. 使用 docker-compose

version: '3.2'

services:
  nvChad:
    image: nvchad:v20241223
    network_mode: bridge
    container_name: nvchad
    volumes:
      - /root/Workspace:/root/Workspace
    command: nvim +NvimTreeToggle
    working_dir: /root/Workspace
    tty: true
    stdin_open: true
  • command: nvim +NvimTreeToggle:每次容器启动时,nvim 会自动执行 :NvimTreeToggle,打开 NvimTree 文件树视图。

image-20241223午後64745320

image-20241223午後65009104

4. 通过 docker exec 进入容器时自动打开 Neovim

docker exec -it nvchad nvim +NvimTreeToggle

nvim +NvimTreeToggle:容器启动时,nvim 会自动执行 :NvimTreeToggle,打开 NvimTree 文件树视图。

5. 后续

push 镜像到docker.io了:

docker tag nvchad:v20241223 kelvinblood/nvchad:v20241223
docker push kelvinblood/nvchad:v20241223

6. 快速打开容器

基于步骤4,我写了一个 alias,方便在目录下快速进入容器中,它需要预设该容器的名字为 文件夹名+nvchad

dneo() {
  # 如果没有参数,获取当前文件夹名并追加 "-nvchad"
  if [ -z "$1" ]; then
    local folder_name=$(basename "$PWD")
    local container_name="${folder_name}-nvchad"
    docker exec -it "$container_name" nvim +NvimTreeToggle
  else
    docker exec -it "$1" nvim +NvimTreeToggle
  fi
}

例如我在文件夹 workspace下,此时有一个 workspace-nvchad 的容器,输入 dneo 命令即可快速进入。

7. 同步更新组件+修改落盘

image-20241224午後30929145

参考资料


Vim 禁用自动换行与粘贴模式 新年快乐~