目录


文章目录


​目录​​​​Zsh​​​​oh-my-zsh​​​​VIM​​​​Ctags(函数跳)​​​​Cscope(函数跳增强)​​​​Vundle(插件管理器)​


Zsh

编译安装高版本的 Zsh​:

yum remove zsh

yum update -y
yum install -y git make ncurses-devel gcc autoconf man

git clone -b zsh-5.7.1 https://github.com/zsh-users/zsh.git /opt/zsh
cd /opt/zsh
./Util/preconfig
./configure
make -j 20 install.bin install.modules install.fns

command -v zsh | tee -a /etc/shells
chsh -s /usr/local/bin/zsh

oh-my-zsh

安装​:

# 安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

使用 powerlevel10k 主题​(​​​​):

$ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

$ vim ~/.zshrc
...
ZSH_THEME="powerlevel10k/powerlevel10k"

source ~/.zshrc

VIM

Linux VIM IDE_openstack

安装支持 Python3 的 VIM8​:

yum remove vim-*
yum install git -y
yum install gcc gcc-c++ -y
yum install ncurses-devel -y
yum install python3 python3-devel python-devel -y

git clone --depth 1 https://github.com/vim/vim /opt/vim
cd /opt/vim

./configure --with-features=huge \
--enable-multibyte \
--enable-pythoninterp=yes \
--enable-python3interp=yes \
--with-python-config-dir=/usr/lib64/python2.7/config \
--with-python3-config-dir=/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu \
--enable-gui=gtk2 \
--enable-cscope \
--prefix=/usr/local/vim

make && make install

修改环境变量:

echo "export PATH=$PATH:/usr/local/vim/bin" >> ~/.zshrc
source ~/.zshrc
vim --version | grep python

Ctags(函数跳转)

Ctags(Generate tag files for source code)是 VIM 下的一款源码分析利器,默认安装在 VIM 中,但也有可能需要手动安装。

安装​:

$ yum install ctags -y
ln -s /usr/bin/ctags /usr/local/bin/ctags

使用​:

  1. 在源代码的上级目录,通常是项目的顶级目录执行指令:
ctags -R *

  1. 上述指令会生成 tags 文件,记录了所有函数的记录信息。
  2. 在 tags 文件所在的路径下打开源码文件,光标移至函数名处,快捷键 CTRL+] 进入函数。
  3. 快捷键 CTRL+t 退出函数,返回进入原点。

ctags -R * 这条命令会在当前目录下产生一个 tags 文件,当用户在当前目录中运行 vi/vim 时,就会自动载入此 tags 文件。其中的 -R 选项表示递归创建,包括源代码根目录(当前目录)下的所有子目录。

tags 文件中包括以下对象:


  • 枚举型变量的值
  • 函数的定义、原型和声明
  • 命名空间(namespace)
  • 类型定义(typedefs)
  • 变量(包括定义和声明)
  • 类(class)、结构(struct)、枚举类型(enum)和联合(union)
  • 类、结构和联合中的成员变量

注意,运行 vim 时,必须在 tags 文件所在的目录下运行,否则在 vim 启动后执行指令 ​​:settags=<tags_path>​​。显然,这样并不方便,所以可以通过修改 .vimrc 来解决这一问题:

" ctags setting
set tags+=/root/workspace/{project_name}/tags

Cscope(函数跳转增强)

Cscope 是类似于 ctags 一样的工具,可以认为是 ctags 的增强版。

查看 VIM 是否支持 Cscope:

$ vim --version | grep cscope

安装​:

yum install cscope -y

Vundle(插件管理器)

安装​:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

vim +PluginInstall +qall

NERD Tree(代码目录树)

NERD Tree 提供的项目目录结构浏览功能,极大的加强了开发者对整个项目目录结构的辨识和把控。

安装​:

Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'Xuyuanp/nerdtree-git-plugin'
Plugin 'ryanoasis/vim-devicons'
Plugin 'tiagofumo/vim-nerdtree-syntax-highlight'

NOTE:nerdtree-git-plugin 要求 git version == 2.30.1。

yum remove "git*"
yum -y install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm
yum install git

Tagbar(代码符号)

符号(Symbol)窗口列出了当前文件中的宏、全局变量、函数、类等信息,使用光标选择就能够跳相应源代码的位置,非常便捷。

安装​:

Plugin 'majutsushi/tagbar'

YouCompleteMe(代码补全)

YouCompleteMe 是一款快速、即用型的模糊搜索代码补全引擎,包括了以下几种引擎:


  • 基于标识符的引擎,可与每种编程语言一起使用。
  • 基于 UltiSnips 的代码片补全。
  • 基于 Jedi 的 Python 2/3 补全。
  • 基于 Clang 的 C 系列补全。
  • 基于 Golang gocode 和 godef 的补全。
  • 基于 racer 的 Rust 补全。
  • 基于 OmniSharp 的 C# 补全。
  • 基于 TSServer 的 TypeScript 补全。
  • 基于 Tern 的 JavaScript 补全。
  • 基于 jdt.ls 的 Java 补全。
  • 基于 omnifunc 的 Ruby,PHP 补全。

安装​:

yum install gcc gcc-c++ g++ python3-devel
pip2 intall cmake

# 安装 devtoolset-8-gcc-c++
yum install yum-utils -y
yum install centos-release-scl -y
yum-config-manager --enable rhel-server-rhscl-8-rpms
yum install devtoolset-8 -y
scl enable devtoolset-8 zsh

cd ~/.vim/bundle/YouCompleteMe
python3 ./install.py --clang-completer

python-mode(Python 开发支持)

python-mode 支持一下 Python 开发支持:


  • 支持 Python2.6+ 及 Python3.2+
  • 支持语法高亮
  • 支持 virtualenv
  • 支持代码折叠
  • 支持自动缩进
  • 支持在 Vim 中直接运行 Python 程序 (​​<leader>r​​)
  • 支持增加/删除 DEBUG 断点 (​​<leader>b​​)
  • 支持语法静态检查 (​​:PymodeLint​​)
  • 支持自动修复 PEP8 错误 (​​:PymodeLintAuto​​)
  • 支持代码自动补全
  • 支持在 Python documentation 中进行搜索 (​​<leader>K​​)
  • 支持跳转到定义处 (​​<C-c>g​​)
  • 支持鼠标移动

  • [[:跳到上一个类或函数
  • ]]:跳到下一个类或函数
  • [M:跳到上一个类或方法
  • ]M:跳到下一个类或方法

  • 支持代码重构

安装​:

Plugin 'python-mode/python-mode'

NOTE:当使用 Pylint 作为静态检查 checker 时,需要先安装 Pylint。

pip3 install pylint

Syntastic(语法检查)

Syntastic 是老牌的语法检查插件,它通过外部语法检查器运行文件,并向用户显示任何结果错误,可以按需完成,也可以自动保存文件。

打开对应文件时,Syntastic 会自动进行语法检查,高亮错误的位置。虽然性能不及 ale,但兼容性要更好一些,支持大部分的语言(https://github.com/vim-syntastic/syntastic#1-introduction)。

注意,针对某些具体语言,指定了 checker,需要对应安装外部依赖,例如:pyflakes、pep8、jshint、golint 等。

vim-easymotion(快速移动光标)

参考:http://www.wklken.me/posts/2015/06/07/vim-plugin-easymotion.html

Dotfiles

dotfiles(点文件)顾名思义就是文件名前缀带 . 的文件,因为这类文件在 Linux 中一般为与系统环境相关的隐藏文件,例如:.vimrc、.bashrc、.profile、.bash_profile,所以在一定程度上 ditfiles 代表了 Linux 系统环境的个性化配置。

简而言之就是,如果在另外一台计算机中同步了这些 dotfiles 就能拥有与你自己的计算机基本一致的环境设置。了而且 dotfiles + Github 就能够实现只要有网络,那么所有的计算机都能够变成自己熟悉且习惯的样子。

git clone https://github.com/JmilkFan/dotfiles.git
ln -s dotfiles/.vimrc ~/.vimrc