0%

总指南《保姆级教程!将 Vim 打造一个 IDE (Python 篇)》
系统:Linux version 5.4.0-198-generic (buildd@lcy02-amd64-109) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2))

安装 vim 9.1

安装python3.8及以上的python

YouCompleteMe插件必须要python3.8+编译的vim

1
2
3
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.8

安装vim9.1

YouCompleteMe插件必须要最新的vim版本才能支持,网上的添加非官方库add-apt-repository ppa:jonathonf/vim的方法也只能装9.0版本的,因此需要手动编译
The Vim repository at GitHub
How To Install Vim with Python3 Support

1
2
3
4
5
6
7
8
sudo apt install -y python3-distutils python3-dev 
sudo apt install libncurses-dev
./configure --enable-python3interp \
--with-python3-config-dir=/usr/lib/python3.8/config-* \
--with-python3-command=/usr/bin/python3 \
--without-x
make
sudo make install

安装插件

安装插件管理工具vim-plug

1
2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

插件配置

在.vimrc中添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
" 插件开始的位置
call plug#begin('~/.vim/plugged')

" 代码自动完成,安装完插件还需要额外配置才可以使用
Plug 'ycm-core/YouCompleteMe'

" 用来提供一个导航目录的侧边栏
Plug 'scrooloose/nerdtree'
" 设置NerdTree
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>
" 可以使 nerdtree 的 tab 更加友好些
Plug 'jistr/vim-nerdtree-tabs'

" 可以在导航目录中看到 git 版本信息
" Plug 'Xuyuanp/nerdtree-git-plugin'

" 查看当前代码文件中的变量和函数列表的插件,
" 可以切换和跳转到代码中对应的变量和函数的位置
" 大纲式导航, Go 需要 https://github.com/jstemmer/gotags 支持
Plug 'preservim/tagbar'
nmap <F9> :TagbarToggle<CR>

" 自动补全括号的插件,包括小括号,中括号,以及花括号
Plug 'jiangmiao/auto-pairs'

" Vim状态栏插件,包括显示行号,列号,文件类型,文件名,以及Git状态
Plug 'vim-airline/vim-airline'

" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
" 可以快速对齐的插件
Plug 'junegunn/vim-easy-align'

" 可以在文档中显示 git 信息
Plug 'airblade/vim-gitgutter'

" markdown 插件
Plug 'iamcco/mathjax-support-for-mkdp'
Plug 'iamcco/markdown-preview.vim'

" 下面两个插件要配合使用,可以自动生成代码块
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'

" go 主要插件
Plug 'fatih/vim-go', { 'tag': '*' }

" go 中的代码追踪,输入 gd 就可以自动跳转
Plug 'dgryski/vim-godef'

" 可以在 vim 中使用 tab 补全
"Plug 'vim-scripts/SuperTab'

" 可以在 vim 中自动完成
"Plug 'Shougo/neocomplete.vim'


" 插件结束的位置,插件全部放在此行上面
call plug#end()

安装插件

打开 vim 输入 :PlugInstall

安装YouCompleteMe

YouCompleteMe需要单独安装

1
2
cd ~/.vim/plugged/YouCompleteMe
python3 install.py

安装 ctags

tagbar需要单独安装ctags

1
sudo apt install ctags

插件使用

切换窗口

CTRL-w j
光标切换到下一个窗口。
CTRL-w k
光标切换到上一个窗口。
CTRL-w h
光标切换到左边窗口。如果左边没有窗口,保持在当前窗口不变。
CTRL-w l
光标切换到右边窗口。
CTRL-w w
在各个窗口之间来回切换。每输入一次,切换一个窗口。不停输入,可以遍历所有窗口。在只有两个窗口时很方便来回切换。

YouComplete 代码自动补全

自动补全代码,使用方法和普通IDE一样

NerdTree 文件目录

.vimrc中添加

1
2
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>

设置F3为打开文件目录的快捷键

基本操作快捷键:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
?: 快速帮助文档
o: 打开一个目录或者打开文件,创建的是buffer,也可以用来打开书签
go: 打开一个文件,但是光标仍然留在NERDTree,创建的是buffer
t: 打开一个文件,创建的是Tab,对书签同样生效
T: 打开一个文件,但是光标仍然留在NERDTree,创建的是Tab,对书签同样生效
i: 水平分割创建文件的窗口,创建的是buffer
gi: 水平分割创建文件的窗口,但是光标仍然留在NERDTree
s: 垂直分割创建文件的窗口,创建的是buffer
gs: 和gi,go类似
x: 收起当前打开的目录
X: 收起所有打开的目录
e: 以文件管理的方式打开选中的目录
D: 删除书签
P: 大写,跳转到当前根路径
p: 小写,跳转到光标所在的上一级路径
K: 跳转到第一个子路径
J: 跳转到最后一个子路径
<C-j>和<C-k>: 在同级目录和文件间移动,忽略子目录和子文件
C: 将根路径设置为光标所在的目录
u: 设置上级目录为根路径
U: 设置上级目录为跟路径,但是维持原来目录打开的状态
r: 刷新光标所在的目录
R: 刷新当前根路径
I: 显示或者不显示隐藏文件
f: 打开和关闭文件过滤器
q: 关闭NERDTree
A: 全屏显示NERDTree,或者关闭全屏

tagbar 大纲式导航

.vimrc中添加nmap <F9> :TagbarToggle<CR> 绑定F9为打开关闭的快捷键
上下移动(jk), 选中回车后会跳转

vimgrep 文件内查找

在 Vim 命令行模式下输入 :h vimgrep 可以看到 vimgrep 的使用文档

命令

1
2
:vim[grep][!] /{pattern}/[g][j] {file} ...
:vim[grep][!] {pattern} {file} ...

含义

  • vim 可作为 vimgrep 的缩写
  • ! 可紧随 vimgrep 之后,表示强制执行该命令
  • 索引的关键字 pattern 放在了两个 “/” 中间,并且支持正则表达式
  • g, j 可选。 如果添加 g,将显示重复行, 如果添加 j,vim 将不会自动跳转到第一个匹配的行(可能是别的文件)
  • file 可以是正则文件名,也可以是多个确定的文件名

使用
:vimgrep /user/g **
使用该命令可以查找当前目录下所有文件中包含 user 字符串的文件,并跳转到第一个匹配的文件,
同时所有搜索结果会显示在 Quickfix 中,使用 :cw, :copen 可以打开该列表

更多命令

1
2
3
4
5
:cnext, :cn         # 当前页下一个结果
:cprevious, :cp # 当前页上一个结果
:clist, :cl # 使用 more 打开 Quickfix 窗口
:copen, :cope, :cw # 打开 Quickfix 窗口,列出所有结果
:ccl[ose] # 关闭 Quickfix 窗口。

PVE升级

更换apt源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
# 屏蔽订阅企业源
wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
# 使用Proxmox非企业版中科大源
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
# 将Debian官方源替换为中科大源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list
# 替换Ceph源
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
# 替换CT镜像下载源(重启PVE才能生效)
apt update
#更新源列表
apt upgrade
#升级软件包
apt dist-upgrade
#升级系统
apt install openvswitch-switch
#安装OVS

自用装机清单

游戏机

22年11.1购入

部位 型号 价格
U+板 13600KF+微星z690 3330元
内存 枭鲸16G*2 DDR4 3200MHz 480元
电源 海韵GX850W 730元
散热 利民PA120SE 150元
机箱 长城阿基米德PRO 210元
显卡 别人送的2070 0
SSD 拆下来的西数SN550 0
SSD 宏碁掠夺者2T 470元
SSD 梵想s500pro2T 570元
HDD 海康威视4T 340元
风扇 利民工包 3*20元
风扇 棱镜pro 3*20元

nas

20年12月购入
安装truenas scale
常驻应用:gitlab influxdb nextcloud photoprism plex postgres syncthing
cpu负载40%左右

部位 型号 参数 价格
cpu 奔腾G5420T 2核4线程 3.2GHz 300元
主板 微星B360M - 475元
内存 2*芝奇 8G 2133MHz 忘了
内存 2*金百达 8G DDR4 2666MHz 190元(23年4月加的)
电源 海韵S12III 500w 80PLUS铜牌 330元
SSD Samsung 970 EVO Plus 250GB 370元
HDD 2*东芝DT02ABA400V 4TB 5400转 128MB缓冲区 2*630元
HDD 拆机东芝 14TB 7200转 670元
HDD 希捷ST5000DM000 5T 5980转 捡垃圾,忘了
HDD 西数HGST_HUS728T8TALE6L4 8T 7200转 捡垃圾,忘了
机箱 粤林 1517-2 塔式 6盘位 170元

服务器

19年6.18购入
平时跑一些自己写的任务,并作为家庭网络连接tailscale的subnet节点

部位 型号 参数 价格
cpu i3-6100T - 640元
主板 华擎 H179M-ITX - 360元
内存 2*光威悍将 DDR4 8G 2133MHz 398元
电源 酷冷至尊MWE550V2 550W 350元
SSD 闪迪 240G SATA 200元
机箱 乔思伯 v4 mini-matx - 200元

数据备份服务器

20年6.18 购入
备份nas的重要数据,不长开机

部位 型号 参数 价格
u+板 华擎J3455-ITX - 514元
内存 金百达 DDR3 1600MHz 8G 169元
电源 鑫谷 500W 240元
SSD 威刚 240G SATA3 195元
HDD 希捷酷狼 4TB 5900转 840元
机箱 金河田 N1 MINI-ITX - 130元

网络

network

背部肌肉构成

alt text

背部宽度训练动作

宽度训练着重在背阔肌的训练,以下拉为主

引体向上

主要锻炼肌肉:背阔肌,大圆肌,小园肌,肱二头肌。
次要锻炼肌肉:三角肌后束,胸肌,腹肌,斜方肌等。
alt text

alt text

  1. 双臂在前方伸直,抓紧杠杆,身体向后倾斜30度,尽量让身躯挺直,挺胸。
  2. 向后下方拉动拉动肩膀和上臂,让身体向上,直至杠杆碰到上胸。在进行着部分运动时吐气。提示:在达到完全收紧状态时集中注意力收缩后背肌肉
  3. 在收紧状态1秒后,开始吸气,并缓慢地降下躯体还原至起始状态,让手臂完全伸直,背阔肌完全伸展

握杠技巧:
适当增加握的宽度,也更能增加对背阔肌的刺激

高位下拉

alt text
背要直,可以稍微向后仰一点
吐气的同时将肩膀和上臂向后下方拉动,拉下把手直至碰到上胸。提示:完全收紧时集中注意力收缩后背肌肉。动作中上躯应保持固定,只有手臂运动。前臂只需抓握杠杆,没有其他动作,不要用前臂拉动把手。
呼吸:用力下拉时呼气,还原时吸气
小臂力竭的问题:拇指环握时,小臂肌群收缩状态会发力,所以,解决方法是半握法,即不使用大拇指
alt text

俯身杠铃划船


杠铃划船是发达背阔肌最有效的动作之一。而用杠铃练习划船有 四种握法:窄握、中握、宽握和并握。
不同的握距和握法锻炼的部位有所不同。

  • 宽握和并握的重点是发达背阔肌上部肌群;
  • 中握重点是发达背阔肌中上部肌群;
  • 窄握重点是发达背阔肌中下部肌群。

动作要点:膝盖微屈,背部伸直,身体朝前倾,双手反握哑铃,双手夹紧身体两侧,集中背阔肌的力将杠铃沿着大腿拉向自己的小腹,稍微停顿,然后慢慢还原到起始位置。

背部厚度训练动作

厚度训练着重在斜方肌和菱形肌的训练,以划船为主

哑铃划船

alt text
alt text

  1. 前后脚弓步,一条手臂放在哑铃架或者健身椅上支撑身体。另一只手拿哑铃,手臂自然下垂,掌心向内。背部挺直
  2. 呼气的同时,用背部的力量将哑铃上拉到胸部侧面,上臂紧贴身体,上身保持不动。
  3. 在顶端稍适停留,感受背部的肌肉收缩,然后缓缓将哑铃降回起始位置,同时吸气。
  4. 重复以上动作至推荐次数,然后换另一边继续。

总是,要让手臂内收,上臂更接近脊柱,而不是手臂向后过度伸展

注意:

  1. 做完全程才会有效刺激到背部
  2. 可以上大重量,这个动作可以用大重量刺激,可以放在训练开始时进行
  3. 万万不可弓背,背要直

坐姿划船

  1. 两腿踩住前方的踏板,微屈膝,腿不可伸直,两手紧握三角形(或其他形状的)手柄,双臂前伸,腰腹固定,挺胸抬头。
  2. 收缩背部肌肉,加紧肩胛骨,用这股力量,将手柄拉至腹部,尽可能地向后牵拉你的双肩和双肘,直到手柄接触到你的身体中部。可以保持顶峰收缩1-2秒,努力挤压你的肩胛骨,得到最大程度的刺激
  3. 以背阔肌的力量控制还原,所谓的快拉慢回,控制速度,但是!不需要过慢。

斜方肌训练动作

背部另一个重要的位置是斜方肌:这位置个可以放在练肩的那一天进行训练

杠铃耸肩

  1. 手握杠铃,心手面向身体,挺立身体,双臂与地面垂直
  2. 尽可能提高的肩膀,注意只是肩膀部份移动,身体其他部份静止不动,顶峰收缩保持2-3秒钟
  3. 颈部放松,你是靠斜方提起中午,不是脖子

反握杠(哑铃)划船

锻炼斜方肌的中下部

  1. 双脚与肩同宽、膝盖微弯,身体前顷,背要直,要平,下背一定要打直。双手略比肩宽,反握杠铃,身体对齐杠铃中心点。
  2. 将杠铃往肚脐方向拉起,收缩背部将杠铃碰到肚脐,接触到身体。回到起始动作时,感受背部有明显展开的感觉,手再送出去。

哑铃耸肩


耸肩建议在能够维持动作标准的情况下,尽量使用大重量,小重量刺激不够深,比较难看到效果。

硬拉

屈腿硬拉:

动作要点:

  1. 将杠铃放于地面,双脚分开,与肩同宽。背部保持伸直,双腿弯下,身体前倾,双手正握抓住杠铃。
  2. 下蹲,收臀,直到大腿与地面平行,且肩膀位于杠铃正上方。然后挺胸、抬头、收腹,深吸一口气。

无法开启远程访问

在设置中对资料库开启远程访问失败,原因是nas上使用了带科学上网的软路由作为网关,网关自动代理了plex.tv域名的请求,是的plex服务器获得的公网ip是梯子的ip,无法访问到真正的库。将plex.tv域名添加到软路由的直接访问列表中即可

认证库权限返回401

通过公网访问库时,无法获取库的权限,显示“未经授权 您无权访问此服务器。”
这个不知道是什么原因,外网上也有类似的问题,但没有答案,我最后清掉配置目录下所有文件,重新构建docker实例,重新配置服务器,问题解决了