Linux 工作环境配置

终端

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
  1. 本来想使用vundle的,而且之前也是用的vundle,但是看到了这篇文章,感觉是大神,觉得听大神的没错大神肯定不会坑我的,因此这次用vim-plug试试。
  2. 安装:curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  3. 先无脑配置.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)
  1. 进入vim,执行一下:PlugInstall,然后不出意外应该就可以了,如果不可以,那就再执行一遍试试。
  2. 其他命令
    1. 升级vim-plug本身::PlugUpgrade
    2. 安装插件:改一下vimrc,执行:source ~/.vimrc是配置生效,然后执行:PlugInstall
    3. 检查插件状态::PlugStatus
    4. 更新插件::PlugUpdate
    5. 审查插件:更新的插件可能无法正常工作。可以回滚有问题的插件。输入 :PlugDiff 命令,然后按回车键查看上次 :PlugUpdate的更改,并在每个段落上按 X 将每个插件回滚到更新前的前一个状态。
    6. 删除插件:在配置文件中添加的 plug 命令。然后,运行 :source ~/.vimrc 或重启 Vim 编辑器。最后,:PlugClean
  3. 我安装的插件
    1. ‘itchyny/lightline.vim’
    2. ‘octol/vim-cpp-enhanced-highlight’
      vim-cpp-enhanced-highlight 主要通过 .vim/bundle/vim-cpp-enhanced-highlight/after/syntax/cpp.vim 控制高亮关键字及规则,所以,当你发现某个 STL 容器类型未高亮,那么将该类型追加进 cpp.vim 即可。
    3. derekwyatt/vim-fswitch
    4. ace
      1. 需要代码检查器的支持,比如gcc, clang, cppcheck 以及 clang-format 等,需要另行安装并放入 PATH下面,我选择了安装cppcheck
      2. 在开发机上没有root权限,编译源码参考https://github.com/danmar/cppcheck,然后添加PATH即可
      3. 实在不行看这篇文章也行,提供了一些没有权限时安装软件的方案
      4. 但是怎么也检测不出来内存泄漏啊!
      5. https://www.jianshu.com/p/110b27f8361b
    5. nathanaelkane/vim-indent-guides
      1. :IndentGuidesEnable
      2. :IndentGuidesDisable
      3. :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
    • 然后我放弃了😢

源管理

  • 安装python3和pip3 https://zcdll.github.io/2018/01/29/own-python-pip/,正常来说,安装完python3,在安装目录下就有pip了
    • 修改pip源,~/.pip/pip.conf ,参考
    • 通过隧道连接服务器上的jupyter 参考文章
  • 如果没能直接有,那就得自己安装了,可能需要从 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(没安装成功)

其他

免费

收费

  • istatemenus
  • 这个有命令行版本,更简陋

参考文章:

  1. https://github.com/skyseraph/Soft-Tools/blob/master/docs/Mac.md
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值