玩 Vim 必须要玩插件,而玩 Vim 插件,需要管理插件的插件。Vim 插件千千万,管理 Vim 插件的插件也不少(数据更新于 2023/09):
插件 | Github Star | 上次更新 | 说明 |
---|---|---|---|
Vundle | 23.6k | 3 weeks ago | |
Pathogen | 12k | last year | |
VimPlug | 7k | 2 weeks ago | |
Dein | 3.4k | last week | 以不再积极维护,它推荐 Dpp |
VAM | 659 | 7 months ago | |
apt-vim | 477 | 5 years ago | |
Jetpack | 291 | 3 months ago | |
VimPackager | 241 | 2 years ago | |
Volt | 236 | 3 years ago | |
Dpp | 69 | 2 days ago | |
Vimogen | 37 | 3 years ago | |
Voom | 27 | last year | |
packer.nvim | 7k | 3 weeks ago | 官宣停止维护,推荐 lazy 和 pckr,但都是 for nvim |
lazy.nvim | 7k | 2 weeks ago | for nvim |
pckr.nvim | 109 | this week | for nvim |
我选择 Vundle,别的也没用过…
安装 Vundle
参考 Vundle - Quick Start 安装和配置 Vundle。
安装(就是 git clone)
bash
复制代码
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
初始 ~/.vimrc
默认应该是没有 ~/.vimrc
的,新建一个,内容如下(根据 Vundle 文档改的):
vimrc
复制代码
set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Install plugins, supported formats:
"
" - Plugin on GitHub repo, e.g. `Plugin 'tpope/vim-fugitive'`
" - Plugin from http://vim-scripts.org/vim/scripts.html, e.g. `Plugin 'L9'`
" - Plugin hosted on other Git repos, e.g. `Plugin 'git://git.wincent.com/command-t.git'`
" - Your local git repos (i.e. your own plugin), e.g. `Plugin 'file:///path/to/plugin'`
" - The sparkup vim script is in a subdirectory of this repo called vim, pass the path to set the runtimepath properly, e.g. `Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}`
" - Install L9 and avoid a Naming conflict if you've already installed a different version somewhere else, e.g. `Plugin 'ascenator/L9', {'name': 'newL9'}`
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 💥 插件安装
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use: `filetype plugin on`
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Common Settings
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 💥 通用设置
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugin Settings
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 💥 插件设置
注意,Vundle 不会自动安装插件,需要在添加插件记录后,重启 Vim,执行
:PluginInstall
以完成安装。
稍安勿躁
先不急着装插件。
以上,.vimrc
中我留了三大块,用 💥 做了标记。
先 Vim 打开一个 TS 文件,效果是这样的:
来调配一些基本设置,技巧是,先在 Command-Line mode 下执行命令看效果,然后将敲过的命令记录到 .vimrc
的「通用设置」部分。
编辑器标配功能
对于一个「代码编辑器」来说,少了些标配:
- 显示行号,敲命令
:set number
- 语法高亮,敲命令
:syntax on
(:syntax enable
亦可),报错的话先执行set regexpengine=2
- 当前行高亮,敲命令
:set cursorline
效果看起来差不多了,如果你对高亮行的效果不满意(一根线,不明显),这是 colorscheme default
的效果,可以改一个,在命令模式下敲 :colorscheme wildcharm
:
可用的主题有
blue
、darkblue
、default
、delek
、desert
、elflord
、evening
、habamax
、industry
、koehler
、lunaperche
、morning
、murphy
、pablo
、peachpuff
、quiet
、retrobox
、ron
、shine
、slate
、sorbet
、torte
、wildcharm
、zaibatsu
、zellner
如果你不觉得 colorscheme default
也不错,可以改一下高亮当前行的颜色 :hi CursorLine cterm=NONE ctermbg=black
。
基本上达到满意的效果了,.vimrc
「通用设置」下添加以下汇总的设置:
vimrc
复制代码
" --- Color Scheme
colorscheme wildcharm " The default colorscheme shows only a bottom line
" --- Editor Basic
set regexpengine=2 " Prevent error `redrawtime exceeded` for syntax highlight
syntax on " Syntax highlight, also make NERDTree render properly
set number " Show line number in the gutter
set cursorline " Highlight current line
" hi CursorLine cterm=NONE ctermbg=black " If you realy like default colorscheme
set wrap " Wrap words visually
set linebreak " wrap only at the 'breakat' option
空白字符和缩进
自出道以来,我一直是 Tab 党,在阿里期间,被活活转成双 Space,因此现在我是一个双 Space 的内心 Tab 党。
但有一点我从来没变,就是我从来都特别鄙视 Tab 和 Space 混用的人,凡是看到这样的代码,我都会去看一下是谁的杰作,并且非常武断地做出判断:此人「码品」和「码能」不行。
为了避免自己成为被别人嘲讽的对象,我的所有编辑器 / IDE 必须做的设置就是空白字符可见。
比如有这么一段代码,在我的 WebStorm 和仅做了之前的设置的 Vim 下的展示效果:
WebStorm | Vim |
---|---|
Vim 下的 Tab 还有特别的副作用,最左侧的 Tab 处无法向左移动光标。
第一步:真 Tab 宽度
「真」Tab 默认 8 个字符宽,还是 4 个看起来舒服,敲命令 :set tabstop=4
:
此时,代码「看着」缩进都正确,在没有 Linter 的情况下,完全无法用肉眼看出任何问题。
第二步:显示空白字符
敲命令 :set list
:
仅展示了 Tab(^I
)和回车($
),空格看不到,继续敲命令 set listchars=tab:»-⋮,space:·,eol:¶
:
解释一下:
tab
可以两种格式,xy
,x
永远展示,y
作填充,如»-
可能展示为»
、»-
、»--
、»---
等等;xyz
则z
永远展示,y
作填充,x
作头,如»-⋮
可能展示为⋮
、-⋮
、»-⋮
、»--⋮
、»---⋮
等等space
所有的空格展示,仅允许一个字符,包括行首、中间和行尾eol
行末回车,仅允许一个字符,默认为$
,Eclipse 默认为¶
,WebStorm 和 VSCode 下没有具体可以
:h listchars
查看。
tab
推荐»-⋮
、»»⋮
、--⋮
、▷▷⋮
、▷-⋮
、>-
、»-
space
推荐·
eol
推荐¶
、↩︎
、¬
可自行组合以满足自己的特殊癖好。
第三步:Tab 换空格
现在按 Tab 键还是真 Tab,敲命令 :set expandtab
,发现按 Tab 变成了 4 个空格(tabstop
的值),但我需要 2 个空格,敲命令 :set softtabstop=2
。
第四步:自动缩进
敲代码怎么能没有自动缩进呢,敲命令 :set smartindent
,会自动缩进了,但空格个数不对,继续 :set shiftwidth=2
。
set smartindent
比set autoindent
要好用一些。
.vimrc
「通用设置」下添加以下汇总的设置:
vimrc
复制代码
" --- Tab & Space
set list " Make invisible chars visible
set listchars=tab:»-⋮,space:·,eol:¶ " How invisible chars are displayed
set expandtab " Press Tab key will generate spaces according to tabstop setting
set tabstop=4 " Real tab width
set softtabstop=2 " How many spaces will expand from tab
set smartindent " Ease editing code by smart auto indenting
set shiftwidth=2 " How many spaces for auto indent
至此,编辑器的 Tab、空格、缩进等调校完毕。
光标形状
按照之前的步骤操作过的话,你应该已经在 Normal mode、Command-Line mode、Insert mode 间相互切换过了,你或许发现,Normal mode 和 Insert mode 的光标是一样的。
获取你更希望 Insert mode 的光标是一条竖线,能够更明确地知道插在哪里。
这个没法在命令行预览,在 .vimrc
「通用设置」下添加以下设置(先别急着试):
vimrc
复制代码
" --- Cursor shape
let &t_SI.='\e[5 q' " SI = INSERT mode → blinking vertical bar
let &t_SR.='\e[4 q' " SR = REPLACE mode → solid underscore
let &t_EI.='\e[1 q' " EI = NORMAL mode (ELSE) → blinking block
好消息是,这可能奏效,坏消息是,需要 为不同的平台做不同的设置。
有人更建议,Normal mode 不高亮,Insert mode 高亮,敲命令 :set cursorline!
、autocmd InsertEnter,InsertLeave * set cursorline!
。
个人认为这个形式更舒服,修改「Basic UI」设置:
vimrc
复制代码
" --- Basic UI
set regexpengine=2 " Prevent error `redrawtime exceeded` for syntax highlight
syntax on " Syntax highlight, also make NERDTree render properly
set number " Show line number in the gutter
" set cursorline " Highlight current line
colorscheme wildcharm " The default colorscheme shows only a bottom line
" hi CursorLine cterm=NONE ctermbg=black " If you need default colorscheme
autocmd InsertEnter,InsertLeave * set cursorline!
调校搜索
vimrc
复制代码
" --- Searching
set smartcase " When searching try to be smart about cases
set incsearch " Makes search act like search in modern browsers
set lazyredraw " Don't redraw while executing macros (good performance config)
set magic " For regular expressions turn magic on
set hlsearch " Highlights all search hits
其他必要设置
vimrc
复制代码
" --- Window settings
set splitbelow " Open split windows below
set splitright " Open split windows to the right
" --- Misc
set history=77 " How many command history vim should remember
set pastetoggle=<F5> " Toggle paste mode
这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!
CSDN大礼包:全网最全《全套Python学习资料》免费分享🎁
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
因篇幅有限,仅展示部分资料
2️⃣国内外Python书籍、文档
① 文档和书籍资料
3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
5️⃣Python兼职渠道
而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓