拥有更强大的生产力

庞业铭

如何用nvim开发Verilog

Verilog nvim开发环境特性

  • 模块间跳转

  • 语法异步检查

  • 代码对齐,使代码更加的整洁

  • 代码折叠

Verilog nvim开发环境特性

功能实现: 模块间跳转

实现原理: 通过vtags这款工具实现的

Verilog nvim开发环境特性

功能实现: 语法异步检查

实现原理: 通过nvim的插件ale实现


效果展示如下:
ale效果展示1 ale效果展示2

Verilog nvim开发环境特性

功能实现: 代码对齐

实现原理: 通过nvim的插件vim-lion实现

无需配置,安装即用

使用指南:

  • gl+字符,按字符,右对齐
  • gL+字符,按字符,左对齐

Verilog nvim开发环境特性

功能实现: 代码折叠

实现原理: set foldmethod=indent

augroup AutoSourcevtags_vim_api
  "" verilog使用缩进的方式折叠
  autocmd BufEnter *.v set foldmethod=indent 
  au BufRead,BufNewFile *.vh set filetype=verilog
  autocmd BufEnter *.v source  ~/Software/vtags-3.11/vtags_vim_api.vim
  "这是用于实现保存,更新
  autocmd BufUnload *.v :!python3 /home/awjl/Software/vtags-3.11/vtags.py
augroup END

扩展知识点:自动命令组

augroup AutoSourcevtags_vim_api
  "" verilog使用缩进的方式折叠
  autocmd BufEnter *.v set foldmethod=indent 
  au BufRead,BufNewFile *.vh set filetype=verilog
  autocmd BufEnter *.v source  ~/Software/vtags-3.11/vtags_vim_api.vim
  "这是用于实现保存,更新
  autocmd BufUnload *.v :!python3 /home/awjl/Software/vtags-3.11/vtags.py
augroup END
  • 实现了代码折叠,保存更新tags

  • 当我们想用vim作为多种语言的开发工具时,总会遇到快捷键映射冲突的问题,而自动命令组可以很好的解决这个问题

    • 上面这串代码,实现了每次进入verilog文件,都会重新加载一次verlog.vim(即verilog相关的配置文件),用来覆盖掉相同功能的其他语言的映射,这样我们就可以用gd这一快捷键实现c的跳转verilog的跳转甚至更多语言

如何用nvim编写markdown?

markdown nvim开发环境特性

  • 实时预览

  • 快速插图

  • 快速改变文字颜色大小、加下划线等

markdown nvim开发环境特性

功能实现: 实时预览

实现原理: 通过nvim插件coc.nvim中的coc-markdown-preview-enhanced实现



快捷键映射:

" 预览界面<esc>用来toggle目录
map <C-s> :CocCommand markdown-preview-enhanced.openPreview<CR>

markdown nvim开发环境特性

功能实现: 快速插图

实现原理: 通过nvim插件md-img-paste实现

相关配置:
插图配置

markdown nvim开发环境特性

功能实现: 快速改变文字颜色、大小、加下划线等

实现原理: 通过nvim的特性宏操作实现

宏操作: 指一种通过使用单一指令或命令来执行一组预定义操作的方式

录入一个宏操作的步骤:

  • q+小写字母: 开始录制一组操作
  • ...:一系列用户自定义操作
  • q: 结束录制
  • @+小写字母: 调用录制的宏操作

工具分享(tmux, ranger, goldendict)

tmux-窗口管理器

功能特性:
- 多窗格,多窗口
- 保存与恢复tmux环境

tmux窗口布局展示

tmux-窗口管理器

快捷键映射:
tmux快捷键映射

ranger-终端上的文件管理器


功能特性:

  • 文件预览
  • 新建、复制、移动、删除文件(夹)
  • 创建书签: 能够快速跳转到书签所在路径
  • 能带来直观的文件浏览体验

goldendict-翻译软件

功能特性:

  • 划词(句)翻译
  • 复制翻译
  • 导入词典
  • 支持发音(需要下载相关文件)
  • 导入程序(如我就导入了DeepL的API)