总体的原则和思想是发挥 VIM 编辑器本身的功能和作用,插件的安装和使用要保持克制 (How To Learn Vim: A Four Week Plan) ,即使安装插件,也尽量不破坏 VIM 的固有操作逻辑。这样的好处是即使换了操作环境, 也能快速上手 VIM 而不会带来使用的不便。
要想发挥本配置方案的全部潜力需要使用 VIM 8 以上版本,否则将不能使用 VIM 的真彩色 主题配色以及异步响应(ALE 插件需要用到)等机制。
git clone https://github.com/lifepillar/vim-solarized8.git \
~/.vim/pack/themes/opt/solarized8
sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
sudo apt install vim
brew install vim --with-lua --with-override-system-vi
这里安装的依赖主要与Python的语法检查与自动补全有关,虚拟环境下PIP包需要重新安装:
pip install autopep8
pip install isort
pip install yapf
pip install pylint
pip install pynvim
- 配色方案:solarized8_flat
- 打开句法高亮:
syntax enable
- 设置空格和制表符
- 设置自动缩进
- 打开行号
- 用 tab 在子文件夹中查找文件
- 将大写锁定键更改为 CTRL 并使用 CTRC C 退出插入模式
Markdown 的语法采用: GitHub Flavored Markdown
主要参考文章:
- Vim 与 Markdown,实现键不离手
- 玩转 vim 之文件操作篇[视频]
- 玩转 vim 之分屏狂魔如何编辑多个文件[视频]
- vim + git,还可以这么玩[视频]
- Vimer 的心路历程--Python & Markdown
- vim 撸码必备插件之 autoformat 与 ale[视频]
- Vim 之代码异步检测插件 ALE -- 实时检查 verilog 等代码的正确性
let g:ale_fixers = {
\ 'python': ['add_blank_lines_for_python_control_statements','autopep8','isort','yapf','remove_trailing_lines','trim_whitespace'],
\ 'markdown': ['prettier','remove_trailing_lines','trim_whitespace'],
\}
通过如上配置后,就可以实现 python 格式或者 markdown 格式的自动调整(注意若没有反 应,请查看有没有安装相应软件,比如 markdown 的 prettier,需要自己去官网把它安装 了,ale 才会自动调用)。
ale 的 linter 都要自己安装,还好系统一般都是有 gcc, python, gofmt 之类的。
markdown 的 linter 需要额外安装:gem install mdl
" only enable these linters
let g:ale_linters = {
\ 'markdown': ['mdl']
\}
作为纯文本格式,如何在 Markdown 文档中快速找到所需要的内容,是影响 Markdown 编辑 体验的一个关键因素。作为最佳的状态,如果编辑时能提供和阅读时一样的排版或样式,那 么 Markdown 的编写就可以既高效又简洁美观了。因此,一个好的 Markdown 编辑器应该能 尽可能地减小 Markdown 作为标记语言与生俱来的编辑与阅读之间的割裂感。
语法高亮是一个比较好的折中的解决方案。试想,如果加粗、斜体等都使用粗体和斜体来高 亮,代码块、链接等都使用和渲染时差不多的样式来高亮,那么其实编辑和阅读也就差不多 都是那么回事了。至于说“折中”,是因为有部分流行的 Markdown 编辑器完全采用 所见即 所得 的方式,编辑时,输入一个文本后马上渲染为对应的 HTML 显示;对于这种做法,见 仁见智,但是我觉得和 Markdown 的设计理念背道而驰,可以说是另一个极端。
Vim 本来也支持 Markdown 的语法高亮,但是做得还不够好。我使 用gabrielelana/vim-markdown插件 来增强高亮。
大纲有助于写文章时能时刻抓住文章的结构,对文章有一个整体的控制。
对于 Vimer 来说,提到大纲,估计第一反应就是大名鼎鼎 的majutsushi/tagbar但是,该插件默认是不 支持 Markdown 的。
其实,主要产生 ctags 格式的输出,tagbar 就能渲染。网上已经有很多教程,例如只要添 加 markdown2ctags.py 就可以实现在 tagbar 中显示 Markdown 的大纲目录了。
iamcco/markdown-preview.vim是 一个同时支持 Windows, Linux 和 MacOS 的 Markdown 预览插件。通过以下配置,基本就 可以做到一个按键预览当前笔记了。
let g:mkdp_path_to_chrome="chrome"
let g:mkdp_auto_close=0
nmap <F7> <Plug>MarkdownPreview
nmap <F6> <Plug>StopMarkdownPreview
笔记管理直接使用插 件scrooloose/nerdtree即可。该插件还支 持收藏夹,可以对应到笔记本的概念。
window 常用操作:
:split
横分屏:vsplit
竖分屏:split filepath
分屏打开文件
buffer 常用操作:
:buf 2
第二个 buffer:bn
下一个 buffer:bp
上一个 buffer:bd
关闭当前 buffer
tab 常用操作:
:tabe
Open a new tab.:tabe [file]
Open a new tab with [file].:tabc
Close current tab.gt
Move to next tab.gT
Move to previous tab.
-
junegunn/vim-plug: 插件管理,速度很快 。推荐使用
-
vim-startify: Vim 启动界面
-
ctrlp: 模糊搜索,快速定位文件
-
silversearcher: 一个快速的代 码命令行搜索工具 ag
-
ag.vim: 使用 ag 在 vim 里搜索内容
-
mattn/gist-vim: 将 gist 功能集成进 Vim 的 插件 对于一些凌散,不成文的内容,可以先把放进 Vim,粗糙的整理一下然后放进 gist(写 Todo,以免忘记后面要干啥)。