版本 | 更新日期 | 简介 |
---|---|---|
v1.1 | 2022.09.03 | ctags和gtags等 |
v1.0 | 2022.08.26 | 第一个版本 |
此篇文档主要环境为:Window下使用Vmware Station搭建的Ubuntu虚拟机,然后使用vim编辑器在Linux环境下配置一套基础的开发调试环境。
1. 背景
最近开始转向Linux下嵌入式软件开发,为此想要整理一份自己开发中整体环境的搭建,从零开始,为类似需求的人提供一些帮助。
2. Windows下安装vmware station 15
使用vmware station虚拟机软件,使用版本为15,安装过程不再赘述,基本都是一直下一步,密钥需要自己找一下,我是使用的正版的密钥。然后有一些注意的点,或许大家会遇到,下面整理一下。
2.1 环境冲突问题
vmware跟Windows的虚拟环境是冲突的,意思大概是使用wsl2就不能使用vmware,不然就会vmware闪退,需要关闭相关服务,据说,最新版vmware已经解决了冲突问题,大家按需使用如下过程
Windows左下角->【设置】
然后选择【应用】
右侧,【相关设置】下有个【程序和功能】选择打开
左侧有个【启动或关闭Windows功能】选择打开,会弹出一个小框,把【Hyper-V】、【适用于Linux的Window子系统】和【虚拟机平台】取消勾选,然后等待,提示重启电脑生效
2.2 wmware tools安装问题
一般情况下,在wmware tools里添加虚拟机的时候,会自动安装wmware tools,此工具主要用来Windows和里面的虚拟环境交互,比如复制粘贴文件,文本等情况,但实际情况可能会没有安装成功,或者发现没有生效,可以选择重新安装,手动安装步骤可以看这里:https://blog.csdn.net/williamcsj/article/details/121019391
3. 安装ubuntu虚拟机环境
这里我选择的是ubuntu 20.04版本,大家可以按需选择更新或更旧的版本
3.1 下载镜像
不要使用官网去下载镜像,速度很慢,可以选择国内的大厂镜像源,比如阿里云,中科大云,清华云等,这里我选择是中科大源:http://mirrors.ustc.edu.cn/ubuntu-releases/releases/20.04/
3.2 安装过程
打开vmware,选择新建虚拟机,第一次安装,打开主界面就有,有其他环境的,可以选择左上角【文件】-【新建虚拟机】
选择【自定义】,然后下一步
第二个界面,非常重要,要选择向下兼容一下,偏低一些最好,不要使用最新的,这里选择12.x,不然可能会报错:**发生错误,导致虚拟cpu进入关闭状态**
弹窗错误,后面都是常规选择
上面按需选择,看看自己的Linux属于哪个发行版,本人是安装Ubuntu,下面位置可以自己定义,尽量不要c盘,会占用比较大内存
上面处理器配置,不要两个数乘积不要超过电脑配置,一般2*2够用
运行内存,尽量为电脑配置的一般为宜,如果多个虚拟机环境,就稍微小一些,后面几步,默认选择即可
下图中磁盘大小,看看上面位置的硬盘有多大,一般先分配个40G,基本够用,我选择把虚拟磁盘存储为单个文件
跳过一步的截图,前面选择的稍后选择操作系统,下面要配置下载的镜像的位置了
选择【新CD/DVD】-【使用ISO映像文件】,选择刚刚下载的镜像位置,然后点完成即可,步骤结束
后面打开虚拟机,进入到Ubuntu系统的安装过程,没有特殊配置,选择最小安装即可,后续需要什么再手动安装,这样能够锻炼到自己
3.3 Ubuntu桌面自适应问题
安装好可能会出现Ubuntu桌面分辨率很奇怪,各种拉伸等等,首先前面所提到的vmware tools安装好,然后虚拟机关机,vmware菜单栏选择【虚拟机】-【设置】-【显示屏】,按照如图所示,取消勾选拉伸模式,保存重启即可
上篇在vmware下安装好了Ubuntu 20.04版本的Linux环境,下面要基于Ubuntu环境做一些基础配置
4. Linux环境优化
4.1 换源
项目地址:https://github.com/SuperManito/LinuxMirrors
4.1.1 已适配的 GNU/Linux 发行版
Debian | 8.0 ~ 11.2 |
---|---|
Ubuntu | 16.04 ~ 21.10 |
Kali Linux | 2.0 ~ 2021.4 |
Red Hat Enterprise Linux | 7.0 ~ 8.5 |
CentOS | 7.0 ~ 8.5 |
Fedora | 28 ~ 35 |
4.1.2 脚本当前使用的开源镜像站
镜像站名称 | 镜像站地址 | IPv6 | Kali Linux | Fedora | EPEL | |
---|---|---|---|---|---|---|
1 | 阿里云 | mirrors.aliyun.com | √ | √ | √ | √ |
2 | 腾讯云 | mirrors.cloud.tencent.com | √ | √ | √ | √ |
3 | 华为云 | mirrors.huaweicloud.com | √ | √ | √ | √ |
4 | 网易 | mirrors.163.com | √ | |||
5 | 搜狐 | mirrors.sohu.com | ||||
6 | 清华大学 | mirrors.tuna.tsinghua.edu.cn | √ | √ | √ | √ |
7 | 浙江大学 | mirrors.zju.edu.cn | √ | √ | √ | |
8 | 南京大学 | mirrors.nju.edu.cn | √ | √ | √ | |
9 | 重庆大学 | mirrors.cqu.edu.cn | √ | √ | √ | |
10 | 兰州大学 | mirror.lzu.edu.cn | √ | √ | √ | |
11 | 上海交通大学 | mirror.sjtu.edu.cn | √ | √ | √ | √ |
12 | 哈尔滨工业大学 | mirrors.hit.edu.cn | √ | √ | √ | |
13 | 中国科学技术大学 | mirrors.ustc.edu.cn | √ | √ | √ | √ |
所有镜像站均支持
Debian
Ubuntu
CentOS
软件源,建议优先选择由企业提供的软件源
如果使用过程中脚本不能正常输出中文内容则可对照此列表使用,顺序与脚本一致
4.1.3 如何使用
wget https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh
sudo bash ChangeMirrors.sh
然后按照指示操作即可
4.2. 更新软件包
Linux版本发行后,后续还是会继续更新维护的,刚安装好系统正适合更新一下环境
sudo apt update -y
sudo apt upgrade -y
4.3 更换默认shell为Fish Shell
因为大部分情况下,Linux都是命令行操作,记录很多位置和命令本身就比较麻烦,Fish这个shell包,可以进行命令的补全和提示,推荐替换到默认的shell,安装过程非常简单
sudo apt install fish -y
4.3.1 使用Fish shell
fish # 直接输入fish,即可进入到fish环境,默认会有个提示语,后面可以设置关闭掉
exit # 退出fish shell
4.3.2 基础配置
拷贝一份默认的配置文件,进行修改,首先把进入fish的提示语关掉
cp /usr/share/fish/config.fish ~/.config/fish # 复制一份默认配置文件
vim ~/.config/fish/config.fish # 打开配置文件
set -g -x fish_greeting '' # 最底部添加此句,即可关闭问候语
4.3.3 设置Fish shell为默认shell
chsh -s /usr/bin/fish # 设置fish为默认shell
chsh -s /usr/bin/bash # 重新设置为系统自带默认bash
4.3.4 常用命令
大部分情况和Linux shell使用方式一样,以下一些常用的技巧:
fish会记录输入过的命令,下次输入时,会灰色提示要不要补全,可以使用Ctrl+F补全,可以使用方向键>接受补全,输入连接号-
然后使用TAB键,会列出参数建议,第二次TAB会列出所有建议,第三次TAB,切换到交互模式,可以使用方向键去选择参数
4.4 Samba共享服务
由于虚拟机是安装在Windows环境的,为了方便和Windows文件交互,或者在Windows下开发(可选),可以使用Samba服务共享一部分文件夹到Windows下,关于 Samba
4.4.1 安装Samba
sudo apt-get install samba samba-common
4.4.2 创建共享文件夹
创建一个共享文件夹,也可以直接使用linux里已存在的文件夹
mkdir /home/waldein/projects # waldein是用户名
sudo chmod 777 /home/waldein/projects
4.4.3 添加共享的用户名和密码
sudo smbpasswd -a waldein # 使用自己的linux用户账号即可
4.4.4 配置文件
此项为最重要的,可能会有细微差别,多查资料,应该能够配置成功
sudo vi /etc/samba/smb.conf # vim打开配置文件
定位到文件末尾,然后添加如下配置
[share]
comment = share folder
browseable = yes
path = /home/waldein/projects
create mask = 0700
directory mask = 0700
valid users = waldein
force user = waldein
force group = waldein
public = yes
available = yes
writable = yes
4.4.5 重启服务,加载配置
sudo service smbd restart
ifconfig #查看ip地址,用于windows共享
此时,Windows下win+R
,打开cmd,输入\\ip
,输入刚刚设置的用户名密码,即可进入共享文件夹projects,以上
5. C/C++基础环境安装
5.1 编译调试环境
sudo apt update
sudo apt install gcc g++ # 安装编译器
sudo apt intall gdb # 安装调试器
sudo apt install make cmake # 安装项目构建工具
5.2 编辑器环境(辅助环境)
主要使用vim编辑器以及配套插件,默认的版本为vim7.x,需要升级,后续插件要求版本高一些
5.2.1 更新vim到版本8
sudo add-apt-repository ppa:jonathonf/vim
sudo apt update
sudo apt install vim
5.2.2 安装python3
Ubuntu默认内置的是Python2,需要安装个Python3环境,可能会用到,以下命令会安装源里最新的版本,如果后续有需要更新的,请找其他途径更新
sudo apt-get install python3
5.2.3 安装adb
工作中实际是使用adb调试设备的,具体可根据需求选择安装
sudo apt-get install adb
5.2.4 安装git
两个用途,一个用来实际的版本管理,另一个就是用来下载一些包
sudo apt-get install git
6. vim插件配置全记录
工欲善其事,必先利其器,首先说明现在linux下的开发方式,可以使用samba映射到windows下,使用其他工具,比如vscode进行开发,本人目前选择是配置vim进行开发,关于vim简单内容不再赘述。
6.1 安装vim-plug
vim-plug是vim插件的管理工具,异步安装,不会导致vim卡顿,下面是安装过程
在本用户的目录下,创建.vim文件夹,进入创建autoload和plugged文件夹,主要命令如下
mkdir .vim
cd .vim/
mkdir autoload plugged
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim # 安装命令
安装好vim-plug后,使用此工具下载,所需插件,在vim配置文件里添加要下载的插件,示例如下:
call plug#begin('~/.vim/plugged')
Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' }
Plug 'tpope/vim-commentary'
Plug 'honza/vim-snippets'
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'vim-airline/vim-airline'
Plug 'neoclide/coc.nvim'
Plug 'luochen1990/rainbow'
Plug 'vim-airline/vim-airline-themes'
Plug 'vim-autoformat/vim-autoformat'
Plug 'tomasr/molokai'
Plug 'mhinz/vim-signify', { 'branch': 'legacy' }
Plug 'ludovicchabant/vim-gutentags'
Plug 'skywind3000/gutentags_plus'
call plug#end()
插件格式如上所示:在call plug#begin和#end里写入要下载的插件,然后命令行模式下:PlugInstall
,即可等待下载,不过github一般的访问速度都不好,看自己实际情况多试几次即可
6.2 索引篇
静态索引使用的ctags和gtags,主要功能就是函数跳转,查找定义等功能,使用插件vim-gutentags和gutentags_plus自动管理索引文件
6.2.1 安装ctags
不要再使用老旧的 Exuberant Ctags,多年以前已经维护,请使用最新的 Universal CTags ,它在 Exuberant Ctags 的基础上继续更新迭代了近十年,如今任然活跃的维护着,功能更强大,语言支持更多。
官网推荐源码编译安装
# 安装之前把依赖包安装了,很多可能环境里都有,可以再安装一次
sudo apt install \
gcc make \
pkg-config autoconf automake \
python3-docutils \
libseccomp-dev \
libjansson-dev \
libyaml-dev \
libxml2-dev
# 官方里的安装过程
git clone https://github.com/universal-ctags/ctags.git
cd ctags
./autogen.sh
./configure --prefix=/where/you/want # defaults to /usr/local
make
make install # may require extra privileges depending on where to install
# 查看版本
ctags --version
Universal Ctags 5.9.0(6009dc56), Copyright (C) 2015-2022 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Aug 28 2022, 15:53:44
URL: https://ctags.io/
6.2.2 安装gtags
gtags全称gnu global,目前版本更新到6.6版本,官方推荐使用编译安装,由于我已经更换了ubuntu的源,直接使用管理器安装,也是最新版,所以使用命令安装即可,源码安装包地址 点击
sudo apt-get install global
6.2.3 vim-gutentags和gutentags_plus
vim-gutentags是用来自动生成和更新ctags和gtags的管理插件,避免每次更新代码,都要手动更新索引库的繁琐步骤,gutentags_plus是官方推荐的补充插件,可以使用gtags-cscope定义成cscope的方式使用,而且解决了一些bug,非常推荐,安装过程使用vim-plug管理器添加即可
Plug 'ludovicchabant/vim-gutentags'
Plug 'skywind3000/gutentags_plus'
具体配置在.vimrc
里,可供借鉴(里面使用到了Alt键,linux需要映射此键才能使用)
let g:gutentags_define_advanced_commands = 1
" gutentags 搜索工程目录的标志,当前文件路径向上递归直到碰到这些文件/目录名
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project']
let g:gutentags_add_default_project_roots = 0
" 所生成的数据文件的名称
let g:gutentags_ctags_tagfile = '.tags'
" 同时开启 ctags 和 gtags 支持:
let g:gutentags_modules = []
if executable('ctags')
let g:gutentags_modules += ['ctags']
endif
if executable('gtags-cscope') && executable('gtags')
let g:gutentags_modules += ['gtags_cscope']
endif
" 将自动生成的 ctags/gtags 文件全部放入 ~/.cache/tags 目录中,避免污染工程目录
let g:gutentags_cache_dir = expand('~/.cache/tags')
" 配置 ctags 的参数,老的 Exuberant-ctags 不能有 --extra=+q,注意
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extras=+q']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
" 如果使用 universal ctags 需要增加下面一行,老的 Exuberant-ctags 不能加下一行
let g:gutentags_ctags_extra_args += ['--output-format=e-ctags']
" 禁用 gutentags 自动加载 gtags 数据库的行为
let g:gutentags_auto_add_gtags_cscope = 0
let g:gutentags_plus_nomap = 1
" A-s 查找符号
" A-g 查找这个定义
" A-c 查找调用这个函数的函数们
" A-t 查找这个字符串
" A-e 查找这个egrep匹配模式
" A-f 查找这个文件
" A-d 查找被这个函数调用的函数们
" A-i #including光标下的文件名查找文件
" A-a 查找分配了当前符号的位置
" A-z 在 ctags 数据库中查找当前单词
noremap <silent> <A-s> :GscopeFind s <C-R><C-W><cr>
noremap <silent> <A-g> :GscopeFind g <C-R><C-W><cr>
noremap <silent> <A-c> :GscopeFind c <C-R><C-W><cr>
noremap <silent> <A-t> :GscopeFind t <C-R><C-W><cr>
noremap <silent> <A-e> :GscopeFind e <C-R><C-W><cr>
noremap <silent> <A-f> :GscopeFind f <C-R>=expand("<cfile>")<cr><cr>
noremap <silent> <A-i> :GscopeFind i <C-R>=expand("<cfile>")<cr><cr>
noremap <silent> <A-d> :GscopeFind d <C-R><C-W><cr>
noremap <silent> <A-a> :GscopeFind a <C-R><C-W><cr>
noremap <silent> <A-z> :GscopeFind z <C-R><C-W><cr>
nmap <A-.> :cw 20<CR>
nmap <A-/> :cclose<CR>
6.3 代码补全篇
vim自动的补全方案,不利于快速开发,可以搭建一个类似jetbrains的强大补全系统,而且一个编辑器可以适配多种语言,这个是其他编辑器做不到的,目前的基本方案是基于LSP+Snippets方案
6.3.1 coc.nvim
基于nodejs运行,本身也是个插件管理器,主要用来配合代码块和LS来实现代码补全和代码提示功能,大大提高编码速度,安装此插件要求vim版本大于8和nodejs版本大于12为宜,所以首先要升级或安装这两个包
用这个主要后面可以慢慢把一系列的插件都转移到这个拓展上来
升级vim
sudo add-apt-repository ppa:jonathonf/vim
sudo apt-get update
sudo apt-get install vim
安装nodejs
ubuntu默认的nodejs版本很低,不符合使用要求,所以使用以下方法安装
apt-get install nodejs-legacy
apt-get install npm
# 安装n模块
npm install -g n
# 升级nodejs到最新stable版本
n stable
# 升级最新npm
npm install npm@latest -g
实际安装过程中,可能遇到各种包依赖问题,多点耐心,网上基本上都能解决,以下记录实际发生的情况,这种情况较多**[coc.nvim] build/index.js not found, please install dependencies and compile coc.nvim by: yarn install**
安装coc之后,打开vim就会提示这个问题,根据这句提示首先安装yarn,然后进入到coc的安装目录下进行install和build,测试成功
sudo npm install -g yarn # 这个能够安装的前提是前面的nodejs和npm已经安装好
# ~/.vim/plugged/coc.nvim/是我的coc.nvim插件的安装目录
cd ~/.vim/plugged/coc.nvim/
yarn install
yarn build
6.3.2 coc-clangd
本次配置主要配置是c/c++开发,所以选择的clangd LS进行提供代码补全,使用coc进行安装插件的方法简单示例,在vim环境的命令行下:CocInstall coc-clangd
安装其他插件亦如此,其他具体配置,请自行研究
coc-clangd是基于clangd的,所以要在Ubuntu下安装clangd
sudo apt-get install clangd
遇到一种情况,就是打开c文件,clangd会根据c语言的官方格式,进行扫描,提示各种错误,但是实际开发中,这个不需要,关闭提示需要在.vimrc文件中配置
autocmd FileType c let b:coc_diagnostic_disable=1
let g:coc_disable_startup_warning = 1 # 关闭打开vim的coc提示
配置使用tab键,进行接受补全,ctrl+tab可以切换提示的代码选项
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1):
\ CheckBackspace() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
6.3.3 coc-snippets
前面提到过,使用coc-snippets配合vim-snippets,可以提供常用代码段的快捷生成,比如if整个代码结构
# 输入if,会生成如下
if(elements){
elements
}
配置使用tab键进行,参数跳转,tab键跳到下一个参数,ctrl+z跳到上一个参数(insert模式下)
" Use <leader>x for convert visual selected code to snippet
xmap <leader>x <Plug>(coc-convert-snippet)
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#_select_confirm() :
\ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
\ CheckBackSpace() ? "\<TAB>" :
\ coc#refresh()
function! CheckBackSpace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
let g:coc_snippet_next = '<tab>'
let g:coc_snippet_prev = '<c-z>'
6.3.4 vim-snippets
一个多种语言的基础代码块模板库,本身不提供补全,配合其他插件使用,上面的coc-snippets
6.4 配色篇
vim也可以根据自己的需求选择配色方案,以下是自己用的一些插件
6.4.1 vim-airline和vim-airline-themes
vim状态栏美化,比如buffer的状态,vim状态等等,我使用了默认配置
6.4.2 rainbow
6.4.3 molokai
6.4.4 vim-commentary
快速注释插件,无需多余配置
- gcc 注释一行或者取消注释
- gcap 注释一个段落(以空行分割)/也可以取消注释一段
目前配色篇用到的特殊配置,没有提及到的基本上都是用的默认配置
" colorscheme setting
colorscheme molokai
let g:molokai_original = 1
" rainbow setting
let g:rainbow_active = 1
6.5 其他篇
6.5.1 LeaderF
此插件一替多,可以记录最近打开的文件,进行切换,搜索行,打开函数列表,搜索文件索引,搜索tag等,以下是关于LeaderF插件相关配置
let g:Lf_ShortcutF = '<c-p>'
let g:Lf_ShortcutB = '<m-n>'
noremap <c-n> :LeaderfMru<cr>
noremap <A-f> :LeaderfFunction!<cr>
noremap <A-b> :LeaderfBuffer<cr>
noremap <A-m> :LeaderfTag<cr>
noremap <A-l> :LeaderfLine<cr>
let g:Lf_StlSeparator = { 'left': '', 'right': '', 'font': '' }
let g:Lf_RootMarkers = ['.project', '.root', '.svn', '.git']
let g:Lf_WorkingDirectoryMode = 'Ac'
let g:Lf_WindowHeight = 0.30
let g:Lf_CacheDirectory = expand('~/.vim/cache')
let g:Lf_ShowRelativePath = 0
let g:Lf_HideHelp = 1
let g:Lf_StlColorscheme = 'powerline'
let g:Lf_PreviewResult = {'Function':0, 'BufTag':0}
6.5.2 NERDTree
一般的编辑器都有对应的目录树结构,vim下可以安装此插件来看项目的目录结构,也可以进入到各个文件中去
"设置NERDTtree
"let g:winManagerWindowLayout='FileExplorer|TagList'
function! NERDTree_Start()
exec 'NERDTree'
endfunction
function! NERDTree_IsValid()
return 1
endfunction
let winheigh=10
let g:AutoOpenWinManager=1
map wm :NERDTreeToggle<CR>
6.5.3 vim-autoformat
自动格式化代码风格的插件,C语言配合clang-format使用
sudo apt install clang-format
# 配置如下
Plug 'vim-autoformat/vim-autoformat'
# 配置按F5自动格式化
noremap <F5> :Autoformat<CR>:w<CR>
let g:autoformat_verbosemode=1
# 自动格式化
au BufWrite *.c :Autoformat
6.6 vim里识别Alt键
function! Terminal_MetaMode(mode)
set ttimeout
if $TMUX != ''
set ttimeoutlen=30
elseif &ttimeoutlen > 80 || &ttimeoutlen <= 0
set ttimeoutlen=80
endif
if has('nvim') || has('gui_running')
return
endif
function! s:metacode(mode, key)
if a:mode == 0
exec "set <M-".a:key.">=\e".a:key
else
exec "set <M-".a:key.">=\e]{0}".a:key."~"
endif
endfunc
for i in range(10)
call s:metacode(a:mode, nr2char(char2nr('0') + i))
endfor
for i in range(26)
call s:metacode(a:mode, nr2char(char2nr('a') + i))
call s:metacode(a:mode, nr2char(char2nr('A') + i))
endfor
if a:mode != 0
for c in [',', '.', '/', ';', '[', ']', '{', '}']
call s:metacode(a:mode, c)
endfor
for c in ['?', ':', '-', '_']
call s:metacode(a:mode, c)
endfor
else
for c in [',', '.', '/', ';', '{', '}']
call s:metacode(a:mode, c)
endfor
for c in ['?', ':', '-', '_']
call s:metacode(a:mode, c)
endfor
endif
endfunc
call Terminal_MetaMode(0)
6.7 vim复制粘贴系统剪切板
在使用vim时,使用频繁的功能就是,需要从浏览器,或者其他文件复制命令或者代码到vim中(或者反方向),查看是否vim支持系统剪切板功能,打开vim,输入:version查看 clipboard前面是否是加号或者减号,加号支持,减号不支持,如下图,我已经配置好了,所以支持
:version
VIM - Vi IMproved 9.0 (2022 Jun 28, 编译于 May 10 2022 08:40:37)
包含补丁: 1-105
修改者 team+vim@tracker.debian.org
编译者 team+vim@tracker.debian.org
巨型版本 带 GTK3 图形界面。 可使用(+)与不可使用(-)的功能:
+acl +channel +cscope +ex_extra -hangul_input +linebreak +mouse_dec -mzscheme +profile +sodium +tcl +user_commands +wildmenu
+arabic +cindent +cursorbind +extra_search +iconv +lispindent +mouse_gpm +netbeans_intg -python +sound +termguicolors +vartabs +windows
+autocmd +clientserver +cursorshape -farsi +insert_expand +listcmds -mouse_jsbterm +num64 +python3 +spell +terminal +vertsplit +writebackup
+autochdir +clipboard +dialog_con_gui +file_in_path +ipv6 +localmap +mouse_netterm +packages +quickfix +startuptime +terminfo +vim9script +X11
-autoservername +cmdline_compl +diff +find_in_path +job +lua +mouse_sgr +path_extra +reltime +statusline +termresponse +viminfo -xfontset
+balloon_eval +cmdline_hist +digraphs +float +jumplist +menu -mouse_sysmouse +perl +rightleft -sun_workshop +textobjects +virtualedit +xim
+balloon_eval_term +cmdline_info +dnd +folding +keymap +mksession +mouse_urxvt +persistent_undo +ruby +syntax +textprop +visual +xpm
+browse +comments -ebcdic -footer +lambda +modify_fname +mouse_xterm +popupwin +scrollbind +tag_binary +timers +visualextra +xsmp_interact
++builtin_terms +conceal +emacs_tags +fork() +langmap +mouse +multi_byte +postscript +signs -tag_old_static +title +vreplace +xterm_clipboard
+byte_offset +cryptv +eval +gettext +libcall +mouseshape +multi_lang +printer +smartindent -tag_any_white +toolbar +wildignore -xterm_save
如果不支持,也就是clipboard前面为-
号,需要安装包
sudo apt-get install vim-gnome
# 经朋友提醒,基本使用gtk替代gnome
sudo apt-get install vim-gtk
安装好后,默认的复制到系统剪切板是使用"+y
三个键组合,使用非常不方便,可以在.vimrc
文件中增加配置,即可使用正常yp进行复制粘贴啦
set clipboard=unnamedplus