终端
shell
- 如果是pc就安装iterm2,如果是远程服务器就跳过该步骤
- 调整字体,主题;熟悉呼出和tab切换快捷键
- 安装完成后,在/bin目录下会多出一个zsh的文件。修改默认终端,执行:【chsh -s /bin/zsh】
- chsh需要su权限,没有的话可以在bashrc中加入【exec /bin/zsh】
- 此时可以安装autojump了,https://blog.csdn.net/liujan511536/article/details/43560777 或者 https://blog.csdn.net/u012801337/article/details/47147633
- 安装oh-my-zsh,执行
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
,打开.zshrc文件,修改主题为agnoster,- 也可以配置插件,插件贼多,自己去【~/oh-my-zsh/plugins】下面去选,后面的链接推荐了连个代码高亮和自动补全的插件,需要手动安装
- 人肉推荐一个插件colored-man-pages
- 下载字体,详见后面文章
- 安装pip,执行【sudo easy_install-2.7 pip】可以根据对应的python版本安装,python2和3最好都装,因为后面安装的powerline是基于python2的,不要装错。
- 安装powerline,(这个我好像是安装失败了)
- 安装fzf:https://segmentfault.com/a/1190000011328080
- 基本都是参考这个文章; 以及这个
vim
配置
vim-plug
- 本来想使用vundle的,而且之前也是用的vundle,但是看到了这篇文章,感觉是大神,觉得听大神的没错大神肯定不会坑我的,因此这次用vim-plug试试。
- 安装:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- 先无脑配置.vimrc
" 定义快捷键的前缀,即<Leader>
let mapleader=';'
" vim-plug
call plug#begin('~/.vim/plugged')
Plug 'itchyny/lightline.vim'
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'nathanaelkane/vim-indent-guides'
" 随 vim 自启动
let g:indent_guides_enable_on_vim_startup=0
" 从第二层开始可视化显示缩进
let g:indent_guides_start_level=2
" 色块宽度
let g:indent_guides_guide_size=1
Plug 'derekwyatt/vim-fswitch'
" *.cpp 和 *.h 间切换
nmap <silent> <Leader>sw :FSHere<cr>
"Plug 'Valloric/YouCompleteMe' ,{'do':'python3 install.py'}
Plug 'terryma/vim-multiple-cursors'
Plug 'dense-analysis/ale'
let g:ale_linters = {'cpp': ['cppcheck','clang','gcc'],'c': ['cppcheck','clang', 'gcc'],'python': ['pylint'],'bash': ['shellcheck']}
let g:ale_echo_msg_format = '[%linter%] %code: %%s'
let g:ale_lint_on_text_changed = 'normal'
let g:ale_lint_on_insert_leave = 1
let g:airline#extensions#ale#enabled = 1
let g:ale_c_gcc_options = '-Wall -O2 -std=c99'
let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'
let g:ale_c_cppcheck_options = ''
let g:ale_cpp_cppcheck_options = ''
Plug 'majutsushi/tagbar'
" 设置 tagbar 子窗口的位置出现在主编辑区的左边
let tagbar_left=1
" 设置显示/隐藏标签列表子窗口的快捷键。速记:identifier list by tag
nnoremap <Leader>ilt :TagbarToggle<CR>
" 设置标签子窗口的宽度
let tagbar_width=32
" tagbar 子窗口中不显示冗余帮助信息
let g:tagbar_compact=1
" 设置 ctags 对哪些代码标识符生成标签
let g:tagbar_type_cpp = {
\ 'kinds' : [
\ 'c:classes:0:1',
\ 'd:macros:0:1',
\ 'e:enumerators:0:0',
\ 'f:functions:0:1',
\ 'g:enumeration:0:1',
\ 'l:local:0:1',
\ 'm:members:0:1',
\ 'n:namespaces:0:1',
\ 'p:functions_prototypes:0:1',
\ 's:structs:0:1',
\ 't:typedefs:0:1',
\ 'u:unions:0:1',
\ 'v:global:0:1',
\ 'x:external:0:1'
\ ],
\ 'sro' : '::',
\ 'kind2scope' : {
\ 'g' : 'enum',
\ 'n' : 'namespace',
\ 'c' : 'class',
\ 's' : 'struct',
\ 'u' : 'union'
\ },
\ 'scope2kind' : {
\ 'enum' : 'g',
\ 'namespace' : 'n',
\ 'class' : 'c',
\ 'struct' : 's',
\ 'union' : 'u'
\ }
\ }
"Plug 'Yggdroot/LeaderF' " 搜索
"let g:echodoc_enable_at_startup = 1
Plug 'vim-scripts/DfrankUtil'
Plug 'vim-scripts/vimprj'
Plug 'vim-scripts/indexer.tar.gz' " 自动索引
let g:indexer_disableCtagsWarning=1
" 设置插件 indexer 调用 ctags 的参数
" 默认 --c++-kinds=+p+l,重新设置为 --c++-kinds=+p+l+x+c+d+e+f+g+m+n+s+t+u+v
" 默认 --fields=+iaS 不满足 YCM 要求,需改为 --fields=+iaSl
let g:indexer_ctagsCommandLineOptions="--c++-kinds=+p+l+x+c+d+e+f+g+m+n+s+t+u+v --fields=+iaSl --extra=+q"
Plug 'ervandew/supertab'
Plug 'haya14busa/incsearch.vim'
"Plug 'Shougo/echodoc.vim'
" To use echodoc, you must increase 'cmdheight' value.
"set cmdheight=2
"let g:echodoc_enable_at_startup = 1
Plug 'rhysd/clever-f.vim'
Plug 'easymotion/vim-easymotion'
" vim-easymotion
let g:EasyMotion_smartcase = 1
map <leader>w <Plug>(easymotion-bd-w)
nmap <leader>w <Plug>(easymotion-overwin-w)
call plug#end()
" ========插件功能配置结束============
" 开启语法高亮
" 开启语法高亮功能
syntax enable
" 允许用指定语法高粱配色方案替换默认方案
syntax on
" 自适应不同语言的智能缩进
filetype indent on
" 自动缩进设置
set tabstop=4
set shiftwidth=4 " 设置格式化时制表符占用空格数
set tabstop=4 " 设置编辑时制表符占用空格数
set expandtab " 将制表符扩展为空格,具体空格数量参考 tabstop 和 shiftwidth 变量;
set autoindent
"智能缩进
set smartindent
" 让 vim 把连续数量的空格视为一个制表符
set softtabstop=4
" 显示行号
set number
" 检测文件类型
filetype on
filetype plugin on
" 文件修改之后自动读入
set autoread
" 显示当前行号和列号
set ruler
" 在状态栏显示正在输入的命令
set showcmd
" 左下角显示当前Vim模式
set showmode
"搜索结果高亮显示
set hlsearch
set incsearch " 输入搜索内容时就显示搜索结果
set incsearch " 开启实时搜索功能,需要插件支持
autocmd InsertLeave * se nocul " 用浅色高亮当前行
autocmd InsertEnter * se cul " 用浅色高亮当前行
set cursorline " 突出显示当前行
" 总是显示状态栏
set laststatus=2
" 基于缩进或语法进行代码折叠
set foldmethod=indent
"set foldmethod=syntax
" 启动 vim 时关闭折叠代码
set nofoldenable
" solarized 主题
syntax enable
set background=dark
colorscheme solarized
" incsearch.vim
map / <Plug>(incsearch-forward)
map ? <Plug>(incsearch-backward)
map g/ <Plug>(incsearch-stay)
- 进入vim,执行一下
:PlugInstall
,然后不出意外应该就可以了,如果不可以,那就再执行一遍试试。 - 其他命令
- 升级vim-plug本身::PlugUpgrade
- 安装插件:改一下vimrc,执行:source ~/.vimrc是配置生效,然后执行:PlugInstall
- 检查插件状态::PlugStatus
- 更新插件::PlugUpdate
- 审查插件:更新的插件可能无法正常工作。可以回滚有问题的插件。输入 :PlugDiff 命令,然后按回车键查看上次 :PlugUpdate的更改,并在每个段落上按 X 将每个插件回滚到更新前的前一个状态。
- 删除插件:在配置文件中添加的 plug 命令。然后,运行 :source ~/.vimrc 或重启 Vim 编辑器。最后,:PlugClean
- 我安装的插件
- ‘itchyny/lightline.vim’
- ‘octol/vim-cpp-enhanced-highlight’
vim-cpp-enhanced-highlight 主要通过 .vim/bundle/vim-cpp-enhanced-highlight/after/syntax/cpp.vim 控制高亮关键字及规则,所以,当你发现某个 STL 容器类型未高亮,那么将该类型追加进 cpp.vim 即可。 - derekwyatt/vim-fswitch
- ace
- 需要代码检查器的支持,比如gcc, clang, cppcheck 以及 clang-format 等,需要另行安装并放入 PATH下面,我选择了安装cppcheck
- 在开发机上没有root权限,编译源码参考https://github.com/danmar/cppcheck,然后添加PATH即可
- 实在不行看这篇文章也行,提供了一些没有权限时安装软件的方案
- 但是怎么也检测不出来内存泄漏啊!
- https://www.jianshu.com/p/110b27f8361b
- nathanaelkane/vim-indent-guides
- :IndentGuidesEnable
- :IndentGuidesDisable
- :IndentGuidesToggle
扩展阅读:
https://zhuanlan.zhihu.com/p/57476890
https://github.com/chxuan/vimplus/blob/master/help.md
https://github.com/yangyangwithgnu/use_vim_as_ide
https://hiberabyss.github.io/2018/03/21/vim-plug-introduction/
快捷键复习
首先是光标移动,以前windows键盘上有pagedown和up,左右还支持ctrl加上方向键。现在mac键盘上都没了,看来必须要寻求出路啦,所以说需求是最好的动力。现在需要掌握的有以下几个,不填具体按键,每次看见时确定一下自己还会吗
- 跳转到最近的空行: ?
- 跳转到行首行尾:0 $
- 跳转到指定行
- 跳转到当前的区块头尾 ?
- 当前屏的顶部/中部/底部 HML
- 前后翻页
- 到本行第一个不是blank字符的位置:^
- 可以重复上一次的命令.
- 匹配光标当前所在的单词的上一个或下一个: * 和 #
- 以单词为单位移动:w和e
- 到下一个’x’字符位置:fa
- 到下n个’x’字符位置:nfa
- 打开或关闭当前折叠: za;关闭所有折叠: zM,;打开所有折叠: zR.
进阶操作
- visual模式下,进行多行注释
- 上述基本操作是可以组合的
- 行号开关
- Ctrl + w + w:这个命令会在所有窗口中循环移动
- Ctrl + w + t:移动到最左上角的窗口
- Ctrl + w + b:移动到最右下角的窗口
- Ctrl + w + p:移动到前一个访问的窗口
- 智能补全
开发
python
由于没有su权限,所以需要手动编译安装
基础
- 安装python前先看这个,服务器上python3安装jupyter需要sqlite环境, 参考文章
- (支持python2:pip2 install ipykernel)
- 简而言之,因为没有root权限,所以回自己编译安装sqlite3,安装到指令目录下后,不是重新编译安装就可以了,首先在./configure时要加上–enable-loadable-sqlite-extensions,然后改变setup.py中的sqlite_inc_path,填上自己的sqlite的安装路径,然后再对python编译安装
- 附上我的命令:./configure --prefix=/data02/home/zhangyongtao.protao/Install/python3.6.9/ --enable-loadable-sqlite-extensions --enable-optimization,ssl那个参数是因为迁移开发机之后显示import ssl失败,网上查到的解决办法
- 如果是编译安装python2,还可能在
import numpy
的时候遇到错误/home/xxx/.local/lib/python2.7/site-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS2_FromObject
,解决办法是重新编译python,configure的时候加上--enable-unicode=ucs4
,参考这篇文章。 - 在 configure 完成之后注意看看提示,
configure: WARNING: unrecognized options: --with-ssl, --enable-loadable-sqlite-extensions
,比如我的有如下警告信息。这个应该是因为,系统中还没有安装对应的扩展库,导致python无法开启对应的编译选项,这个后面可是要踩坑的。我在后面使用一个需要 urllib 库,访问 https 链接的时候就出问题了,只能回头编译安装 openssl 再重新编译安装 python。😭。参考。 - 安装完openssl需要加上重新configure:
--with-openssl=/path/to/openssl
- ctype需要依赖libffi,注意有版本限制,只能是3.1,参考这里
- sqlite3 参考这篇文章
- lzma 参考这篇
- FLAG也可以写到启动脚本中 参考这里
`
但是不是安装完ssl就可以的,Modules/Setup.dist 中的 SSL 相关配置。
修改之后重新configure和make,就会发现没有错误提示了
后来ssl还有问题,用这个方法解决的:
https://www.jianshu.com/p/d3b60e42fc02
- 编译安装好工具之后,别忘了改PATH
- 上面这些在configure和make的输出中其实都可以看到。我在看make的输出的时候,发现tkinter没有支持,然后顺便就把这个安装好了在安装python…不然以后也要踩坑。可以参考这篇。
- 安装tk时说缺少X11,那就
git clone git://anongit.freedesktop.org/git/xorg/lib/libX11
,然后执行./auto
,然后说缺少xorg-macros,那就执行git clone https://github.com/freedesktop/xorg-macros
,然后执行./autogen.sh
- 然后我放弃了😢
- 安装tk时说缺少X11,那就
源管理
- 安装python3和pip3 https://zcdll.github.io/2018/01/29/own-python-pip/,正常来说,安装完python3,在安装目录下就有pip了
- 如果没能直接有,那就得自己安装了,可能需要从 setuptool 开始装起
- conda 暂不使用(体验感觉一般,还是使用pip就可以,有虚拟环境的需求就加上vitualenv)
- Jupyter lab (使用了一阵体验不太好,没有继续用)
- 使用插件(我换成lab就是为了用插件)的话需要安装nodejs和npm,在公司机器上源码安装https://www.jianshu.com/p/54e336acbae3
- 推荐插件
- https://zhuanlan.zhihu.com/p/101070029
- https://www.cnblogs.com/feffery/p/13364668.html
- 推荐插件
辅助
美化软件与办公工具:
- 桌面软件:monitorearch
- 腾讯柠檬清理
- Itsycal(日历)
- snipaste(截图)
效率
- pv
- shellcheck
- icdiff
- fzf
- 有可能此时还安装不了autojump,需要zsh
- sudo gem install iStats
- navi(没安装成功)
其他
免费
- appcleaner
- iina
- The Unarchiver
- SourceTrail
收费
- istatemenus
- 这个有命令行版本,更简陋
参考文章:
- https://github.com/skyseraph/Soft-Tools/blob/master/docs/Mac.md