NOI Linux 配置小记

前言

网上的 Linux 配置教程像碎了一地,搞的人都快麻了。作为天天打交道的 NOI Linux,打造一个心情件还是很有必要的。(至少对我。) 更主要的是虚拟机容易寄掉可能需要经常性重装,整理出一套完整的设置也很有必要。(至少对我。)

基本配置

设置中文,然后改下载源。(为什么中文包要下 10 多分钟?)下载源文件在 /etc/apt,NOI Linux 甚至自带了国防科大源 sources.list.save 并复制了默认源 sources.list.bak,直接 sudo cp 就行,感动啊。顺便一提,清华源好像有 BUG 疑似装不了 oh-my-bash。不过有了 Clash 这些都没关系了已经。

装额外软件。下载包存在电脑上了:QQ、Clash(2.0.0 以上不可用)、Snipaste、DKMS、M6 驱动、Krita。对于有依赖的,dpkg 之后 audo apt-get -f install 可以自动修复。虚拟机不知道为什么卡完了,用不了数位板。装完就可以改左侧栏了:Firefox、文件、Vim、计算器、VSCode、QQ、Clash。

零散配置还有一点。壁纸——元芳的清明节海报,头像——崖子老师的图。Firefox 设置:默认搜索 Bing,插件装 Tampermonkey、Stylus,安装 html 播放器

Vim

回归原生 Vim 之后感觉还是不用太花里胡哨了,毕竟 CCF 不会给你在考场上装一堆插件的机会。

正常写题还是需要一个系统剪切板的。sudo apt-get install vim-gtk 安装即可,vim --version | grep clipboard 用来检测。

.vimrc 首先生效一下 indent.vim,第一次编辑的时候 :scr 找到文件位置,so 完事了。设置 三格空格缩进显示行号和命令se 可以压行,中间用空格隔开。设置主题 slate,感觉已经是原生 Vim 里最配终端的了(

然后调教内置终端,这玩意儿在 Vim 里没直接开一个窗口方便,但用习惯了还行。右侧打开,宽度 50,设快捷键 <Leader>t,自动关闭行号。还有模板,直接打一遍 Vim 格式化修改掉,记得时间函数是 strftime,全称应该是 'string fomat time' 吧。

总和起来是这样的:

so /usr/share/vim/vim81/indent.vim
se ts=3 sts=3 sw=3 et nu sc
colo slate

fu! OpenTerm()
   rightb vert term
   vert res 50
endf
com! Rterm cal OpenTerm()
nn <Leader>t :Rterm<CR>
au TerminalWinOpen * setl nonu nornu

fu! CppTemp()
   cal setline(1, [
            \ "/**",
            \ " * 年挽红枫,溪傍芦荻",
            \ " *",
            \ " * @file  ",
            \ " * @date  " . strftime("%Y-%m-%d %H:%M:%S"),
            \ " */"
            \ ])
   cal cursor(4, 10)
   star!
endf
au BufNewFile *.cpp cal CppTemp()

唯一痛点是 markdown 不支持 Vimscript 的高亮。

VSCode

VSCode 在写代码方面已经是个纯心情件了,因为有 UI 终究是比纯终端好看的,通常写点 markdown 还是可以的。

代码字体 20 px,终端字体 16 px,三格缩进;搜 Bracket,关掉括号着色;搜 Closing 自动补全右括号和右引号关掉;搜 Cursor,开启光标平滑插入动画,同时设前后可见行为 5;搜 Sticky Scroll,三种粘滞滚动全关掉;搜 Suggest 关掉 Enter 接受建议。(跟之前有一定区别:不用 Auto Save 是用 Vim 用的,不关 Suggest 是因为关掉 C/C++ 插件之后建议的行为与 Vim 类似不妨碍。)

修改掉 VSCode 权限方便插件运行:sudo chown -R nianfeng /usr/share/code。安装插件:C/C++,cnblogs 客户端,Vim,Fira Code,Background;按皮肤顺序排列的配套主题:Andromeda Mariana,SynthWave'84,Code Blue,Ayu,Field Lingts Theme,Moonlight,Noctis,One Monokai Theme,Palenight Theme,Panda Theme,Winter is Coming Theme。

其他美化

还是整点花里胡哨的吧。 平心而论后面这依托写得有点丑。

安装 Powerline、oh-my-bash:

sudo apt-get install fonts-powerline
git clone https://github.com/ohmybash/oh-my-bash.git .oh-my-bash
cp .bashrc .bashrc.bak
cp .oh-my-bash/templates/bashrc.osh-template .bashrc

虽然疑似这个不是最标准的安装方式。在 .bashrc 里找到 OSH_THEME,后面改成 powerline-icon:source % 生效文件即可。

安装 VimPlug:

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

反正装了 Clash 就不会下载卡顿了,所以还是很有用的。顺便说一句,没有 Clash 也不能自动获取安装插件,要下载到本地后用本地路径代替 GitHub 默认路径。Vim 内可以用 :PlugInstall 测试有没有成功。调用 Plug 的主函数长这样:

call plug#begin('~/.vim/plugged')
call plug#end()

好像 Plug 本身就带点特性啊,是不是有自动延续注释?

Airline

美化状态栏。配置不熟,需要参考 这篇文章

Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
let g:airline_theme = "wombat"      " 更换 wombat 主题
let g:airline_powerline_fonts = 1   " 支持 Powerline 字体
let g:airline#extensions#tabline#enabled = 1                " buffer 区域美化
let g:airline#extensions#tabline#formatter = 'unique_tail'  " 合并显示路径,类似 VSCode
let g:airline#extensions#tabline#buffer_nr_show = 1         " 显示 buffer 编号
if !exists('g:airline_symbols')     " 状态栏分隔美化
    let g:airline_symbols = {}
endif
let 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.colnr = ' ℅:'
let g:airline_symbols.readonly = ''
let g:airline_symbols.linenr = ' :'
let g:airline_symbols.maxlinenr = '☰ '
let g:airline_symbols.dirty='⚡'

airline 的一堆选项不知道怎么设,只能说 txt 写的说明书真的帅,也真的看不懂,先将就着吧。后面这一团乱码是 PowerLine 字体,可以在解压文件的 /doc/airline.txt 里找,直接从 Github 复制也不是不行。所以,为什么 branch 还是挂了(

Rainbow

高亮括号。

Plug 'luochen1990/rainbow'
let g:rainbow_active = 1   " 设置全局变量,开启 vim-ranbow
let g:rainbow_conf = {     " 设置颜色、匹配对象和特殊情况
   \  'ctermfgs': ['lightblue', 'lightyellow', 'lightgreen', 'lightcyan', 'lightmagenta'],
   \  'operators': '__',
   \  'parentheses': [['(', ')'], ['\[', '\]'], ['{', '}']],
   \  'separately': {'*': {}, 'nerdtree': 0, }
   \}

不用 GVim,所以没写 'guifgs',两个去掉 'fg' 的也省了,不影响;不想高亮标点符号,但 'operators' 默认了逗号,于是清空了一下。'parentheses' 的配置看不懂,从简了。(谁来教一下 qwq!)只写 C++,最多写 Bash、Python、Java,花里胡哨的 'separately' 也快清空了,不过由于 后面的 NERDTree 有冲突,保留了 'nerdtree' 选项。

NERDTree

文件目录。配置不熟,需要参考 这篇文章

Plug 'preservim/nerdtree'
let g:NERDTreeWinSize = 25    " 设置默认宽度
map <C-B> :NERDTreeMirror<CR> " ctrl+B 映射开关,同 VSCode
map <C-B> :NERDTreeToggle<CR>
autocmd vimenter * NERDTree   " 自动开启、没有文件时开启、只有 NERDTree 时关闭
autocmd vimenter * if !argc()|NERDTree|endif
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
let g:NERDTreeDirArrowExpandable = '▸'    " 设置图标
let g:NERDTreeDirArrowCollapsible = '▾'
let g:NERDTreeShowHidden = 1  " 显示隐藏文件
let NERDTreeMinimalUI = 1     " 其他美化
let NERDTreeDirArrows = 1

“没有文件时开启”这一项看起来有点小丑。有个 'NERDTreeIgnore' 可以用来屏蔽部分文件,没写。进一步的美化先鸽了 (其实是一直鸽),加了个打开目录树的快捷键就跑路。

Surround

半自动配对。感觉这个比较鸡肋,但是装一个似乎又好用,有点尴尬。快捷键要学大半年。

Plug 'tpope/vim-surround'
posted @ 2025-01-01 11:31  年枫  阅读(79)  评论(0)    收藏  举报