个人电脑的网络权限和系统权限都在自己手里,可以安装任意软件,进行各种设置,以达到自己用起来最顺手的状态。但工作电脑就不一定了,很多工作岗位只有有限的系统权限和网络权限,安装、使用软件就受到诸多掣肘:可能需要自己编译软件及各种插件,还很可能需要 IT 部门的协助,甚至要先经过审批才能进行。不要觉得只要我和 IT 关系足够好,部门协作足够流畅,这些问题都很容易解决。工作所需的软件安装的确没问题,但是如果你是一个强迫症,需要一些很细节的设置及个性化,甚至你自己都不知道最好的效果是什么,需要多次调节才能确定终极设置。这个过程你可能会羞于求助 IT。但是其实将工作工具设置到自己最舒服的状态,是基本需求。
因此,在工作过程中,我喜欢那些设置方便,依赖很少的工具,如 sumatraPDF,如 Vim
vim 不需要安装, Linux 系统在它就在。只是默认设置比较辣眼睛,用默认设置的我敬你是一条真汉子。一般人会针对自己的爱好设置下。那么如何将默认设置很丑陋难用的 vim 设置成颜值尚可,使用方便的工具? 我们需要一个自己完全理解,并且足够简单的 ~/.vimrc
autocmd Filetype c,cpp,hpp,python set nu " 只在打开特定格式文件时开启行号
autocmd Filetype c,cpp,hpp,python set numberwidth=1 " 当行数为个位数时,只占用一个字符位显示行号
syntax on " 打开语法高亮
autocmd FileType markdown,md set ts=2 " markdown 文件, tab 键缩进2个字符
colorscheme two-firewatch
"colorscheme solarized
set background=dark
set noshowcmd
set noshowmode
set laststatus=0
set noruler
set incsearch " 根据输入的查找内容实时匹配文本
nnoremap <CR> :noh<CR><CR> " 键入 Enter 后取消高亮搜索匹配文本
" highlight current line
set cursorline
highlight CursorLine cterm=NONE ctermbg=235 guibg=NONE guifg=NONE
set viminfo='1000,<800 "vim跨文件拷贝最大行数800
set nocompatible " required
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""python""""""""""""""""""""""""""""""
set shiftwidth=4
set tabstop=4
autocmd FileType python set expandtab
autocmd Filetype gitcommit setlocal spell textwidth=100 " for git commit
set smartindent
set autoindent
set termguicolors
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
fun! ShowFuncName()
let lnum = line(".")
let col = col(".")
echohl ModeMsg
echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW'))
echohl None
call search("\\%" . lnum . "l" . "\\%" . col . "c")
endfun
map F : call ShowFuncName() <CR> " C++ 显示光标处内容所在函数
这是用 Vim 打开 ~/.vimrc
的最终外观
对比上文的代码块和图中用 vim 打开的 `~/.vimrc` 文件显示效果可以看出,图中的显示效果明显好于代码块。 这里介绍下每项设置的初衷 最简化 vim 界面 状态栏要它干啥呢? 占据了我们一行空间,而显示器本来纵向尺寸就不如横向尺寸,没必要用一个状态栏占据我们宝贵的纵向空间,所以
set laststatus=0 " 不显示状态栏
set noruler " 不显示标尺
set noshowmode
set noshowcmd
横向尺寸虽然宽裕,但也不能浪费啊,一般只有 coding 时才需要行号,所以
autocmd Filetype c,cpp,hpp,python set nu " 只在打开特定格式文件时开启行号
autocmd Filetype c,cpp,hpp,python set numberwidth=1 " 当行数为个位数时,只占用一个字符位显示行号
即使在其他文件中偶尔需要行号,也可以简单的在命令行输入 set nu
调出行号,而不是每个文件都显示这一信息。
光标可以告诉我们当前所在行,但是有时光标不好定位,所以我会选择改变当前行的背景以突出当前行。另外在查看如 csv
文件时也可以清晰的区分那些数据在同一行,这需要如下设置
" highlight current line
set cursorline
highlight CursorLine cterm=NONE ctermbg=235 guibg=NONE guifg=NONE
为了重现图中的样式,还需要
Microsoft YaHei Mono
, 这是我认为的目前 Windows 平台的字体最优解Cygwin, Putty
等连接 Linux 的软件中一般使用 Alt + Enter
快捷键实现我为自己定下了几个使用准则
1. 精简工具链
使用 Vim 本身就是精简工具链的行为。系统里命令行直接进行查看、编辑。另外在此基础上,能用 vim 自己解决的问题就不要用其他软件,如需要使用分屏功能,那就直接用 vim 的分屏,而不是用 Tmux
的分屏
2. 减少插件
vim 的插件系统很强大,很方便,但是为了降低依赖,我会要求自己尽可能少装插件。现在我只用 Clang-Format 一个插件,用来自动格式化 C++ 代码
3. 少用自定义快捷键,不覆盖 Vim 的默认快捷键
快捷键的确方便,但是到了一个新环境还要再设置一次。对于中等频率或者更低频率的快捷键,强烈建议使用系统自带
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。