# VimKylin **Repository Path**: CoCo-linux/VimKylin ## Basic Information - **Project Name**: VimKylin - **Description**: 这是一个基于Vim实现的开源轻量级配置框架VimKylin,可以用于编写Linux设备驱动或其他大型项目的源码。 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-17 - **Last Updated**: 2022-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## VimKylin简介 这是一个基于Vim实现的开源轻量级配置框架的自动配置程序的远程存储库。 我将基于此框架实现的Vim称为VimKylin。在网络环境良好情况下,只需30分钟左右即可把环境配置好。 真正做到了一键配置,不需要用户操心。会安装一些必备软件,比如说python、cmake、gcc、fontconfig等。 也考虑到了有些系统的Vim(版本比较旧)不支持Python的新特性,它会自动去GitHub上下载Vim源码并将Python的相关支持编译进去。 也会安装nerd-font字体来避免Vim显示出现乱码。不仅实现了YCM自动编译安装,给折腾了N天YCM都没有安装好的用户带来了希望, 而且也支持macOS和linux众多发行版本,让Linux爱好者频繁切换发行版而不用操心Vim环境配置。 ## VimKylin的新特性 以下仅列举主要的新特性,还有很多新特性需要您自己去摸索。O(∩_∩)O哈哈~ 1.实现了一键编译C/C++源代码; 2.实现了一键调用GDB进行项目调试; 3.实现了代码快速注释; 4.实现了高亮匹配不同的括号; 5.实现了一键格式化代码(这个功能真的很棒!); 6.实现了基于cscope的全工程快速跳转(函数查找,查看被那些调用等); 7.实现了在编辑Linux kernel源码之前自动配置功能,它实现了YCM准确补全Linux内核源码的数据结构; 8.新建文件时,可以添加相应的头部注释信息; 9.在查看函数的定义时在当前屏幕的上方裂开一个小窗口进行查看; ## 注意事项 本项目旨在打造一款智能的Linux kernel编辑器而诞生。 如果你想将VimKylin用于普通的工程,那么你可以根据需要修改.ycm_extra_conf.py文件。 ## 安装 ### MacOS X #### 安装HomeBrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" #### 安装 git clone https://github.com/TorvaldsRodriguez/VimKylin.git ~/.VimKylin 或者 git clone https://gitee.com/coco-linux/VimKylin.git ~/.VimKylin cd ~/.VimKylin ./install.sh #### 设置字体 为防止显示乱码,需设置macOS终端字体为`Droid Sans Mono Nerd Font`。 #### 更新 紧跟的步伐,尝试新版本带来的新特性 ./update.sh ### Linux 64-bit #### VimKylin支持以下发行版

#### 安装 git clone https://github.com/TorvaldsRodriguez/VimKylin.git ~/.VimKylin 或者 git clone https://gitee.com/coco-linux/VimKylin.git ~/.VimKylin cd ~/.VimKylin ./install.sh //不要加sudo #### 设置字体 为防止显示乱码,需设置linux终端字体为`Droid Sans Mono Nerd Font`。 #### 多用户支持 将在某个用户下安装好后,若需要在其他用户也能够使用,则执行如下命令: //username1 username2应替换为真实的用户名 sudo ./install_to_user.sh #### 更新 紧跟的步伐,尝试新版本带来的新特性 ./update.sh ### Android 64-bit Termux #### 安装 git clone https://github.com/TorvaldsRodriguez/VimKylin.git ~/.VimKylin 或者 git clone https://gitee.com/coco-linux/VimKylin.git ~/.VimKylin cd ~/.VimKylin ./install.sh #### 更新 紧跟的步伐,尝试新版本带来的新特性 ./update.sh ## 自定义 待安装完之后,在当前用户目录下存在以下几个配置文件: ~/.vimrc:该配置文件是的默认配置,一般无需修改; ~/.vimrc.custom.plugins:该配置文件是用户自定义的插件存放的位置,用户增加、卸载(注释掉Plug包含的插件地址信息, 再在低行模式下执行:PlugClear即可)插件请修改该文件; ~/.vimrc.custom.config: 该配置文件是存放用户自定义的配置文件,一般性配置应放入该文件中; ## 部分插件列表及说明 | 插件 | 说明 | |---------------------------------------|---------------------------------------------------------------------------| | [cpp-mode] | 提供生成函数实现、函数声明/实现跳转、.h .cpp切换等功能。 | | [vim-edit] | 方便的文本编辑插件。 | | [change-colorscheme] | 随心所欲切换主题 。 | | [prepare-code] | 新建文件时,生成预定义代码片段。 | | [vim-buffer] | Vim缓存操作。 | | [HarmonyVim-startify] | 欢迎界面(修改自mhinz/vim-startify) | | [tagbar] | 使用majutsushi/tagbar的V2.3版本,taglist的替代品,显示类、方法和变量等 | | [vim-plug] | 比Vundle下载更快的插件管理软件 | | [YouCompleteMe] | 史上最强大的基于语义的自动补全插件,支持C/C++、C#、Python、PHP等语言 | | [NerdTree] | 代码资源管理器 | | [vim-devicons] | 显示文件类型图标 | | [Airline] | 可以取代powerline的状态栏美化插件 | | [auto-pairs] | 自动补全引号、圆括号、花括号等 | | [LeaderF] | 比ctrlp更强大的文件的模糊搜索工具 | | [ack] | 强大的文本搜索工具 | | [vim-surround] | 自动增加、替换配对符的插件 | | [vim-commentary] | 快速注释代码插件 | | [vim-repeat] | 重复上一次操作 | | [vim-endwise] | if/end/endif/endfunction补全 | | [tabular] | 代码、注释、表格对齐 | | [vim-easymotion] | 强大的光标快速移动工具,强大到颠覆你的插件观 | | [incsearch.vim] | 模糊字符搜索插件 | | [vim-fugitive] | 集成Git | | [gv] | 显示git提交记录 | | [vim-slash] | 优化搜索,移动光标后清除高亮 | | [echodoc] | 补全函数时在命令栏显示函数签名 | | [vim-smooth-scroll] | 让翻页更顺畅 | | [clever-f.vim] | 强化f和F键 | | [nerdtree-git-plugin] | NerdTree显示git状态 | | [vim-nerdtree-syntax-highlight] | NerdTree文件类型高亮 | ## VimKylin的快捷键 以下是部分快捷键,可通过的`,h`命令查看的帮助文档。 | 快捷键 | 说明 | |---------------------------------------|---------------------------------------------------------------------------| | `,` | Leader Key | | `n` | 打开/关闭代码资源管理器 | | `t` | 打开/关闭函数列表 | | `a` | .h .cpp 文件切换 | | `u` | 转到函数声明 | | `U` | 转到函数实现 | | `u` | 转到变量声明 | | `o` | 打开include文件 | | `y` | 拷贝函数声明 | | `p` | 生成函数实现 | | `w` | 单词跳转 | | `f` | 搜索~目录下的文件 | | `F` | 搜索当前目录下的文本 | | `g` | 显示git仓库提交记录 | | `G` | 显示当前文件提交记录 | | `gg` | 显示当前文件在某个commit下的完整内容 | | `ff` | 语法错误自动修复(FixIt) | | `` | 切换到上一个buffer | | `` | 切换到下一个buffer | | `d` | 删除当前buffer | | `D` | 删除当前buffer外的所有buffer | | `vim` | 运行Vim编辑器时,默认启动开始页面 | | `` | 显示语法错误提示窗口 | | `` | 显示上一主题 | | `` | 显示下一主题 | | `l` | 按竖线对齐 | | `=` | 按等号对齐 | | `Ya` | 复制行文本到字母a | | `Da` | 剪切行文本到字母a | | `Ca` | 改写行文本到字母a | | `rr` | 替换文本 | | `r` | 全局替换,目前只支持单个文件 | | `rev` | 翻转当前光标下的单词或使用V模式选择的文本 | | `gcc` | 注释代码 | | `gcap` | 注释段落 | | `vif` | 选中函数内容 | | `dif` | 删除函数内容 | | `cif` | 改写函数内容 | | `vaf` | 选中函数内容(包括函数名 花括号) | | `daf` | 删除函数内容(包括函数名 花括号) | | `caf` | 改写函数内容(包括函数名 花括号) | | `fa` | 查找字母a,然后再按f键查找下一个 | | `e` | 快速编辑~/.vimrc文件 | | `s` | 重新加载~/.vimrc文件 | | `vp` | 快速编辑~/.vimrc.custom.plugins文件 | | `vc` | 快速编辑~/.vimrc.custom.config文件 | | `h` | 打开帮助文档 | | `H` | 打开当前光标所在单词的Vim帮助文档 | | `t` | 生成try-catch代码块 | | `y` | 复制当前选中到系统剪切板 | | `i` | 安装插件 | | `u` | 更新插件 | | `c` | 删除插件 | ## 常见问题汇总 ### 安装后Airline等插件有乱码,怎么解决? Linux和mac系统需设置终端字体为Droid Sans Mono Nerd Font。 ### Xshell连接远程主机不能使用vim-devicons或乱码。 Windows系统安装Nerd Font字体后并更改xshell字体即可。 ### 安装会经常失败,安装了几次都不成功!!! 安装时需要访问外国网站,由于网络原因,可能会失败,安装成功也要1个多小时,ycm插件有200M左右,下载比较耗时,这里有下载好的YouCompleteMe.tar.gz文件,下载后解压到~/.vim/plugged/目录,并进入YouCompleteMe目录执行./install.py --clang-completer即可安装。 ### 使用第三方库时怎么让YCM补全第三方库API? 安装完毕之后,~目录下将会生成两个隐藏文件分别是.vimrc和.ycm_extra_conf.py,其中.vimrc是vim的配置文件,.ycm_extra_conf.py是ycm插件的配置文件,当你需要创建一个project时,需要将.ycm_extra_conf.py拷贝到project的顶层目录,通过修改该配置文件里面的flags变量来添加你的第三方库路径。 ### 安装完成后YCM不能够工作!!! 这里的原因可能就有很多了,可能每个人遇到的问题不一样,但KylinVim尽最大努力不让用户操心,需要注意的是ycm插件只支持64位的系统,更多信息请访问YCM官网。 ### 在aaa用户下安装了,在bbb用户下不能使用? 目前KylinVim是基于用户的,如果你想在其他用户下也能使用KylinVim,也需要单独安装。 ### 在Archlinux环境下不能使用YCM怎么办?(缺少libtinfo.so.5) 在Archlinux下可以试着使用pkgfile命令搜索依赖的文件具体在什么包内,目前找到的包含libtinfo.so.5的包是ncurses5-compat-libs(AUR)或者32位的lib32-ncurses5-compat-libs(AUR),安装后即可正常使用。 ### 以上没有我遇到的问题怎么办? 您可以通过上网找解决方法,或提Issues,也可以通过发邮件方式2673483151@qq.com一起讨论解决方法。期待大家发现问题,并把解决方法贴出来。O(∩_∩)O哈哈~