使用容器启动 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 禁用自动换行与粘贴模式

我的 Vim 编辑器用了很多的配置,粘贴代码时,默认的自动换行或自动缩进功能会导致内容显示异常。以下是解决方法。

启用粘贴模式

粘贴模式会临时禁用缩进与换行规则,仅适用于当前会话。

:set paste

关闭 Vim 后,新的会话会自动恢复为非粘贴模式,无需手动设置,也可以手动关闭粘贴模式:

:set nopaste

其他:禁用自动换行

这部分内容是扩展的知识,记录一下。

默认情况下,Vim 可能会开启自动换行(wrap)。可以通过以下命令禁用:

:set nowrap
:set textwidth=0
:set wrapmargin=0
:set formatoptions-=t

快捷键配置

为了更高效地切换,可以在 ~/.vimrc 中为 paste 和 nopaste 设置快捷键:

nnoremap <F2> :set paste<CR>
nnoremap <F3> :set nopaste<CR>

这样,按 F2 可以进入粘贴模式,按 F3 退出粘贴模式,方便快捷。


卸载阿里云盾(2024版)

2017年的机器,今年不续了,开了新的机器,步骤稍微有点变了记录一下。

  1. 先在阿里云云安全中心控制台禁用阿里云盾的自我保护功能,然后再进行卸载操作。

    云安全中心->资产中心->主机资产->防御状态->客户端自保护(关闭)

    不关闭的话其实文件会有 -e 的属性,就没有办法快速删除:

    lsattr /etc/systemd/system/aegis.service
    
  2. 官方卸载脚本:

     wget http://update.aegis.aliyun.com/download/uninstall.sh
     chmod +x uninstall.sh
     ./uninstall.sh
    
     wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh
     chmod +x quartz_uninstall.sh
     ./quartz_uninstall.sh
    

参考资料


macOS 使用 scrcpy 实现控制和投屏 Android 手机

安装

image-20241206午後44234742

brew install scrcpy
brew install --cask android-platform-tools

安装之后,android手机启用“开发者选项”和“USB调试”之后,就可以投屏到macOS上了,如下图:

image-20241206午後45810638

scrcpy --select-usb -m 1024  -b 20M --no-audio --max-fps=15 --always-on-top  --turn-screen-off

命令参考

1、连接手机

通过 USB 连接,并且只有一台手机的时候:

scrcpy --select-usb

通过 WiFi 连接,并且只有一台手机的时候:

scrcpy --select-tcpip

也可以指定 IP 地址和端口:

scrcpy --select-tcpip=http://192.168.1.1:5555/

2、设置投屏分辨率

分辨率设置稍微小一点,可以提高性能,使投屏更加流畅。

scrcpy -m 1024

3、设置比特率

比特率设置高一点,视频会更加流畅一点,默认的 8Mbps。

scrcpy -b 20M

4、设置帧率

scrcpy --max-fps=15

5、设置编码格式

编码格式有三种,分别是 h264(默认格式)、h265 和 av1,h265 可以提高视频质量,h264 可以提供更低的延迟,av1 格式目前在手机上还不是很普遍。

scrcpy --video-codec=h264

6、只投屏声音,不投图像

scrcpy --no-video

7、只投图像,不投声音

scrcpy --no-audio

8、获取麦克风的声音

默认情况下,投屏的是手机输出的声音,我们要可以投屏获取麦克风的声音。

scrcpy --audio-source=mic

9、录制屏幕

scrcpy -r record-file.mp4

10、投屏窗口置顶

scrcpy --always-on-top

11、投屏时关闭手机屏幕

scrcpy --turn-screen-off

更多的操作方式,可以查询 scrcpy 的官方文档。

参考资料


在 Chrome 中强制启用暗色模式

午休时间,使用 chrome 浏览网页太耀眼了。简单研究了一下,Chrome 可以强制页面变暗色,操作起来非常简单:

  1. 在 Chrome 地址栏输入以下内容并回车: chrome:*//flags/#enable-force-dark*
  2. 找到 Auto Dark Mode for Web Contents 选项。
  3. 将其设置为 Enabled
  4. 重启 Chrome。

这样,无论网页本身是否支持暗色模式,都会以暗色显示。

顺便,我系统是 macOS 15.1

PS:这个功能对一些网页可能会有点影响,如果觉得不合适,可以随时切回去。


在 Android Chrome 上把标签栏放到底部

最近在 Android 上使用 Chrome 浏览器,发现标签栏默认在顶部,操作起来有点不顺手。 Chrome 提供了一个实验性功能,可以把标签栏移到底部,效果看起来更加方便,以下是具体步骤:

  1. 在 Chrome 的地址栏输入 chrome://flags,然后回车。
  2. 在搜索框中输入 Tab Strip 或 Bottom Toolbar,查找相关的实验性功能。
  3. 有时这个选项可能显示为 Chrome DuetTab Grid Layout
  4. 找到对应选项后,将其状态从 “Default” 改为 “Enabled”。
  5. 完成后,浏览器会提示需要重新启动,点击重启即可。