久仰vim编辑器之神的大名,最近出于好奇,在windows10下折腾了一下,在此记录一下历程。

文章目录

  • 1. windows10下的vim安装和配置
    • 1.1 安装vim
    • 1.2. 基础设置
    • 1.3. 插件管理插件Vundle
    • 1.4. 主题插件
    • 1.5. 底部栏增强插件
    • 1.6. 格式化代码、彩虹括号、缩进线突出显示
    • 1.7. 自动补全神器YCM(YouCompleteMe)
    • 1.8. 目录树
  • 2. 后话
  • 3. vim常用命令
    • 3.1. 一般模式
    • 3.2. 编辑模式
    • 3.3 命令模式

1. windows10下的vim安装和配置

1.1 安装vim

  去官网下载windows下的.exe可执行文件,安装其它软件一样进行安装。安装完成后打开,界面类似下面(网上的图,侵删):

图1 打开vim

第一眼看上去太素(chou)雅(lou)了,没有一点现代编辑器的气息,作为一个颜控受不了。也没有高亮显示,没有行号,不能自动补全等等缺点(虽然自带了一些主题)。经过学习、摸索,最后自己配置的编辑器好看多了,许多功能也加上了,先展示一下:

图2 配置过后的vim

  下面开始记录配置过程。找到vim的安装目录,里面有一个名为_vimrc的文件:

图3 _vimrc文件

vim的配置和一些设置都是在这个文件里面进行的,.un~文件是vim的undofile和备份文件,可以让你在关闭文件后再次打开时还可以撤销上次的更改。

1.2. 基础设置

  1. 设置显示字体:在_vimrc中加入语句set guifont=Consolas\ for\ Powerline\ FixedD:h14,等于号的右边和冒号之间是电脑上安装的某个字体的名字,注意字体中有空格的话,需要使用反斜杠\来对空格进行转义。冒号之后设置的是字体的大小。也可以设置别的字体,我设这个字体是为了airline插件,具体见讲airline插件那一节。
  2. 光标有关设置:
" 光标设置成块状且禁止闪烁
set gcr=a:block-blinkon0
" 显示光标当前位置,右下角可看到当前行和列数
set ruler
" 高亮显示当前行/列
set cursorline
set cursorcolumn
" 高亮显示搜索结果
set hlsearch
  1. 显示行号:set number
  2. 语法高亮、缩进等设置:
" 开启语法高亮功能
syntax enable
" 允许用指定语法高亮配色方案替换默认方案
syntax on
" 自适应不同语言的智能缩进
filetype indent on
" 将制表符扩展为空格
set expandtab
" 设置编辑时制表符占用空格数
set tabstop=4
" 设置格式化时制表符占用空格数
set shiftwidth=4
" 让vim把连续数量的空格视为一个制表符
set softtabstop=4
  1. 补全成对符号
" 补全括号
inoremap ' ''<ESC>i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {<CR>}<ESC>O
inoremap < <><ESC>i

缺点是有时候只需要左边时,也是两个都打出来。

  1. 备份和历史记录:
" 禁止备份
set nobackup
" 保留历史记录
set history=500

不禁止备份的话,编辑文件就会生成一个同名的最后加上一个~符号的文件,看着太糟心。

图4 备份文件

1.3. 插件管理插件Vundle

  刚才进行了基础设置,继续配置的话最好是安装插件。安装插件之前,先安装一个管理插件的工具Vundle,以此来方便的管理插件,当然另外有名的插件管理工具还有Pathogen等。安装vim完成以后,一般在C盘的用户文件夹->用户名里面找到vimfiles文件夹。比如我的路径,在WXH文件夹里就有vimfiles文件夹:

图5 vimfiles文件夹

打开命令行,从github上克隆下来Vundle:git clone https://github.com/VundleVim/Vundle.vim.git ~/vimfiles/bundle/Vundle.vim放在vimfiles文件夹里。然后打开_vimrc文件,加入如下配置:

" vundle插件环境设置
filetype off
set rtp+=~/vimfiles/bundle/Vundle.vim
" vundle管理的插件列表必须位于vundle#begin()和vundle#end()之间
call vundle#begin()
" 插件管理插件
Plugin 'VundleVim/Vundle.vim'
" 主题
Plugin 'altercation/vim-colors-solarized'
Plugin 'tomasr/molokai'
Plugin 'morhetz/gruvbox'
Plugin 'vim-airline/vim-airline-themes'
" 自动补全
Plugin 'Valloric/YouCompleteMe'
" 底部栏增强
" Plugin 'Lokaltog/vim-powerline'
Plugin 'vim-airline/vim-airline'
" 目录树
Plugin 'scrooloose/nerdtree'
" 格式化代码
Plugin 'Chiel92/vim-autoformat'
" 显示缩进线
Plugin 'nathanaelkane/vim-indent-guides'
" 彩虹括号
Plugin 'kien/rainbow_parentheses.vim'" 插件列表结束
call vundle#end()
filetype plugin indent on

其实这里我是希望将插件都放到vimfiles文件夹里面的(把vimfiles文件夹里原来的东西都删了),可是这样配置以后,插件都还是在新建的.vim文件夹里,有大佬告知原因吗?不胜感激。vundle可以安装、卸载插件。安装插件只需在_vimrc文件的vundle#begin()和vundle#end()之间加入语句:Plugin 插件名,比如要安装gruvbox主题,输入:Plugin 'morhetz/gruvbox'。保存编辑,然后打开vim,输入::BundleInstall然后回车,就会看到(图中是我已经安装的插件):

图6 安装插件

左下角的Done!说明插件装好了,正在装的话该位置会显示Processing …Vundle默认从github上下载插件。vim插件基本都支持而且很多都建议使用Vundle安装。查看插件列表在vim中输入::BundleList,删除插件则在_vimrc中注释掉或者删掉该插件所对应的行,保存,然后在vim中输入:BundleClean,然后回车,出现:

图7 删除插件

输入y表示确定删除,n表示放弃。

1.4. 主题插件

  vim有许许多多的主题,比较经典的有solarized和molokai,在_vimrc中输入:

Plugin 'altercation/vim-colors-solarized'
Plugin 'tomasr/molokai'

保存,然后在vim中输入::BundleInstall,回车,即可安装,两个主题的界面展示:

图8 solarized主题

图9 molokai主题

最近被大佬推荐gruvbox主题也挺好看的。就是前面展示的图,在_vimrc中输入:Plugin 'morhetz/gruvbox'。保存,然后在vim中输入::BundleInstall,回车,即可安装。还有很多别的主题都可以在网上找到。安装好以后,在_vimrc中设置主题:

" 背景也可以设置成light
set background=dark
colorscheme solarized
" colorscheme molokai
" colorscheme gruvbox

把不用的主题注释掉,看腻了可以换换。

1.5. 底部栏增强插件

  以前使用的是powerline,在_vimrc中输入:Plugin 'Lokaltog/vim-powerline',保存,然后在vim中输入::BundleInstall,回车,即可安装。现在发现一个更好的替代品airline,更好(hua)看(li)一(hu)点(shao),还有buffer功能。在_vimrc中输入:Plugin 'vim-airline/vim-airline'保存,然后在vim中输入::BundleInstall,回车,即可安装。这个插件需要先安装打powerline补丁的字体,不然无法像前面一样显示三角形,状态栏像这样:

图10 未安装补丁字体的状态栏

目前,我只知道windows下可以显示三角形字体有Consolas Powerline,把4个字体都下下来安装,在_vimrc中将字体设置为Consolas for Powerline FixedD(前面已设置过)。可以在https://github.com/powerline/fonts网站上下Linux系统下打补丁的字体。为了防止乱码,先加入以下配置:

" 设置编码格式
set encoding=utf-8
set langmenu=zh_CN.UTF-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set fileencoding=utf-8
" 解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
" 设置中文提示
language messages zh_CN.utf-8
" 设置双字宽显示,防止有些字符显示不出来
set ambiwidth=double

然后再加入如下配置:

" airline设置
" 这个是安装字体后 必须设置此项"
let g:airline_powerline_fonts=1
" 底部栏的主题
let g:airline_theme="molokai"
" 打开tabline功能,方便查看Buffer和切换
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#buffer_nr_show = 1
if !exists('g:airline_symbols')let g:airline_symbols = {}
endiflet g:airline_left_sep = '⮀'
let g:airline_left_alt_sep = '⮁'
let g:airline_right_sep = '⮂'
let g:airline_right_alt_sep = '⮃'
let g:airline_symbols.branch = '⭠'
let g:airline_symbols.readonly = '⭤'
let g:airline_symbols.linenr = '⭡'

如果正确安装字体,最后7行显示的是这样的:

图11 正确的三角形显示

否则类似于这样:

图12 错误显示

再需要注意的是设置底部栏主题:let g:airline_theme="molokai"需要安装airline主题插件,语法:Plugin 'vim-airline/vim-airline-themes'。默认主题灰不溜秋的,安装主题插件换一个多姿多彩的。

1.6. 格式化代码、彩虹括号、缩进线突出显示

  有时候用vim看代码、编写代码,需要一些辅助。格式化代码是必需的,可以安装autoformat插件,语法:Plugin 'Chiel92/vim-autoformat'。这个插件只是一个框架,安装好以后还需要安装格式化程序,可以是clang-format、autopep8等。这里使用开源的AStyle项目,到AStyle网站上去下载压缩包,并解压。里面有个bin文件夹,该文件夹有个AStyle.exe文件,是供windows下使用的。把该路径加入环境变量中,然后在_vimrc中加入以下配置:

" 格式化代码风格设置:C为ANSI
let g:formatdef_ansi='"astyle --style=allman --pad-oper"'
let g:formatters_c=['ansi']
let g:formatters_cpp=['ansi']
au BufWrite * :Autoformat
"设置快捷键F5自动格式化代码并保存
noremap <F5> :Autoformat<CR>:w<CR>

在一般模式下,按下F5即可格式化C代码。

图13 未格式化代码之前

图14 格式化代码之后

  有的文件中,有时候好几个括号嵌套,不好辨认,可以借助彩虹括号插件。安装:Plugin 'kien/rainbow_parentheses.vim',加入以下配置:

" 彩虹括号设置
let g:rbpt_colorpairs = [\ ['brown',       'RoyalBlue3'],\ ['Darkblue',    'SeaGreen3'],\ ['darkgray',    'DarkOrchid3'],\ ['darkgreen',   'firebrick3'],\ ['darkcyan',    'RoyalBlue3'],\ ['darkred',     'SeaGreen3'],\ ['darkmagenta', 'DarkOrchid3'],\ ['brown',       'firebrick3'],\ ['gray',        'RoyalBlue3'],\ ['black',       'SeaGreen3'],\ ['darkmagenta', 'DarkOrchid3'],\ ['Darkblue',    'firebrick3'],\ ['darkgreen',   'RoyalBlue3'],\ ['darkcyan',    'SeaGreen3'],\ ['darkred',     'DarkOrchid3'],\ ['red',         'firebrick3'],\ ]
" 开启16对括号匹配
let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces

缩进线显示安装:Plugin 'nathanaelkane/vim-indent-guides',配置:

" 显示缩进线设置
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_auto_colors = 0
let g:indent_guides_guide_size = 1
let g:indent_guides_start_level = 1
let g:indent_guides_space_guides = 1

1.7. 自动补全神器YCM(YouCompleteMe)

  经过之前的配置,vim颜值提高了很多,现在提高点内涵——自动补全。说到vim自动补全,就不得不说大名鼎鼎的YCM(YouCompleteMe)了。几乎是vim最复杂的插件,以前不支持windows的,现在支持windows了。安装需要准备一些工具。首先是CMake,安装之后加入环境变量。然后是Visual Studio Build Tools 2017,好像还要下一个visual studio 2019(选C++桌面开发),因为我安装的时候提示我没有安装VS2019(反正安装的时候提示缺少啥去装就可以了)。最后注意的是,YCM安装依赖python,而vim对python版本有着几乎变态的要求,不止是大版本要符合,小版本也要契合。首先在vim里面输入::version,查看vim版本和支持的功能:

图15 vim版本和支持功能

如图所示,python和python3前面有加号,说明支持python2和python3。继续往下翻,看到:

图16 支持的具体版本

图中可以看到支持的具体的版本,python2支持python2.7.x,python3支持python3.6.x,因为YCM官网上说已经抛弃了python2,所以安装python3.6。安装好以后,在vim中输入::echo has('python')||has('python3')如果输出是1,说明python版本装对了,如果是0,说明版本不对,我原来有python3.6.9,但是执行上面命令,输出为0,换成python3.6.8就可以了。
  ok,这些准备工作做好以后,使用vundle安装(官方也推荐使用它安装),_vimrc输入:Plugin 'Valloric/YouCompleteMe',保存,进入vim输入:BundleInstall,就在安装了。这个时间可能会长一点,耐心等待。好了以后,可能会在底部栏出现类似于:the ycmd serve shut down(restart with......)的信息(没出现更好)。解决方法为打开命令行,切换到YouCompleteMe文件夹,输入:python3 install.py,运行好以后就不会出现上面的提示了。有时候会出现下载不完整的现象,可以在YouCompleteMe文件夹下的cmd中输入git submodule update –init –recursive来检查是否下载完整,我就遇到过等了好长时间,结果提示YouCompleteme unavailable : no module named future,就是库没有下载完整。输入git submodule update –init –recursive继续下载。如果还不行,直接克隆:git clone –recursive https://github.com/Valloric/YouCompleteMe.git到bundle目录下。
  然后就可以安装了,还是在YouCompleteMe文件夹,如果要编译支持C语言的补全,输入:python install.py --clangd-completer,等一会,安装完成就好。如果不用支持C,就输入:python install.py。可以在YCM官方github(链接上面给过来)上查看你需要补全的语言的安装方法,也可以一劳永逸,输入:python3 install.py --all来安装所有支持的语言的自动补全(go,C#,Java,C等等),但没有必要,要装很多依赖,而且很多用不上。我安装的是支持C语言的补全,安装好以后,加入如下配置:

" YCM设置
let g:ycm_global_ycm_extra_conf='C:/Users/WXH/.ycm_extra_conf.py'
" 允许vim加载.ycm_extra_conf.py文件,不再提示
let g:ycm_confirm_extra_conf=0
" 在接受补全后不分裂出一个窗口显示接受的项
set completeopt-=preview
" 补全功能在注释中同样有效
let g:ycm_complete_in_comments=1
" 从第一个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=1
" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
" 开启YCM标签补全引擎
let g:ycm_collect_identifiers_from_tags_files=1
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax=1
" 自动补全快捷键设置为CTRL+Z
let g:ycm_key_invoke_completion='<c-z>'

需要注意的是,.ycm_extra_conf.py文件在YouCompleteMe\third_party\ycmd文件夹下。在_vimrc中的路径一定要正确。YCM默认补全快捷键是Ctrl+space。最终效果如下:

图17 YCM补全,不按Ctrl+z

图18 YCM补全,按下Ctrl+z

1.8. 目录树

  目录树插件安装:Plugin 'scrooloose/nerdtree',保存,然后vim输入:BundleInstall,加入配置:

" 目录树设置
nmap <silent> <c-n> :NERDTreeToggle<CR>

在一般模式下,按Ctrl+n即可打开目录树,效果如图:

图19 目录树

2. 后话

  经过上述的配置,vim的可用性提高了很多,不管是写代码还是干别的。但水平有限,还有太多功能没有涉及,比如说多光标、git有关的配置等等,上述插件也只是vim插件中的九牛零点零零零零一毛,更多插件可以参考Vim Awesome。vim强大之处在于其本身具有无限扩展的可能,理论上只有想不到,没有做不到。经过上述配置,缺点是明显感觉vim打开变慢了(相对而言,但还是比vscode快),可能有不合理或者冗余的配置。才疏学浅,vim还没有入门,希望继续学习。

3. vim常用命令

  vim有三种基本模式:一般模式、编辑模式和命令模式。下面简单介绍一下三种模式及其最最常用的功能。

3.1. 一般模式

  以vim打开一个文件就直接进入一般模式(就是默认的模式)。在该模式中, 可以使用『上下左右』按键来移动光标,也可以删除文件的某一行或者某个字符,还可以进行复制、粘贴操作。一些命令如下表:

命令 含义
h,j,k,l 相当于键盘的左(←),下(↓),上(↑),右(→)按键功能。如果要移动n个字符的话,可以输入nh或n←,n为一个数字
home键(或数字0)、end键(或$符号) 将光标移到该行的首、尾处
Ctrl+f和Ctrl+b 相当于PgDn键和PgUp,表示屏幕向下、上移动一页
G 光标移动到文件末尾行的首个非空字符,可以使用nG移动到该文件的第n行的首个非空字符
gg 光标移动到文件首行的首个非空字符,相当于1G
n+enter 光标向下移动n行
/word和?word 向光标之下、之上寻找word字符串
:n1,n2s/word1/word2/g 字符串替换。在第 n1与n2行之间寻找 word1 这个字符串,并将该字符串替换为 word2
:1,$s/word1/word2/g 字符串替换。在第1与最后一行之间寻找 word1 这个字符串,并将该字符串替换为 word2
:1,$s/word1/word2/gc 字符串替换。在第1与最后一行之间寻找 word1 这个字符串,并在替换该字符串之前显示word2,以使用户确认是否替换
x和X x为向后删除一个字符,X为向前删除一个字符,可以使用nx,nX向后、向前删除连续的n个字符
dd,ndd dd为删除光标所在的一整行,ndd为向下删除光标所在的n行
yy和nyy yy复制光标所在行,nyy表示从光标所在行算起,向下复制n行。
p和P p表示在光标下一行粘贴复制的内容,P表示在光标上一行粘贴复制内容
u 复原前一个动作,相当于撤销上一步
Ctrl+r 重复上一个动作

3.2. 编辑模式

  在一般模式下可以进行删除、粘贴等操作,但是无法编辑文件,要进入编辑模式可以在一般模式下在键盘上按下i,I(大写的i),o,O(大写字母o),a,A,r,R。各字母含义:

  • i:从目前光标所在处插入;
  • I:在目前所在行的第一个非空格符处开始插入;
  • a:从目前光标所在的下一个字符处开始插入;
  • A:为从光标所在行的最后一个字符处开始插入;
  • o:在目前光标所在的下一行处插入新的一行;
  • O:在目前光标所在处的上一行插入新的一行;
  • r:取代光标所在的那一个字符一次;
  • R:一直取代光标所在的文字,直到按下 ESC 键为止。

我进入编辑模式是万年不变的i。进入编辑模式后就可以愉快的编辑文件了。

3.3 命令模式

  在一般模式当中,输入:, /,? 三个字符中任一个(注意是英文模式下),就可以将光标移动到最底下那一行,进入命令模式。在这个模式当中,可以进行读取、存盘、离开 vim、显示行号等等的动作。一些常用的命令:

指令 含义
:w 将编辑的数据写入文件
:q 退出vim
:wq 保存并退出
:w filename 将文件重新保存为名为filename的文件。注意w和文件名之间有一个空格
:term 在vim中打开命令行

参考的资料包括但不限于:

  1. YCM官方
  2. vim插件网站
  3. 《鸟哥的Linux私房菜》
  4. 一个大佬的vim配置教程
  5. https://wsxq2.55555.io/blog/2018/11/25/Vim%E4%BB%A3%E7%A0%81%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%8F%92%E4%BB%B6vim-autoformat/
  6. http://astyle.sourceforge.net/
  7. https://blog.csdn.net/bcbobo21cn/article/details/52556805

windows10下安装、配置vim及YCM安装相关推荐

  1. Windows下使用WSL安装配置Kali/Windows Terminal安装/Win-Kex安装配置(非虚拟机or双系统)

    Windows下使用WSL安装配置Kali/Windows Terminal安装/Win-Kex安装配置(非虚拟机or双系统) 最近因为某些原因含泪拾起自己很久没碰过的CTF,首当其冲是配置环境.首选 ...

  2. 英伟达的Nerf:instant_ngp在Windows10下的配置和使用--保姆级教学

    英伟达的Nerf:instant_ngp在Windows10下的配置和使用–保姆级教学 1.前言 Nerf的原理和厉害之处在这里就不做详细介绍了,本文主要是针对小白在Windows10环境下配置ins ...

  3. 下载和安装配置 MinGW-w64(免安装版)

    下载和安装配置 MinGW-w64(免安装版) 1.找到downloads 2.找到SourceForge 3.找到一个合适的版本(我这里是下拉找到免安装版)下载,其他的都试过了,都不行(可能是因为外 ...

  4. SharePoint 2016 企业项目管理应用(二,基础安装配置SQL Server 2014 安装)

    SharePoint 2016 企业项目管理应用(二,基础安装配置SQL Server 2014 安装) 关于服务器操作系统的安装配置,这里不做说明,安装完成后执行加域操作. 1.首先修改数据库服务器 ...

  5. nginx 安装配置+清缓存模块安装

    nginx 安装配置+清缓存模块安装 下载软件包 编译安装 内核参数优化 配置范例站点站点 修改nginx配置文件 Nginx 启动关闭 测试 经过一段时间的使用,发现 nginx 在并发与负载能力方 ...

  6. windows10安装配置vim

    由于疫情原因无法及时返校,需要在家里的windows电脑安装vim并配置环境,在此记录. 建议使用gvim,而不是在cmd下使用vim. 1 下载windows版vim 从github下载window ...

  7. 在虚拟机里安装centos 6.4和centos 5.8里配置vim 7.4安装过程

    下是centos 6.4里安装vim配置操作命令 [BEGIN] 2014/5/13 星期二 上午 10:08:54 [root@bogon ~]# rpm -qa | grep vim [root@ ...

  8. Yolo-v2_ Windows平台下如何配置darknet-yolov2?(安装CUDA)

    Yolo-v2_Windows平台下如何配置? 官方链接:How to compile on Windows 我的win10配置信息: VisualStudio2015 opencv-3.3.0-vc ...

  9. 记第一次Ubuntu系统的安装、搜狗输入法的安装与VIM插件的安装(入门篇)

    序 在上完Centos的课程之后,感觉要是想在Linux系统上有更好的学习和突破,应该要开始使用Linux系统,也就是开始安装Linux系统到真实主机上,并开始熟悉Linux系统的使用. 在多次安装过 ...

最新文章

  1. 通俗讲解操作系统的中断
  2. java 对象的属性_java-更新对象属性
  3. delete,drop,truncate 区别
  4. SmartQuery WebPart 2.0 发布。
  5. plsql连不上oracle6,是否遇到PLSQL Developer连不到oracle数据库呢
  6. java js中 function函数报错_浅析JS中对函数function的理解(基础篇)
  7. 使用docker搭建FastDFS文件系统
  8. tcp,udp报文最大长度
  9. 14007.xilinx-备份镜像
  10. ubantu20下python安装和卸载
  11. 作文未来的计算机医生300字,医生作文300字【3篇】
  12. opencv2.4.9 + vc2012配置过程记录
  13. 实战分析APP提交苹果App Store审核被拒绝的一些原因以及对策
  14. Python识别平台登录验证码
  15. excel表格打印每页都有表头_13个关于Excel表格的打印技巧
  16. 一款好的软件,软件测试必不可少...
  17. 计算机系导师推荐意见,就业推荐表上导师评语
  18. 8421BCD码 5421BCD码 余三码 格雷码 余三循环码之间的关系,转换以及简易方法
  19. 搭建centos虚拟机
  20. asp.net简单介绍(还有完整项目资源可以下载)

热门文章

  1. Latex打出哈密尔顿算子del
  2. 计算机对环境设计的作用,【环境设计论文】表现技法在环境设计专业的重要性(共2876字)...
  3. 国产蓝牙耳机排行,500元蓝牙耳机性价比之王
  4. 【Day24】 LeetCode算法题 (注释详细+解题思路)[43. 字符串相乘 ] [1800. 最大升序子数组和]
  5. 程序人生之:完美主义也是过错
  6. 007_理解App Upgrade
  7. Windows系统日志收集
  8. Android高德地图多路线规划----可点击选择路线
  9. docker和守护进程重启命令
  10. 如何用WordPress中的自定义字段重写来宾作者姓名