前言
长期在win下办公,习惯了win + Source Insight + SecureCRT + SSH + 远程Linux服务器的工作模式,现完全切换至Linux平台,首先就想在该平台下搭建类似于Source Insight的IDE环境,从而实现本地代码阅读及编译。
本文将逐步记录搭建步骤及细节。
vim
这里跳过安装步骤直接介绍如何设定vim。
vim的设定是通过文件vimrc来完成的,针对所有用户可直接修改/etc/vim/vimrc; 若只针对个人用户,可在个人用户目录下创建.vim目录并添加文件vimrc,我采用的是后者。
具体设定如下:
选项 | 说明 |
---|---|
set mouse=a | 开启鼠标所有模式 |
set nocompatible | 关闭vim与vi兼容,避免冲突 |
set encoding=utf-8 | 用户手册中建议设定该值 |
set showcmd | 命令行显示输入命令 |
set showmatch | 显示匹配的括号 |
set incsearch | 实时搜索 |
set hlsearch | 高亮显示匹配点 |
set number | 显示行号 |
set laststatus=2 | 总是显示状态栏 |
set cursorline | 高亮显示当前行 |
set tabstop=4 | 设置tab键的宽度 |
set shiftwidth=4 | 自动缩进使用的4个空格 |
set autoindent | 自动采用上一行缩进值 |
filetype plugin indent on | 具体功能见下表 |
命令 | detection | plugin | indent |
---|---|---|---|
:filetype on | on | unchanged | unchanged |
:filetype off | off | unchanged | unchanged |
:filetype plugin on | on | on | unchanged |
:filetype plugin off | unchanged | off | unchanged |
:filetype indent on | on | unchanged | on |
:filetype indent off | unchanged | unchanged | off |
:filetype plugin indent on | on | on | on |
:filetype plugin indent off | unchanged | off | off |
查看filetype plugin indent状态
:filetype |
以上设定可通过:help cmd查看帮助文档
- 常用命令
命令 | 解释 |
---|---|
[[ | 向前跳到代码块开始处 |
]] | 向后跳到 |
gD | 跳到变量的定义处 |
>> | 增加缩进;多行缩进>x> |
<< | 减少缩进;多行缩进<2< |
gg | 移动到文档开头 |
G | 移动到文档末尾 |
^ | 移动到行首第一个非空白字符 |
i | 在光标前插入 |
I | 在行首插入 |
a | 在光标后插入 |
A | 在行末插入 |
s | 删除光标所在的字符再插入 |
S | 删除光标所在行再插入 |
o | 在当前行下面新建行 |
O | 在当前行上面新建行 |
vim插件
1. Vbundle
Vbundle是一款vim插件管理工具,利用它可以实现对插件的搜索、安装、更新、卸载。
1.1 下载
mkdir ~/.vim/bundle -p cd ~/.vim/bundle/ git clone https://github.com/VundleVim/Vundle.vim.git |
set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin ’VundleVim/Vundle.vim' call vundle#end() |
1.3 配置插件
- 插件来自Github
格式:Plugin ‘用户名/插件仓库名’ |
---|
- 插件来自vim-scripts.org
格式:Plugin ‘插件名称’ |
---|
实际上是Plugin ‘vim-scripts/插件仓库名’,只是此处的用户名可以省略 |
- 插件来自其他git库
格式:Plugin ‘git clone 地址’ |
---|
- 其他方式
可参考Vundle.vim/README.md
2. YouCompleteMe
YouCompleteMe是一款自动补全工具,支持多种语言。
2.1 安装
2.1.1 在vimrc.bundles中添加+所在行内容并保存:
call vundle#begin() ... + Plugin 'Valloric/YouCompleteMe' ... call vundle#end() |
2.1.2 在vim中执行以下指令:
:PluginInstall
静待指令执行完成(时间可能会有点久,需耐心等待)。
待指令完成后执行以下指令:
cd ~./vim/bundle/YouCompleteMe ./install.py --clangd-completer |
Ubuntu 16.04: | |
---|---|
Go: | sudo apt install golang-go ./install.py --go-completer |
C#: | sudo apt install mono-complete ./install.py --cs-completer |
JavaScript and TypeScript: | sudo apt install Node.js sudo apt install npm ./install.py --ts-completer |
Rust: | sudo apt-get install curl curl https://sh.rustup.rs -sSf | sh ./install.py --rust-completer |
Java: | sudo apt install openjdk-8-jdk ./install.py --java-completer |
1. 以上安装步骤可参考YouCompleteMe/doc/youcompleteme.txt 2. 关于Rust,可参考该大佬文章Rust学习(1):ubuntu下安装Rust语言包以及IDE插件支持 |
2.2 配置
在vimrc.bundles添加如下设定:
let g:ycm_global_ycm_extra_conf='文件".ycm_extra_conf.py"的路径' |
其他设定可参考doc/youcompleteme.txt
3. taglist
显示文件中的变量和函数列表。
3.1 安装
3.1.1 在vimrc.bundles中添加+所在行内容并保存:
call vundle#begin() ... + Plugin 'taglist.vim' ... call vundle#end() |
3.1.2 在vim中执行以下指令:
:PluginInstall
3.1.3 系统中安装ctags
sudo apt install ctags |
3.2 使用
代码目录下执行以下命令生成taglist:
ctags -R |
4. srcexpl
预览函数和变量定义。
4.1 安装
4.1.1 在vimrc.bundles中添加+所在行内容并保存:
call vundle#begin() ... + Plugin 'srcexpl' ... call vundle#end() |
4.1.2 在vim中执行以下指令:
:PluginInstall
5. trinity
这是一款管理taglist、srcexpl和NERD_tree窗口的插件(NERD_tree是一款目录插件,其已包含在trinity插件目录下)。
5.1 安装
5.1.1 在vimrc.bundles中添加+所在行内容并保存:
call vundle#begin() ... + Plugin 'wesleyche/trinity' ... call vundle#end() |
5.1.2 在vim中执行以下指令:
:PluginInstall
5.2 配置
添加以下内容至vimrc.bundles:
" Open and close all the three plugins on the same time nmap <F8> :TrinityToggleAll<CR> " Open and close the srcexpl.vim separately nmap <F5> :TrinityToggleSourceExplorer<CR> " Open and close the taglist.vim separately nmap <F6> :TrinityToggleTagList<CR> " Open and close the NERD_tree.vim separately nmap <F7> :TrinityToggleNERDTree<CR> |
6. ctrlp
ctrlp是一款文件查找插件。通过该插件可快速查找并打开所需文件。
6.1 安装
6.1.1 在vimrc.bundles中添加+所在行内容并保存:
call vundle#begin() ... + Plugin 'ctrlpvim/ctrlp.vim' ... call vundle#end() |
6.1.2 在vim中执行以下指令:
:PluginInstall
6.2 配置
添加以下配置至vimrc.bundles:
" 打开最近最多使用模式 nmap <c-m> :CtrlPMRU<CR> " 打开缓冲区搜索模式 nmap <c-b> :CtrlPMRU<CR> " 忽略如下文件 let g:ctrlp_custom_ignore = { \ 'dir': '\v[\/]\.(git|hg|svn|rvm)$', \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc)$', \ } " 禁用设置工作目录功能 let g:ctrlp_working_path_mode = 0 " 显示匹配窗口的位置 let g:ctrlp_match_window='bottom' " 列出文件时CtrlP是否会跟随链接 " 0 - 不要跟随链接。 " 1 - 跟随但是忽略内部循环的链接,避免重复。 " 2 - 无差别的跟随所有链接。 let g:ctrlp_follow_symlinks = 1 " 设置按文件名搜索(否则为全路径) let g:ctrlp_by_filename = 1 " 启用正则表达式匹配 let g:ctrlp_regexp = 1 |
7. c-support
c-support是一款编码辅助工具,可自动填充注释框架。
7.1 安装
8.1.1 在vimrc.bundles中添加+所在行内容并保存:
call vundle#begin() ... + Plugin 'WolfgangMehner/c-support' ... call vundle#end() |
7.1.2 在vim中执行以下指令:
:PluginInstall
7.2 使用
7.2 配置
7.2.1 添加个人信息**
添加个人信息至c-support/templates/Templates。
若需自动添加额外内容,可将模型添加至以下文件并按照上述操作设定好预设值:
c-support/templates/c.comments.template |
7.3 使用
命令 | 功能 |
---|---|
\if | 添加函数 |
\im | 添加main函数 |
\cfu | 为函数添加描述 |
\cfr | 添加框架注释 |
\p< | 自动填充#include<> |
\rc | 保存,编译并执行 |