1. spf13的安装
Linux/Mac
在预先安装好Git 1.7+ and Vim 7.4+的机子上直接执行:
curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh
考虑到国内网速,安装需要访问git,总体可能需要花费10几分钟,耐心等待即可。
如果失败,请检查
apt update "系统索引,这样才能获取最新的软件包信息
apt upgrade "软件包升级
如果没有安装git和vim
sudo apt install git
sudo apt install vim-gtk
再深入分析一下,ubuntu16.04版本中,vim版本众多
同时gvim的版本也是众多:
我们都知道,vim和gvim是不同的,那么应该如何选择呢?
个人实践,基本的vim+spf13主题配色会出现问题,只有选择 install vim-gtk。
当在ubuntu中安装好gvim后,基本的vim也会自动安装,两者同时存在。
所以对同一文件,既可以用vim打开,也可以用gvim打开,两者的界面是不同的。
我们在安装好spf13插件后,分别打开同一文件,其界面如图:
看得出,只有gvim+spf13才能最大程度的还原官网配色。
2. 了解spf13
到底这个懒人集合包spf13做了些什么工作,怎么使用它呢?
我们访问spf13官网,查询需要的信息,原来它把一些经典的vim插件给自动安装了。
同时又给与用户最大的灵活性,可以自己增减插件,以及配置快捷键映射。
① 自定义设置
spf13同样使用~/.vimrc配置文件,整个文件内容高度优化,精心组织。
我们打开vimrc看看:
代码都被折叠了,光标移动到位置,按za键展开折叠。
通过官方文档,所有的用户自定义设置,都无需在vimrc中修改。
换句话说,不建议用户直接修改~/.vimrc文件。
如果要想自定义用户设置,可以通过创建~/.vimrc.local 和~/.gvimrc.local文件来实现。
显然前者用于设定普通vim,后者用于设定gvim。
将你个性化的配置信息写入文件,就可以覆盖掉spf13的默认配置。
所以把我个人的快捷键映射添加进去:
"映射上下左右的光标移动
nnoremap i k
nnoremap k j
nnoremap j h
"行光标移动
nmap lh ^
nmap le $
"文件保存与退出
nmap fw :w<CR>
nmap fq :q<CR>
nmap fwq :wq<CR>
vim的默认<leader>映射是【\】,spf13使用【,】作为<leader>,你可以按照自己的习惯修改,加入~/.vimrc.local 或~/.gvimrc.local
②. 集成的各类插件
spf13集成了哪些插件呢?
包括vundle(插件管理),nerdtree(文件导览),ctrlp(快速文件查找),
surround(管理结对符),nerdcommenter(快速注释),syntastic(语法检查),
numbers.vim(更好的行数),NeoComplete(自动补全), Tabularize,
tagbar(标签导航),EasyMotion(任意跳转),snipmate(代码模版)
后面我会针对每一款插件,写出它的用法。
③. vundle
必须学习的第一款插件vundle。
传统的插件安装后有不少缺陷:
插件名字冲突。所有插件的帮助文档都在 doc/ 子目录、插件脚本都在 plugin/ 子目录,同个名字空间下必然引发名字冲突;
插件卸载易误。你需要先知道 doc/ 和 plugin/ 子目录下哪些文件是属于该插件的,再逐一删除,容易多删/漏删。
我们希望能通过某种机制,实现批量自动安装/更新/升级所有插件。
vundle为此而生,它让管理插件变得更清晰、智能,它也是一个插件,属于管理插件的插件。
正常vundle插件管理的使用方法大概可分两步:
第一, 在vimrc 文件中增加相关配置信息:
call vundle#begin()
Plugin 'scrooloose/nerdcommenter'
call vundle#end()
其中,每项Plugin 对应一个插件后续若有新增插件,只需追加至该列表中即可。
第二,进入 vim 执行
:PluginInstall
便可通知 vundle 自动安装该插件及其帮助文档。
同理要卸载插件,也是分成两个步骤。
先在 .vimrc 中注释或者删除对应插件配置信息,然后在 vim 中执行
:PluginClean
如果需要批量更新插件,只需执行
:PluginUpdate
通过 vundle 管理插件后,切勿通过发行套件自带的软件管理工具安装任何插件。
即不要通过普通git clone方式下载安装 否则又要混乱了。
以上是vundle的正常使用方式,但是在spf13集合包中,情况有了一些改变。
因为spf13不希望用户去直接修改vimrc配置文件,要添加或删除插件,流程如下:
创建文件
gvim ~/.vimrc.bundles.local
增添如下信息:
Bundle \’scrooloose/nerdcommenter\’
打开gvim执行,完成实际安装
:Bundleinstall
如果要删除插件,在~/.vimrc.local添加
UnBundle \’scrooloose/nerdcommenter\’
打开gvim执行,完成实际卸载
:Bundleclean
可以看出,比起正常vundle流程,spf13中对插件的增删,无论是添加信息方式,还是命令都不一样。
---------------------
卸载:sh ~/.spf13-vim-3/uninstall.sh
文章浏览阅读3.6k次,点赞2次,收藏11次。centos7安装FreeSwitch,以及设置Freeswitch开机自启_安装完freeswitch如何启动
文章浏览阅读1.4k次。1. gdal安装过程参考(具体情况需要读者自己探索)https://www.cnblogs.com/ottll/p/5124912.htmlhttps://blog.csdn.net/u010579736/article/details/96993859最后在python下导包不报错,安装完成2.程序运行时遇到的问题1.ImportError: No module named ‘_gdal_array’ModuleNotFoundError: No module named ‘_gdal_a_modulenotfounderror: no module named '_gdal
文章浏览阅读101次。教材p448 Example15_41. list中增加自己学号后三名同学,学号是最后三名的从1号开始加入2. 提交运行结果截图3. 刻下推送代码到码云在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法:- 有类的源代码,针对某一成员变量排序,让类实现Comparable接口,调用Collection.sort(List)- 没有类的源代码,或者多种排序,新建一个类,实现..._public string getid (){return id}
文章浏览阅读1.8k次,点赞3次,收藏3次。0.问题来源:开发基于C/C++的底层程序,希望0依赖,用语言自带的函数进行字符串的处理,主要涉及到strcpy、strcat、sprintf函数,这里暂且只讨论sprintf函数。1.sprintf函数(Windows/Linux)我们知道,C/C++里面最常用的字符串格式化函数是sprintf。但是这个函数最直接的问题是可能导致字符串越界的问题。如下面例子,因为预先无法预测格式化字符串%s对应的字符串str的长度,而缓存buf的长度是固定的,就有可能会把buf写越界。#include <__snprintf_s
文章浏览阅读844次。1、全局排序(order by)Order by:全局排序,只有一个reducerASC(ascend):升序(默认)DESC(descend):降序2、每个MR内部排序(sort by)sort By:对于大规模的数据集order by的效率非常低。在很多情况下,并不需要全局排序,此时可以使用sort bySort By为每个Reducer产生一个排序文件。每个Reduce..._hive 倒序
文章浏览阅读813次。目录使用方法练习使用方法简单使用 String str="35987.75";//要匹配的字符串 String pattern="\\d"; boolean matches = Pattern.matches(pattern, str); System.out.println(matches);较多使用 String str="35987.75";//要匹配的字符串 String pattern="\\d"; P_java正则表达式习题
文章浏览阅读1.6k次。如果你已经有SSH密钥(例如,文件名为id_rsa和id_rsa.pub),你可以跳过下面的步骤2和3。5. 你可以选择为SSH密钥设置密码,这样每次使用密钥时都需要输入密码。8. 登录GitHub账户,点击右上角的头像,选择"Settings"。11. 在"Title"字段中,为SSH key起一个有意义的名称。13. 点击"Add SSH key"保存并添加SSH key。6. 在终端中显示出SSH密钥已经生成,包括公钥和私钥。12. 在"Key"字段中,粘贴你之前复制的公钥内容。_github配置ssh key
文章浏览阅读3.8k次。::#################################################################################################::1.2.1 求字符串的长度::call :_job_str_Len_fun _job_var_str _job_var_Len::##########################..._bat 字符串长度
文章浏览阅读318次。Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。 本文所使用的demo已上传 http://download.csdn.net/source/30022131、Drools语法开始语法之前首先要了解一下drools的基本工作过程,通常而言我们使用一个接口_java规则引擎drools
文章浏览阅读4k次,点赞3次,收藏2次。我们知道systemctl是基于systemd的,因为我装机的时候是16.04,所以systemctl的版本才223,最近需要搞一个东西,对systemd的版本有要求,就升级了一下。其间踩了很多坑,就稍微记录一下。先到systemd的仓库里去下个源码:https://github.com/systemd/systemd/releases,我选了v245,要升级就索性升到最新版,然后tar + configure一条龙,然后……然后就报错了,提示exec: meson: not found。查了一下,me_systemd not found
文章浏览阅读3.7w次,点赞61次,收藏302次。MCU指的是微控制器,MPU指的是微处理器。MCU集合了FLASH、RAM和一些外围器件。MPU的FLASH和RAM则需要设计者自行搭建,当然MCU也可以外扩。MPU的电路设计相对MCU较为复杂。MCU一般使用片内FLASH来存储和执行程序代码,MPU将代码存储在外部FLASH中,上电后将代码搬运至RAM中运行。因此MCU的启动速度更快。MCU虽然也可以将代码运行在RAM中,但是内部RAM容量小,使用外部扩展RAM的话速度相对内部也较慢。MPU的主频相对较高,外接的内存也一般是DDR3,DDR4这种_mpu与mcu的区别
文章浏览阅读4.3k次。一.简介虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class Father{public:virtual void foo() { cout << "Father::foo() is called"<< endl;}};class Sun: public Father{public:vi..._c语言虚函数