NeoVim 学习笔记

这篇学习笔记将用于记录本人在学习使用 NeoVim 编辑器过程中所编写的学习心得与代码。该笔记将会存放在https://github.com/owlman/study_note项目的Software/DevelopmentTool目录下,并予以长期维护。

学习规划

  • 学习基础:

    • 掌握 Linux shell 命令的基本使用。
    • 掌握 Vim 编辑器的基本操作方法。
    • 有一两门编程语言的使用经验。
  • 学习环境:
    • Ubuntu Linux 操作系统。
  • 学习资料:

背景知识

NeoVim 起源

2014 年,巴西程序员 Thiago de Arruda Padilha(aka tarruda)曾经向 Vim 开源编辑器项目递交了两大补丁,其中包含了对 Vim 的架构进行大幅调整的建议,结果遭到了 Vim 作者 Bram Moolenaar 的拒绝。因为后者认为对于 Vim 这样一个成熟的项目进行如此大的改变风险太高。但或许在 tarruda 看来,Vim 这个上个世纪 90 年代初的产物,至今已经 20 多年了,该项目中不仅遗留了大量的历史痕迹,而且该项目的管理层如今在程序的维护、Bug 的修复、以及新特性的添加等问题上的态度都在变得越来越僵化,且难以与时俱进。

总而言之,基于对 Vim 项目的不满,并致力于打造一款面向 21 世纪的代码编辑器,tarruda 先生以众筹资金的方式发起了 Vim 的这个 fork 项目:NeoVim。在这里,Neo 这个单词表达的是其作者对 Vim 编辑器在这个新时代的重生期待。

NeoVim 现状

从 NeoVim 项目的提交记录可以看出,tarruda 先生是个非常有项目维护经验的人,其有条不紊的管理让 NeoVim 的版本迭代相当快速,基本上几天就会推送一个新的版本。目前来说, NeoVim 已经实现 Vim 大部分功能,并兼容了 Vim 百分之九十以上的配置。根据该项目的自述说明,它最终想实现以下目标 :

  • 通过简化项目的维护工作来改进 Bug 修复及特性添加的速度;
  • 在实现新的、现代化的用户界面时不必修改编辑器的核心源码;
  • 可利用新的、基于协同进程的新插件架构改善编辑器的扩展性;
  • 支持使用 Python 等多种第三方编程语言与 NeoVim 进行交互;

随着时间的推移,NeoVim 项目逐渐发展成为一个成熟的项目,并率先提供了多个 8.0 版本之前的 Vim 所没有的新特性:

  • 支持在 Vim 中打开命令行终端窗口,使用户不必退出编辑器就能执行 bash 命令;
  • 为 vimscript 提供了异步任务的支持,之前的 vimscript 只能以同步的方式执行任务;
  • 重构了 Vim 的部分代码,实现了多平台兼容,并可使用更加现代化的代码编译工具链;

但与此同时,NeoVim 项目的成功也反过来唤起了 Vim 项目组的危机意识,重新激发了他们的开发热情,促使 Vim 在 7.0 之后加快了新功能开发进度,很快发布了 Vim 8.0/8.1,把 NeoVim 实现的大部分新特性在 Vim 中也实现了一遍。Vim 现在也支持异步任务,内置终端等特性了。所以目前来看 NeoVim 与 Vim 的差异已经很小,大部分第三方插件都能兼容 NeoVim/vim。

安装与配置

本文将以 Ubuntu Linux 发行版为系统环境来研究 NeoVim 的安装与环境配置方法,并学习使用它的具体功能。

基础环境配置

因为在为 NeoVim 安装 coc.nvim 等插件时会需要用到 Node.js,所以在正式安装 NeoVim 之前,我们首先要在操作系统中安装一个 12.0.0 以上版本的 Node.js 运行时环境,它可以通过以下 Bash 命令序列来安装:

  1. curl -fsSL https://deb.nodesource.com/setup_17.x | sudo -E bash -
  2. sudo apt install -y nodejs

如果一切顺利,我们通过node -vnpm -v命令就可以查看到相应的版本,例如像这样:

  1. $ node -v
  2. v17.4.0
  3. $ npm· -v
  4. 8.3.1

在这里,为了后续操作的顺利,我们需要将 NPM 所连接的默认仓库换成在国内的镜像:

  1. $ npm config set registry https://registry.npm.taobao.org
  2. $ npm config get registry
  3. https://registry.npm.taobao.org

接着,我们需要安装 Python3 环境,它可以通过以下 Bash 命令序列来安装:

  1. sudo apt install -y python3 python3-pip
  2. pip install pynvim

最后,我们需要安装 curl 和 git,它们可以通过以下 Bash 命令序列来安装:

  1. sudo apt install -y curl git

安装 NeoVim

在 Ubuntu Linux 中,我们可以直接通过 APT 包管理器来安装 NeoVim,其安装命令如下:

  1. sudo apt install -y neovim

如果我们使用的是其他 Linux 发行版或者 Windows/macOS 等其他操作系统,也可以通过参考官方提供的帮助文档来进行相关的安装操作。总而言之,如果一切顺利,我们接下来就可以使用nvim -v命令来查看 NeoVim 的版本信息了,像这样:

  1. $ nvim -v
  2. NVIM v0.4.3
  3. Build type: Release
  4. LuaJIT 2.1.0-beta3
  5. Compilation: /usr/bin/cc -g -O2 -fdebug-prefix-map=/build/neovim-gOb7vg/neovim-0.4.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=1 -DDISABLE_LOG -Wdate-time -D_FORTIFY_SOURCE=1 -O2 -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fdiagnostics-color=always -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/build/neovim-gOb7vg/neovim-0.4.3/build/config -I/build/neovim-gOb7vg/neovim-0.4.3/src -I/usr/include -I/usr/include/lua5.1 -I/build/neovim-gOb7vg/neovim-0.4.3/build/src/nvim/auto -I/build/neovim-gOb7vg/neovim-0.4.3/build/include
  6. Compiled by team+vim@tracker.debian.org
  7. Features: +acl +iconv +tui
  8. See ":help feature-compile"
  9. system vimrc file: "$VIM/sysinit.vim"
  10. fall-back for $VIM: "/usr/share/nvim"
  11. Run :checkhealth for more info

如果看到了与上述输出类似的版本信息,就说明 NeoVim 编辑器已经成功地安装到了我们的计算机中。

用户配置文件

接下来,我们要来创建的一个专属于用户个人的配置文件,以方便后面的个性化配置。为此,我们需要执行以下 bash 命令:

  1. mkdir ~/.config/nvim/
  2. nvim ~/.config/nvim/init.vim

并在打开的``文件中输入如下代码:

  1. " 令编辑器显示行号
  2. set nu

然后在 NeoVim 中执行:wq命令保存配置并退出,如果当我们再次进入 NeoVim 时能看到其显示了行号,就证明我们的用户配置文件完成了创建并成功生效了。

插件安装

插件安装方法

对于国内用户来说,在正式安装 NeoVim 编辑器的插件之前,最好先设置一下对raw.githubusercontent.com这个域名的本地 DNS 解析表,否则有时候会因不可控的网络因素而造成安装失败。具体做法是,先使用 IP 查询工具找到该域名对应的 IP 地址,然后将其写入到/etc/hosts文件中,像这样:

  1. $ cat /etc/hosts
  2. # [network]
  3. # generateHosts = false
  4. 127.0.0.1 localhost
  5. 127.0.1.1 owlman.localdomain owlman
  6. 199.232.96.133 raw.githubusercontent.com
  7. # The following lines are desirable for IPv6 capable hosts
  8. ::1 ip6-localhost ip6-loopback
  9. fe00::0 ip6-localnet
  10. ff00::0 ip6-mcastprefix
  11. ff02::1 ip6-allnodes
  12. ff02::2 ip6-allrouters

接下来,我们就可以开始为 NeoVim 编辑器安装插件了。首先需要安装的是 Vim-plug 插件管理器,它可以通过以下 Bash 命令来安装:

  1. sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
  2. https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

如果一切顺利,我们现在就可以在 NeoVim 编辑器中执行:PlugInstall命令来安装插件了。下面,我们就试着来安装一下可以按 tab 键进行补全的功能插件,其操作步骤如下:

  1. 重新打开并编辑init.vim文件,将其内容修改如下:

    1. " 令编辑器显示行号
    2. set nu
    3. " 要安装的插件列表
    4. call plug#begin('~/.vim/plugged')
    5. " tab键补全功能插件
    6. Plug 'ervandew/supertab'
    7. call plug#end()
  2. 在 NeoVim 中执行:wq命令保存配置并退出,然后重新进入 NeoVim 编辑器并在其命令模式下执行:PlugInstall命令,即可自动安装上述配置文件中列出的插件,待安装完成之后,我们再次重启 NeoVim 编辑器,并在编辑模式中按下 tab 键就会看到该插件提供的补全提示了。

常用插件推荐

Coc 插件

这是一个集成了代码补全、静态检测、函数跳转等功能的插件引擎,它允许用户根据自己使用的编程语言来安装相应的智能补全插件,其安装步骤如下:

  1. 由于 Coc.nvim 是基于 Node.js 的,所以我们首先要确定当前系统环境中已经安装了 Node.js 运行环境,并且其版本应该在 12.0.0 以上。

  2. 重新打开并编辑init.vim文件,将其内容修改如下:

    1. " 令编辑器显示行号
    2. set nu
    3. " 要安装的插件列表
    4. call plug#begin('~/.vim/plugged')
    5. " tab键补全功能插件
    6. Plug 'ervandew/supertab'
    7. " Coc 智能补全插件引擎
    8. Plug 'neoclide/coc.nvim', {'branch': 'release'}
    9. call plug#end()
  3. 在 NeoVim 中执行:wq命令保存配置并退出,然后重新进入 NeoVim 编辑器并在其命令模式下执行:PlugInstall命令,即可自动安装上述插件列表中新增的插件。待安装完成之后,我们再次重启 NeoVim 编辑器,就可以根据自己使用的编程语言来安装智能补全插件了。

  4. 由于 Coc 本身并不提供具体语言的补全功能,所以在安装完成后,我们需要安装具体的语言服务以支持对应的补全功能。例如想要配置 C++环境,我们就需要在 NeoVim 的命令模式下执行以下命令来安装相关的插件:

  1. :CocInstall coc-clangd # C++环境插件
  2. :CocInstall coc-cmake # Cmake 支持

在上述命令执行完成之后,我们可以试着用 NeoVim 打开一个.cpp文件,然后就会在编辑器的底部看到这样一段提示:

  1. [coc.nvim] clangd was not found on your PATH. :CocCommand clangd.install will install 11.0.0.

这时候,我们可以继续在命令模式中输入:CocCommand clangd.instal命令来安装 clangd。然后,当我们再次重启 NeoVim 之后,编写 C++ 代码就会看到相关的智能补全提示了。当然了,我们可以执行以下命令来配置其他编程语言和工具的智能补全插件:

  1. :CocInstall coc-git # git 支持
  2. :CocInstall coc-highlight # 高亮支持
  3. :CocInstall coc-jedi # jedi
  4. :CocInstall coc-json # json 文件支持
  5. :CocInstall coc-python # python 环境支持
  6. :CocInstall coc-sh # bash 环境支持
  7. :CocInstall coc-snippets # python提供 snippets
  8. :CocInstall coc-vimlsp # lsp
  9. :CocInstall coc-yaml # yaml

vim-airline 插件

我们可以利用 vim-airline 插件及其主题插件来让 NeoVim 编辑器具有更赏心悦目的用户界面,其安装步骤如下:

  1. 重新打开并编辑init.vim文件,将其内容修改如下:

    1. " 令编辑器显示行号
    2. set nu
    3. " 要安装的插件列表
    4. call plug#begin('~/.vim/plugged')
    5. " tab键补全功能插件
    6. Plug 'ervandew/supertab'
    7. " Coc 智能补全插件引擎
    8. Plug 'neoclide/coc.nvim', {'branch': 'release'}
    9. " vim-airline 标签栏插件
    10. Plug 'Vim-airline/vim-airline'
    11. " vim-airline 标签栏插件的主题插件
    12. Plug 'Vim-airline/vim-airline-themes'
    13. call plug#end()
    14. " 配置 vim-airline 标签栏插件
    15. let g:airline#extensions#tabline#enabled = 1
  2. 在 NeoVim 中执行:wq命令保存配置并退出,然后重新进入 NeoVim 编辑器并在其命令模式下执行:PlugInstall命令,即可自动安装上述插件列表中新增的插件。待安装完成之后,只需要再次重启 NeoVim 编辑器,就可以看到如下用户界面了。

ranger 插件

该插件是一款非常好用的文件浏览器,其安装步骤如下:

  1. 先在 Ubuntu 系统环境中执行以下 bash 命令安装 ranger 组件:

    1. sudo apt install -y ranger
  2. 重新打开并编辑init.vim文件,将其内容修改如下:

    1. " 令编辑器显示行号
    2. set nu
    3. " 要安装的插件列表
    4. call plug#begin('~/.vim/plugged')
    5. " tab键补全功能插件
    6. Plug 'ervandew/supertab'
    7. " Coc 智能补全插件引擎
    8. Plug 'neoclide/coc.nvim', {'branch': 'release'}
    9. " vim-airline 标签栏插件
    10. Plug 'Vim-airline/vim-airline'
    11. " vim-airline 标签栏插件的主题插件
    12. Plug 'Vim-airline/vim-airline-themes'
    13. " ranger 文件浏览器
    14. Plug 'kevinhwang91/rnvimr'
    15. call plug#end()
    16. " 配置 vim-airline 标签栏插件
    17. let g:airline#extensions#tabline#enabled = 1
    18. " 配置 ranger 文件浏览器插件
    19. let g:rnvimr_ex_enable = 1
    20. " Alt+o 打开 ranger
    21. nnoremap <silent> <M-o> :RnvimrToggle<CR>
    22. "Alt+加号 切换至下一个标签,减号则是切换回上一个
    23. nnoremap <M-+> :bp<CR>
    24. nnoremap <M--> :bn<CR>
  3. 在 NeoVim 中执行:wq命令保存配置并退出,然后重新进入 NeoVim 编辑器并在其命令模式下执行:PlugInstall命令,即可自动安装上述插件列表中新增的插件。待安装完成之后,只需要再次重启 NeoVim 编辑器并按下快捷键 Alt+o,就可以看到如下用户界面了。

vim-startify 插件

该插件可用于快速打开最近编辑过的文件,其安装步骤如下:

  1. 重新打开并编辑init.vim文件,将其内容修改如下:

    1. " 令编辑器显示行号
    2. set nu
    3. " 要安装的插件列表
    4. call plug#begin('~/.vim/plugged')
    5. " tab键补全功能插件
    6. Plug 'ervandew/supertab'
    7. " Coc 智能补全插件引擎
    8. Plug 'neoclide/coc.nvim', {'branch': 'release'}
    9. " vim-airline 标签栏插件
    10. Plug 'Vim-airline/vim-airline'
    11. " vim-airline 标签栏插件的主题插件
    12. Plug 'Vim-airline/vim-airline-themes'
    13. " vim-startify 插件
    14. Plug 'mhinz/vim-startify'
    15. call plug#end()
    16. " 配置 vim-airline 标签栏插件
    17. let g:airline#extensions#tabline#enabled = 1
    18. let g:airline#extensions#tabline#enabled = 1
    19. " 配置 ranger 文件浏览器插件
    20. let g:rnvimr_ex_enable = 1
    21. " Alt+o 打开 ranger
    22. nnoremap <silent> <M-o> :RnvimrToggle<CR>
    23. "Alt+加号 切换至下一个标签,减号则是切换回上一个
    24. nnoremap <M-+> :bp<CR>
    25. nnoremap <M--> :bn<CR>
  2. 在 NeoVim 中执行:wq命令保存配置并退出,然后重新进入 NeoVim 编辑器并在其命令模式下执行:PlugInstall命令,即可自动安装上述插件列表中新增的插件。待安装完成之后,只需要再次重启 NeoVim 编辑器,就可以看到最近编辑过的文件了,如下图所示。

vim-snazzy 主题插件

该插件可用于进一步美化编辑器的用户界面,其安装步骤如下:

  1. 重新打开并编辑init.vim文件,将其内容修改如下:

    1. " 令编辑器显示行号
    2. set nu
    3. " 要安装的插件列表
    4. call plug#begin('~/.vim/plugged')
    5. " tab键补全功能插件
    6. Plug 'ervandew/supertab'
    7. " Coc 智能补全插件引擎
    8. Plug 'neoclide/coc.nvim', {'branch': 'release'}
    9. " vim-airline 标签栏插件
    10. Plug 'Vim-airline/vim-airline'
    11. " vim-airline 标签栏插件的主题插件
    12. Plug 'Vim-airline/vim-airline-themes'
    13. " vim-startify 插件
    14. Plug 'mhinz/vim-startify'
    15. " vim-snazzy 主题插件
    16. Plug 'connorholyday/vim-snazzy'
    17. call plug#end()
    18. " 配置 vim-airline 标签栏插件
    19. let g:airline#extensions#tabline#enabled = 1
    20. let g:airline#extensions#tabline#enabled = 1
    21. " 配置 ranger 文件浏览器插件
    22. let g:rnvimr_ex_enable = 1
    23. " Alt+o 打开 ranger
    24. nnoremap <silent> <M-o> :RnvimrToggle<CR>
    25. "Alt+加号 切换至下一个标签,减号则是切换回上一个
    26. nnoremap <M-+> :bp<CR>
    27. nnoremap <M--> :bn<CR>
    28. " 配置 vim-snazzy 主题插件
    29. colorscheme snazzy
    30. let g:SnazzyTransparent = 1
  2. 在 NeoVim 中执行:wq命令保存配置并退出,然后重新进入 NeoVim 编辑器并在其命令模式下执行:PlugInstall命令,即可自动安装上述插件列表中新增的插件。待安装完成之后,只需要再次重启 NeoVim 编辑器,就可以看到如下用户界面。

markdown-preview 插件

该插件可用于预览 markdown 文档,其安装步骤如下:

  1. 重新打开并编辑init.vim文件,将其内容修改如下:

    1. " 令编辑器显示行号
    2. set nu
    3. " 要安装的插件列表
    4. call plug#begin('~/.vim/plugged')
    5. " tab键补全功能插件
    6. Plug 'ervandew/supertab'
    7. " Coc 智能补全插件引擎
    8. Plug 'neoclide/coc.nvim', {'branch': 'release'}
    9. " vim-airline 标签栏插件
    10. Plug 'Vim-airline/vim-airline'
    11. " vim-airline 标签栏插件的主题插件
    12. Plug 'Vim-airline/vim-airline-themes'
    13. " vim-startify 插件
    14. Plug 'mhinz/vim-startify'
    15. " vim-snazzy 主题插件
    16. Plug 'connorholyday/vim-snazzy'
    17. " markdown 预览插件
    18. Plug 'iamcco/markdown-preview.nvim'
    19. call plug#end()
    20. " 配置 vim-airline 标签栏插件
    21. let g:airline#extensions#tabline#enabled = 1
    22. let g:airline#extensions#tabline#enabled = 1
    23. " 配置 ranger 文件浏览器插件
    24. let g:rnvimr_ex_enable = 1
    25. " Alt+o 打开 ranger
    26. nnoremap <silent> <M-o> :RnvimrToggle<CR>
    27. "Alt+加号 切换至下一个标签,减号则是切换回上一个
    28. nnoremap <M-+> :bp<CR>
    29. nnoremap <M--> :bn<CR>
    30. " 配置 vim-snazzy 主题插件
    31. colorscheme snazzy
    32. let g:SnazzyTransparent = 1
    33. " 指定浏览器路径
    34. let g:mkdp_path_to_chrome = "<此处填写chrome的安装路径>"
    35. " 指定预览主题,默认Github
    36. let g:mkdp_markdown_css=''
  2. 在 NeoVim 中执行:wq命令保存配置并退出,然后重新进入 NeoVim 编辑器并在其命令模式下执行:PlugInstall命令,即可自动安装上述插件列表中新增的插件。待安装完成之后,只需要再次重启 NeoVim 编辑器,并在其命令模式下执行:call mkdp#util#install()命令,然后就可以通过:MarkdownPreview命令来启动预览,然后用:MarkdownPreviewStop命令来关闭预览了。

NeoVim 学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. 阿里巴巴为什么建议使用BigDecimal进行浮点数运算

    本文先引入一个例子,星期天你和女朋友去逛街,看到一家奶茶店.女朋友想喝奶茶了,你就去买了杯奶茶,然后你问了一下价格.店员说奶茶0.9元一杯.然后你给了1元钱.这个时候你忽然问了一下女友.服务员该找我们 ...

  2. 安装 Metrics server

    安装 Metrics server Metrics Server 是 Kubernetes 内置自动缩放管道的可扩展.高效的容器资源指标来源. Metrics Server 从 Kubelets 收集 ...

  3. 强大的 apt-get 命令

    强大的 apt-get 命令(小结) 一.ubuntu下管理软件最方便的非 apt-get 工具莫属了,它的常见用法稍微整理一下供以后参考(详细见 man apt-get ): 1.更新源,升级软件和 ...

  4. [GIT]辨析/区别: git reset HEAD 与 git reset --hard HEAD | 版本回撤

    1 场景1: 撤销到远程仓库或本地仓库的最新最近一次的正式版本 1.1 文由 时常有这样一种场景,不小心改动了部分文件,或修改了部分文件却发现无用,此时可能还没有git push,也可能push了:又 ...

  5. Django笔记二十二之多数据库操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记二十二之多数据库操作 这一篇笔记介绍一下多数据库操作. 在第十篇笔记的时候,简单介绍过 using() 的使用方法,多个数据库就是通过 u ...

  6. PHP__采集类__Snoopy

    Snoopy                                                  目录 了解Snoopy.1 功能:...1 下载Snoopy:...2 Snoopy常用 ...

  7. Windows 本地安装mysql8.0

    前言 看了网上许多关于Windows 本地安装mysql的很多教程,基本上大同小异.但是安装软件有时就可能因为一个细节安装失败.我也是综合了很多个教程才安装好的,所以本教程可能也不是普遍适合的.现我将 ...

  8. 【谷粒商城】(一)docker搭建以及项目的创建

    网络地址转换-端口转发 VmWare网络配置可以参考这篇:VMWare虚拟机网络连接设置_santirenpc的博客-CSDN博客_vmware 上网设置,真的是被折磨到了.. Docker 虚拟化容 ...

  9. Cron表达式介绍与示例

      1. 概念介绍 Cron表达式是一个具有时间含义的字符串,字符串以5~6个空格隔开,分为6~7个域,格式为X X X X X X X.其中X是一个域的占位符.最后一个代表年份的域非必须,可省略.单 ...

  10. Network Science:巴拉巴西网络科学阅读笔记2 第一章图论

    第一章:图论 完全图又被称为团. Metcalfe's Law: Metcalfe's law states that the value of a telecommunications networ ...