字库格式介绍

##Bitmap字库 点阵字库是最早被采用的一种数字化字库的格式,每个字形以黑白像素点阵矩阵组成。因随着字号变大,数据量会呈几何级数增长,所以不适于复杂的大字号中文字形显示。但它在描述小字号时有明显的优势,可以加入人工的笔画取舍、合并和变形,是字形尽可能地清楚表达。 随着显示设备分辨率和处理器性能的提高,点阵字已被曲线字所取代,或部分嵌入在曲线字中以提高小字的清晰度。它更多的应用是在低分辨率的设备上,例如手机、掌上电脑、仪器仪表、数码相机、收款机、银行或者邮局的票据打印机等。

##PostScript字库

PostScript 是美国 Adobe 公司发展的一种页面描述语言。所谓页面描述语言,实际上是一种专门的计算机语言用来描述和记录版面上的内容和结构。它以精确的坐标数据,精密的数学公式和规定的格式来定义页面上的各种元素,如文字、色彩、图形图像的位置、形状等等。 PostScript 字形描述技术是用美国 Adobe 公司的 PostScript 页面描述语言来描述字形的一种技术。 CID 字库是美国 Adobe 公司发表的最新字库格式,所有字形描述都采用 PostScript Type 1格式,他具有易扩充、速度快、兼容性好、简便、灵活等特点,这种标准格式保证了跨平台的高质量输出。

##OpenType字库

OpenType 字库是美国微软公司与 Adobe 公司联合开发的用来替换 TrueType 字型的数字化曲线轮廓字库格式。OpenType 字库采用 Unicode 编码,是 TrueType 格式的扩展延伸,扩展了 Adobe CID-Keyed font 技术。它在继承了 TrueType 格式的基础上增加了对 PostScript 字型数据的支持,所以 OpenType 字体中的字型轮廓数据既可以选择在‘glyf’表中 TrueType 格式轮廓,也可以选择在‘CFF’表中的CFF(压缩字体格式,Compact Font Format)格式轮廓。 OpenType 字库信息小,字形可以所以缩放、变形(旋转、倾斜、弯曲)而不失真,具有很强的兼容性及独特丰富的排版特性。

##CID字库

CID(character identifier)字符识别码,总字符集包括了一种特定语言中所有常用的字符,把这些字符排序,他们在总字符集中排列的次序号就是各个字符的CID标识码。CMap(character Map)字符映射文件,将字符的编码映射到字符的CID标识码,再用CID标识码从CIDFont 文件中取到字形信息。 CIDFont文件中不仅存储了字库中所有字符的描述,还包含了字体的提示(HINT)信息,它既能控制笔画的粗细,还能控制笔画之间空白,使解释器在字体比较小,设备分辨率低的情况下,得到细小清晰的笔画复杂的中日韩文字形。

##TrueType

TrueType 是由美国苹果公司和微软公司联合提出的一种用数学函数描述电脑字体轮廓的技术。TrueType 采用几何学中二次B样条曲线及直线来描述字体的外形轮廓,含有字形构造、颜色填充、数学描述函数、流程条件控制、栅格处理控制、附加提示控制等指令。 TrueType 字体的主要特点在于它所见即所得。由于 TrueType 字体是由指令对字形进行描述,因此它与分辨率无关,均以设备的分辨率输出,既可以屏幕显示,又可以打印输出,无论放大缩小,字符总是光滑的,不会有锯齿出现。但是相对 PostScript 字体来说,特别是在文字太小时,其表现质量要差一些。


2015-05-16 font

中文编码

##Unicode编码

Unicode 是基于国际标准化组织(International Organization for Standardization,简称ISO)所制定的 ISO/IEC 10646 ,即通用字符集(Universal Character Set,简称 UCS)的标准来发展,在1991年首次以书本的形式(The Unicode Standard)对外发布。 Unicode 的编码方式与 ISO 10646 的通用字符集(UCS)概念相对应,使用16位编码空间。16位Unicode字符构成基本多文种平面(Basic Multilingual Plane,简称BMP),最多可以表示65536个字符。基本满足各种语言的使用。最新的 Unicode 版本定义了16个辅助平面,两者合起来达到32位编码空间,可以涵盖一切语言所用的符号。目前辅助平面的工作主要集中在第二和第三平面的中日韩统一表意文字中。

##GB2312 编码

GB 2312-80 编码是中华人民共和国国家标准汉字信息交换用编码,全称《信息交换用汉字编码字符集基本集》标准号为GB 2312-80(GB是“国标”二字的汉语拼音缩写),由中华人民共和国国家标准总局发布,1981年5与1号发布,1981年10月1日实施。它是一个简化字汉字的编码,通行于中国大陆地区及海外使用简体中文的地区(如新加坡等)。 GB 2312-80 收录简化汉字及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母、共7445个图形字符。其中汉字以外的图形字符682个,汉字6763个。 GB 2312-80 把收录的汉字分成两级。第一级汉字是常用汉字,计3755个,置于16~55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字,计3008个,置于56~87区,按部首/笔画顺序排列。字音以普通话审音委员会发表的《普通话异读词三次审音总表初稿》(1963年出版)为准,字形以中华人民共和国文化部、中国文字改革委员会公布的《印刷通用汉字字形标》(1964年出版)为准。

##GBK编码

GBK 编码标准,全称《汉字内码扩展规范》(GBK),英文名称 Chinese Internal Code Specification,中华人民共和国全国信息技术标准化技术委员会1995年12月1日制定,国家技术监督局标准化司、电子工业部科技与质量监督司1995年12月15日联合以技监标函[1995]229号文件的形式,将它确定为技术规范指导性文件,发布和实施。这一版的GBK规范为1.0版。GB即“国标”,K是“扩展”的汉语拼音第一个字母。 GBK向下与GB 2312编码兼容,向上支持 ISO 10646.1 国际标准,是前者向后者过度过程中的一个承上启下的标准。 GBK共收录21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号883个。

##GB 18030编码

GB 18030有两个版本:GB 18030-2000和GB 18030-2005. GB 18030-2000是GBK的取代版本,它的主要特点是在GBK的基础上增加了CJK统一汉字扩充A的汉字,GB 18030-2005的主要特点是在GB 18030-2000基础上增加了CJK统一汉字扩充B的汉字。 GB 18030-2000,全称《信息技术 信息交换用汉字编码字符集 基本集的扩充》,中华人民共和国信息产业部电子工业标准化研究所起草,由国家质量技术监督局于2000年3月17号发布。GB 18030-2000共收录27533个汉字。 GB 18030,全称:国家标准 GB 18030-2005《信息技术 中文编码字符集》,是中华人民共和国现在最新的内码字符集,是GB 18030-2000的修订版。GB18030-2005 共收录汉字70244个。现行版本为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施。此规格为在中国境内所有软件产品支持的强制规格。

##BIG 5字符集

BIG-5 码是通行于台湾、香港地区的一个繁体字编码方案,俗称“大五码”。 BIG-5 码收录13468个符号和汉字,符号408个,汉字13060个,分为常用字和次常用字两部分,各部分中的汉字按照笔画/部首排列。其中:常用字5401个,次常用字7659。

##GB/T 12345编码

GB/T 12345-90 编码全称《信息交换用汉字编码字符集 辅助集》,标准号为GB/T 12345-90,1990年6月13日发布,1990年12月1日实施,是一个关于繁体字的编码标准。所谓“辅助集”,是与“基本集”(GB2312-80)相对应而言。即:GB/T 12345 是与GB2312相对应的图形字符集。原则上,本字符集是将GB2312中的简化字用相应的繁体字替换而成。因此,这些替代的繁体字具有与被替代的简化字相同的编码;未曾简化的汉字以及非汉字图形字符,仍是GB2312中的汉字和图形字符,并具有与之相同的编码。 GB/T 12345-90 共收录7583 个图形字符。汉字以外的图形字符716个,汉字6866个,其中一级汉字3755个,二级汉字3008个,增补汉字103个。 关于繁体字替换简化字的原则,GB/T 12345 注明:“本标准原则上按照《简化字总表》中所列繁体字与简化字的对应关系进行替换。”《简化字总表》由中国文字改革委员会1964年5月发表,后经国家语言文字工作委员会作个别修改,国务院1986年6月4号批准发表。

##748编码

748编码仅用于方正软件和系统,不做介绍


2015-05-15 encoding

msi笔记本型号对比

最近看笔记本,有一同学十分钟爱MSI的笔记本,于是乎就查阅了一下该笔记本的型号,顺手做一下笔记。以下就是MSI(微星)游戏笔记本常见型号,命名的解释。

##GE系列 入门级 体积与效能的平衡点 高端性价比

GE是主打影音系列,属于体积与效能的平衡点,体积并不会像GT或GX那样的庞大,不过仍有不错的效能。也可以说是入门级别的游戏本,主要是价格相对便宜。其中CPU可以自行更换,显卡为焊死在主板上的无法更换,单2.5寸硬盘位(SATA3接口)+单MSATA硬盘位(SATA3接口,主要用于MSATA接口的SSD升级)。相比GT和GX系列重量较轻,便携,因空间较小所以CPU和显卡及散热风扇为一体式设计,散热略差。 GE适合普通大学生用的,高端性价比选择,使用中端显卡,入门电竞规格,价格普遍便宜6000–9000左右。 GE可以上PCIE接口的SSD硬盘,不能再上另一块机械硬盘。但是GT本身是二个硬盘位,是可以上二块机械硬盘。GE散热是三根铜管,GT系列有五根散热导管。

##GS系列 超级本 GE基准的轻薄本 性能中高

GS 是以GE为基准再更加的轻薄,非常轻薄性能中高,配置和GE差不多,价格好像是13000左右,想要金属质感与薄型就买GS70。

##GT系列 发烧级游戏本 极致的规格、粗壮的体格加上高昂的价格

GT是主打游戏系列,纯种的高端发烧游戏本,档次从中到高都有,价格也相对贵些。简单来说就是极致的规格、粗壮的体格加上高昂的价格。其中CPU和显卡均可自行更换,升级性和扩张性好。 双2.5寸硬盘(SATA2+SATA3),支持RAID 0,同时支持微星独家的SUPER RAID技术,需通过微星独家的RAID卡实现,也因此牺牲了一个SATA3的硬盘位。相比GE系列重量较重,得益于大空间,散热为CPU独立散热+显卡独立散热+单风扇双风道设计,散热较好。特色功能有一键超频,另外丹纳音箱和赛睿的七彩背光键盘也很拉风。GT是一般都是目前顶级的显卡CPU,玩游戏最好,10000-30000W左右

##GX系列 中高级 AMD处理器 着重于GPU的效能

GX是主打单机游戏系列,奇葩的3A组合,显卡暴强而U爆弱,价格介于GE和GT之间。主要着重于GPU的效能(使用AMD的顶级显卡),CPU是使用中间的规格(像GX*40的Core i5,或是现在的AMD),所以价格又比GT系列来的更便宜。其中CPU和显卡均可自行更换,但是目前5750M已经是这台平台的最顶级U了,下代平台据说要更换新的接口了,7970M貌似可以升级8970M,有待验证。AMD的芯片组支持多SATA3,所以GX系列是双SATA3硬盘位+光驱位也是SATA3,同时也支持微星独家的SUPER RAID技术,需通过微星独家的RAID卡实现。GX系列外观和GT系列基本相同,内部构造则完全相同,得益于AMD平台的良好温控,散热是G系列里面最好的。GX是3A平台,虽然显卡是顶级的,但是CPU特差,玩一些网游和吃CPU的游戏直接跪,价格比GT便宜一些8000–10000。

##GP系列 以GE系列为基准将GPU降规来达到便宜的目的

GP最入门级的, GP系列以GE系列为基准将GPU降规来达到便宜的目的,纯粹是文书机,挂上G系列其实是来乱的。 如果你是土豪就用GT70 红龙吧,顶级CPU+780M顶规显卡,而且还可以上双显卡。优点是绝大部分游戏可Full HD特效全开且音质很棒,搭配多彩背光电竞键盘及杀手网卡与耳机强化输出。缺点是这机器至少3.5kg以上,此外变压器也很大颗,


2015-05-11 msi , laptop

Vim Tips

— layout: post title: “Vim小技巧” description: “Vim小技巧, tips” category: vim tags: [vim, tips] last_updated: 2015-09-10 —

这篇文章主要总结了我在使用 Vim 过程中遇到的一些问题及解决方案,都是一些比较零碎的内容,如果要看 Vim 系统的内容可以参考之前的几篇文章。

查看 Vim 使用的配置

在 vim 中输入

:script 来查看 Vim 加载使用的配置

查看 Vim 的版本

:version 来查看 Vim 的版本

在有一次使用 Vim 的时候总是无法将 Vim 选中的内容和系统粘贴板用到一起 "+y"+p 根本无法使用,后来经过网上一查, 通过 :version 一查才知道原来本地安装的 Vim 版本根本没有把 clipboard 支持编译进去。所有有的时候遇到问题第一时间检查一下版本还是比较重要的。

查看 Vim 中所有的快捷键映射

使用 :map 来查看当前 Vim 配置中所有的快捷键映射。

列选

  1. 进入 Visual Block Mode Ctrl + V
  2. 选中编辑的列
  3. Shift + i 进入编辑模式 Insert Mode
  4. 输入编辑
  5. esc 两次

批量缩进代码

如果使用VS,或者IDE的同学应该都知道,如果要批量缩进代码,在这些IDE中都能够选择+tab键实现,而Vim中则不太一样,之前困扰我很久,现在终于有了解决方案。在之前的文章中已经提到了Vim的模式,现在我们要用到其中的一种—-选择模式。

批量缩进代码的方式如下:

  • 按下 v , 进入选择模式
  • j/k 移动光标选择需要缩进行
  • 按一次> 缩进一次,按 < 回缩

如果是需要选中的行数比较多可以使用 数字num+j 方法移动num行,对于有括号 { } 的方法,例如

function functionName(){
// a lot of code
}

则可以使用 % 进行括号匹配, 按下 v 进入选择模式,将光标移动到 { ,按下 % ,Vim自动找到匹配的括号并选择该函数,利用 > 即可缩进该函数。

那么,其实单行缩进就是两个大于号 >> , 回缩就是两个小于号 <<

不重启使vimrc文件生效

在学习阶段,我经常改动vimrc文件,而每一次改动就要重启一下Vim,甚是烦恼。偶然间看到Google Group中有人讨论一些无关紧要的问题,其中看到写了不重启使vimrc文件生效的代码,尝试一下确实可行,做一下记录:

在命令模式下运行
:so #MYVIMRC
去帮助查看so,其实so是source的缩写

当然你也可以在vimrc文件中加入

"编辑vimrc之后,重新加载
autocmd! bufwritepost _vimrc source $VIM/_vimr

这样每一次保存vimrc文件就自动加载vimrc文件,使之生效。而如果在vimrc文件中存在函数,可能会遇到vim警告“函数 已存在,请加!强制替换”,同样讨厌,虽然作为新手的我还不知道为什么出现这些警告,但总之解决方法就是把vimrc中的函数全部定义成 function! 这种形式。但其实那些警告不影响效果,不定义成 function! 也行,但是很烦人。

均匀插入空行

均匀的在行与行之间插入空行,原先的空行保留。

Vim 的 :g 命令就是为类似的任务设计的,给每一行运行单独的命令。使用如下命令完成目标:

:g/.\n\n\@!/norm o

正则匹配 /.\n\n\@!/ ,拆分成不同部分来解释:

  • . 匹配行中所有字符。(这个例子中用来排除空行)
  • \n 匹配行末尾
  • \n\@! 如果有连续两个换行则匹配失败

用命令 :h E59 查看 \@! 更多信息。我们使用 :g 命令正则匹配到符合规则的行之后,我们告诉Vim执行 norm o ,也就是 Normal Mode 下的 o 命令,也就是在当前行下插入空行。

总结来说,这行命令匹配所有下一行不是空行的行,然后在他们下面增加一行空行。通过这个例子,你也许想要查看一下vim的wiki Power of G 来学习一下 :g 命令,已经它的姐妹命令 :v

This note is taken from superuser

从 vim 中复制到粘贴板

使用 shift+v 选中几行内容之后,如果只使用y 无法复制到系统的粘贴板中,此时在选中的情况下输入 "+y , 即可将所选内容复制到粘贴板。注意需要输入的是:引号+加号+ 小写y。

而这样做需要输入三次,可以使用 map 绑定到喜欢的快捷键上,比如:

vmap <C-c> "+y

这一行配置的含义就是在可视模式下,Ctrl+c,就是将所选择内容复制到粘贴板。 但是需要注意的是如果运行 :echo has('clipboard') 返回的结果是0,那么这个方法就没用,因为该版本的 vim 在编译的时候没有将 +clipboard 加入。

同理,如果想要从系统粘贴板中粘贴内容到 vim 中,使用 "+y or "*y, 引号+加号+y,来从系统粘贴板中将内容粘贴到 vim 中。

NERDTree Tip

Vim 中极好用的文件管理插件,用了也有一些时间了,但是有些内容并没有仔细地看,今天突然有些需求就看了一下。常用的 NERDTree 命令有:

  • o 打开或关闭文件或目录
  • i 在水平分割的新窗口打开文件
  • s 在垂直分割的窗口中打开文件
  • t 在新标签页中打开文件
  • j/k 移动
  • J/K 到第一个或者最后一个节点
  • ? 帮助菜单

创建目录与文件

打开 NERDTree,在 NERDTree 中使用m 然后选择a,来创建文件或者文件夹,要创建文件夹只需要在输入的名字后面加上/

删除文件与目录

同理,在 NERDTree 中按下 m 会由很多选项可选,使用 d 就可以删除结点,也就是删除文件或者文件夹。

显示隐藏文件

在 NERDTree 中使用Shift+i 来显示隐藏文件。

vim 删除偶数行

使用命令:

:g/^/+d

:g 命令在所有匹配正则的行上执行

:g/LinesMatchThisRegex/ExecuteThisCommand

举例:

:g/hello/d

以上命令会删除所有包含 “hello” 的行

而与此同时 :%s 仅仅提供正则的搜索和替换,命令最后的 g 表示全局,整个文件中

:%s/hello/world/g

因此该命令会替换文中所有的 hello 为 world.

:%s 中的 s 表示替换 (substitute) , 而 % 表示整个 buffer. 因此 :%s 表示从整个文件 buffer 中替换, :%s 还可以指定行范围:

:10,15s/hello/world/g

搜索并替换10至15行中的 hello 为 world.

快速移动

在 vim 中移动 hjkl, 左下上右移动光标已经不用多说, wb,向后向前移动一个 word。

gg 移动到第一行, G 移动到最后一行,这是最基本的,也可以使用 nG 来移动到第 n 行。

翻页技能,使用 Ctrl D 向下移动半页, Ctrl U 向上移动半页

Ctrl B 向上翻页, Ctrl F 向下翻页

* 号用来向下查找整个单词

# 号用来将光标移动到上一个在光标下的字符,比如光标正在单词 String 上,使用 # 来向上查找上一个 String。

% 百分号用来在匹配的括号之间跳转。

fx 光标跳转到下一个 x 位置,可以用来快速跳转到下一个预期的字符 x

Fx 向前跳跃到字符 x 位置

tx til 下一个 x,光标在 x 前面

Tx 上一个 x

让vim支持系统粘贴板

sudo apt install vim-gnome

配置 leader

配置的 leader 要在 map 之前

let mapleader = “,”

let g:mapleader = “,”

参考配置


2015-05-08

vim 学习笔记2

Vim 学习笔记进阶版,初级版可以参考这篇文章

这篇文章主要分为替换操作,多窗口操作,Vim 的 Tab 操作,以及Visual mode 命令模式等等。

combine command

.    (dot) will repeat the last command
n<commmand>    will repeat the command n times

for example:

2dd    will delete 2 lines
3p 	   will paste the text 3 times
40idesu [ESC] will write "desu " 40 times

move in one file

NG    go to line N, N is a number, like 23G means go to line 23
gg    shortcut for 1G - go to the start of the file
G     Go to last line

批量替换

在全文中用一个单词替换另外一个单词

:%s/想要被替换的字串/新字串/g g模式全局替换
  • ”%” 范围前缀表示在所有行中执行替换, 相当于:1,$s/,如果不加 % 则表示在当前行中
  • “g” 标记表示替换行中所有匹配点。

替换的语法为::[addr]s/源字符/目的字符/[option]

[addr] 表示检索范围, 省略表示当前行。

  • :n1,n2s/word1/word2/g 从 n1 行到 n2 行,替换 word1 为 word2 全局替换
  • :%s/ = :1,$s/
  • :.,$/word1/word2/g 从当前行到尾行

s: 表示替换操作

[option]表示操作类型

  • g 全局替换
  • c 确认,如果加上 c 选项,每次都需要确认 confirm
  • p 逐行显示结果

省略 option 时只对每一行的第一个匹配串进行替换

删除所有空行

:g/^$/d

删除所有空白行和空行

:g/^[ ][ ]*$/d

在每行开始插入两个空白

:%s/^/  /

在接下来5行末尾加入"

:.,5/$/"/

多窗口操作

新建与关闭窗口

在 Normal 模式下使用以下命令新建窗口

:split 			水平分割窗口,内容一样
:10split 		水平分割窗口,新窗口高度10行
:split filename 窗口中打开新文件
:new 			功能和split一样
:sp 			split 缩写
Ctrl-w s,v 		分割窗口的快捷方式,s水平分割,v垂直分割
:vsplit 		垂直分割窗口,简写 :vs
Ctrl-w c 		关闭当前窗口

窗口间移动

Ctrl-w h,j,k,l    Ctrl按下,按下w 松开,Ctrl松开,按hjkl 对应左下上右

移动窗口

Ctrl-w H,J,K,L    大写HJKL,移动窗口

窗口最大化

Ctrl-w o    让当前文件占据整个窗口

调整窗口大小

Ctrl-w < > 调整窗口宽度,<缩小当前窗口宽度,向左扩展一列,>增加当前窗口宽度,向右扩展一列。当然 Ctrl-w 之后可以使用 n+< 调整多列宽度 Ctrl-w - + 调整窗口高度

在使用 Nerd tree 插件后,可以使用 Nerd tree 内置的快捷键,在 Nerd tree 中

  • i split 一个新窗口打开选中的文件,并跳转到该窗口
  • s vsplit 一个新窗口打开选中文件,并跳到该窗口

Tabs

Tab is different from the windows in vim. If your fimiliar with Firefox or Chrome, you can understand that a new tab contains a new website. While in vim, a tab can contain several windows and you can move the windows between tabs.

Create New tab

There are lots of ways to create a new tab, here I only intruduce some common commands.

:tabnew 	create a empty new tab
:tabedit {file} 	edit specified file in new tab

Manage tabs

Some ways to close tabs:

:tabclose 	close current tab
:tabclose {i} 	close i-th tab
:tabonly 	close all other tabs

Some ways to move tabs:

:tabm 0 	move current tab to first
:tabm 		move current tab to last
:tabm {i} 	move current tab to position i+1
:tabs 		list all tabs including their opening windows

Ways to move between tabs:

:tabn 		go to next tab
:tabp 		go to previous tab
:tabfirst 	go to first tab
:tablast 	go to last tab

While in normal mode, you can type:

gt 			go to next tab
gT 			go to previous tab
{i}gt 		go to tab in position i

更正

Insert模式下

<BS>  退格键,删除光标前
<Del> Delete键,删除光标后
<C-W> 删除一个单词
<C-U> 删除光标前的字符,保留光标之后的文本,保留行首的缩进,只删除第一个非空字符至光标位置之间的文本。

可视Visual mode

v 按字符选择,在Normal mode下按下v进入Visual mode
V 按行选择
Ctrl+Q 块选择,Windows下,其他平台下Ctrl+V

选择字符之后操作

d 剪切选择内容到剪贴板
y 拷贝选择内容到剪贴板
c 剪贴选择内容到剪贴板并进入Insert mode

命令模式

:! command 暂时离开 vi 到命令模式下执行 command

Other

:verbose set tabstop?    in Vim, it will tell you where the tapstop option value is coming from
:help + command  查看Vim命令的帮助,比如想要查看 c 命令的帮助直接使用 `:h c` 就能查到。
g <C-g>  单词统计

差不多看到这里就能够直接看文档了:http://vimcdoc.sourceforge.net/ 通过文档学习更多符合自己使用习惯的命令或者操作。

reference


2015-05-07 vim , command , linux , editor

Vim 学习笔记

If you don’t have time to watch this video, just take a look at this note. This note is taken from https://github.com/shawncplus/vim-classes with small modification.

https://github.com/shawncplus/dotfiles

this site let you make your own colorscheme

模式切换 Change between modes

如果你不知道Vim 的各种模式,可以参考Vim 模式

Insert -> Normal : ESC/Ctrl-[
Insert -> Command : (Insert -> Normal) -> :

Normal -> Command : :
Normal -> Insert : iIsScCoO
Command -> Normal : Enter

插入模式

i Enter insert mode
I 行首非空字符前插入
s 删除光标下字符,并进入insert mode
S 删除光标所在一行,并进入insert mode行首
a 光标之后进入insert mode
A 光标移动到行尾并进入insert mode
o 在光标下一行插入一行,并进入insert mode
O 在光标上一行插入新行,并进入insert mode
C 删除光标后到行尾并进入insert mode

replace mode

按如下两个按键进入替换模式:

r replace the letter under cursor
R replace under cursor till you press Esc

advanced Move

在Vim中,Word有两种含义,开始我也没搞明白,过了很久才渐渐明白。广义的 WORD 可以是任何两个空格之间的内容,比如 this is a word ,就是四个“字”。侠义的 WORD ,英文单词、标点符号和非字母字符都被当成一个字。如$、%、^、&、*、(、)、-、+、{、}、[、]、~、|、\、<、>、/等,均被当成是一个字。

Vim中使用大写命令一般将字作为广义,小写命令就是作为侠义对待。命令都是成对出现,w 和 W,b 和 B,e 和 E:

w 词向后移动
W WORD is splited by space
b 词向前移动
B WORD向前移动
e 移下一个单词词末
ge 前一个单词词末
E 如果光标起始位置处于字内(即非字尾处),则该命令将把光标移到本字字尾;如果光标起始位置处于字尾,则该命令将把光标移动到下一个字的字尾。
0 Move to the zeroth character of the line
^ move to first non-blank character of the line
$ go to the end of line
g_ last character of the line

用了很多天Vim了移动最多用的还是hjkl,想不起来用这些零碎的命令啊~

以下命令可以用来翻页

Ctrl+f  下一页
Ctrl+b  上一页
Ctrl+d  下半页
Ctrl+u  上半页
H       Move to first letter on top of screen
M 		Move to first letter on middle of screen
L 		Move to first letter on bottom of screen

move inline

fx  向前查找本行中的字符x, 比如想要移动到下一个双引号时,可以使用 `f"` 来实现行内快速移动
F   向左查找

Copy/Paste

p   paste after current position
P   paste before the cursor
yy  copy the current line
y  - Yank. Example: yw (yank word) 光标停留到词第一个字母上 yw 复制单词
y0  copy the data from cursor to begining of the line
y$  copy the data from cursor to end of the line

删除 delete

x   删除光标下单个字符
X   向前删除一个字符,相当于 Backspace
dd  删除光标所在一行,并把该行复制
dw  删除光标所在词
d0  删除光标到该行最前
d$  删除光标到该行最后
J   删除光标所在行的换行符

删除x ,dd ,dw用的情况还挺多的。

撤销/重做 redo

u   撤销上一次编辑 undo
<C-r> Ctrl-R redo

搜索与替换 search replace

/pattern  - 正向搜索,从光标处开始向文件末搜索
?pattern  - 反向搜索,从光标处开始向文件首搜索
n  - 下一个,往下执行搜索命令
N  - 上一个
*  - Word under cursor - forward (bounded)
g* - Word under cursor - forward (unbounded)
#  - Word under cursor - backward (bounded)
g# - Word under cursor - backward (unbounded)
:s/p1/p2/g -将当前行中所有p1均用p2替代
:n1, n2s/p1/p2/g -将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g -将文件中所有p1均用p2替换

Load/Save/Quit/Change File

:e <path/to/file> open file
:w save
:saveas <path/to/file> save to <path/to/file>
:x, ZZ or :wq save and quit (:x only save if necessary)
:q! quit without saving. :qa! to quit even if there are modified hidden buffers
:q! 放弃修改之后可用 :e! 恢复修改 :e! 为放弃为保存的修改

Other

gg 文件开头
G  文件末尾
Ctrl-]
Ctrl-O 跳转到上一个位置
Ctrl-T 标签退栈

参考:


2015-05-06 vim , linux , command

Vim插件Vundle

简单介绍

Code Rush推荐,之后又陆陆续续看到很多在使用这款插件,所以在入门插件的时候就第一个安装了此插件,VIM如果不依靠插件来增强功能可谓鸡肋。而VIM提供的插件又很多,新手可能无从下手。幸好让我接触到了这个Vundle插件,Vundle用来安装,管理其他插件,这样以后安装插件卸载插件的问题就迎刃而解了。用Vundle管理插件有以下好处:

  • 自动下载安装插件
  • 自动更新插件
  • 只需要保存一份配置文件即可在新环境下安装所有插件
  • 自动清理没用的插件

安装

下载地址

https://github.com/gmarik/Vundle.vim

Mac和Linux安装

  1. 安装git客户端 Mac和Linux一般默认已经安装

  2. 下载并安装Vundle

     git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    
  3. vimrc配置

    把以下的配置放到vimrc最前面

     set nocompatible              " be iMproved, required
     filetype off                  " required
    
     " set the runtime path to include Vundle and initialize
     set rtp+=~/.vim/bundle/Vundle.vim
     call vundle#begin()
     " alternatively, pass a path where Vundle should install plugins
     "call vundle#begin('~/some/path/here')
    
     " let Vundle manage Vundle, required
     Plugin 'gmarik/Vundle.vim'
    
     " The following are examples of different formats supported.
     " Keep Plugin commands between vundle#begin/end.
     " plugin on GitHub repo
     Plugin 'tpope/vim-fugitive'
     " plugin from http://vim-scripts.org/vim/scripts.html
     Plugin 'L9'
     " Git plugin not hosted on GitHub
     Plugin 'git://git.wincent.com/command-t.git'
     " git repos on your local machine (i.e. when working on your own plugin)
     Plugin 'file:///home/gmarik/path/to/plugin'
     " The sparkup vim script is in a subdirectory of this repo called vim.
     " Pass the path to set the runtimepath properly.
     Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
     " Avoid a name conflict with L9
     Plugin 'user/L9', {'name': 'newL9'}
    
     " All of your Plugins must be added before the following line
     call vundle#end()            " required
     filetype plugin indent on    " required
     " To ignore plugin indent changes, instead use:
     "filetype plugin on
     "
     " Brief help
     " :PluginList       - lists configured plugins
     " :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
     " :PluginSearch foo - searches for foo; append `!` to refresh local cache
     " :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
     "
     " see :h vundle for more details or wiki for FAQ
     " Put your non-Plugin stuff after this line
    
  4. 安装插件

    启动vim,并运行:PluginInstall

Windows下安装

查看官方教程,官方的教程有点问题,完全按照所写配置并不能成功。

vim74     #主程序目录 对应变量 $VIMRUNTIME
vimfiles  #配置文件目录 对应变量 $VIM	
  1. 同样需要Git,并且需要Curl

  2. 下载安装msysgit,add Path to your environment.安装过程中选择Run git from Windows command prompt option安装完成之后在终端运行git --version,如果出现类似以下情况即可:

     C:\> git --version
     git version 1.7.4.msysgit.0
    
  3. 设置Curl

    以下内容保存成curl.cmd,并存到msysgit安装目录中C:\Program Files\Git\cmd\curl.cmd,在终端运行curl --version出现以下类似内容即可:

     C:\> curl --version
     curl 7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8k zlib/1.2.3
     Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
     Features: Largefile NTLM SSL SSPI libz
    
  4. 因为Windows下和mac,linux环境不同,vim的配置地址也不同,所以git clone到的目录如下:

     git clone https://github.com/gmarik/Vundle.vim.git vimfiles/bundle/Vundle.vim
    
  5. _vimrc

    需要将Mac和Linux中相应位置代码修改成如下代码:

     " 配置同Mac,只需要按照下面修改rtp的路径即可
     set rtp+=$VIM/vimfiles/bundle/Vundle.vim/
     let path='$VIM/vimfiles/bundle'
     call vundle#rc(path)
    

使用

使用方法很简单,只需3步使新插件生效即可

  1. 将目标插件配置进vimrc或vundle_vimrc
  2. 执行:PluginInstall
  3. 重启

常用命令

:PluginList       - 枚举已安装的插件列表
:PluginInstall    - 安装插件或者后面加上'!'更新
:PluginUpdate     - 更新插件 同 :PluginInstall!
:PluginSearch foo - 查找插件。例如查找名称为foo的插件。或者后面加'!'更新本地缓存
:PluginClean      - 清理无用插件或者后面加'!'自动清理

更多使用方法查看帮助 :h vundle

参考:


2015-05-04 vim , vim-plugin , vundle

Vim模式

Vim 是一种多模式的编辑器,不同于一般的编辑器,进入便是编辑模式,可以在编辑模式下对文本进行各种编辑,Vim 进入之后是在普通模式(Normal mode) 下。

基本模式

普通模式 Normal mode

在普通模式中,用户可以执行一般的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反 (大多数编辑器默认模式为插入模式)。 Vim 强大的编辑能力中很大部分是来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令”dd”删除当前行,但是第一 个”d”的后面可以跟另外的移动命令来代替第二个”d”,比如用移动到下一行的”j”键就可以删除当前行和下一行。另外还可以指定命令重复次 数,”2dd”(重复”dd”两次),和”dj”的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活 组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。 在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按”a”(append/追加, 光标移动到行尾并进入插入模式)键或者直接使用”i”(insert/插入)键进入。

插入模式 Insert mode

在普通模式下按下 “i” 键进入, 在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。在插入模式中,可以按ESC键回到普通模式。

可视模式 Visual mode

在普通模式下按下 “v” 键进入,使用“V”可按行选择, 这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到 这块高亮的区域上。Vim的”文本对象”也能和移动命令一样用在这个模式中。

  • v命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。
  • V命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。
  • Ctrl-V进入的块可视化模式(Blockwise visual mode)。可以选择一个矩形内的文本。(注意:在Windows中,Ctrl-V可能已经被影射为粘贴操作,可以使用Ctrl-Q进入块可视化模式。)

在 Vim 中使用如下命令查看更多官方帮助

:h 04.4

选择模式 Select mode

这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。选择模式与可视模式相似,这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。选择模式更多在 MS-Windows 中用到,其他系统如需启动选择模式,首先需要激活:

:set selectmode+=mouse

在 Vim 中使用如下命令查看更多官方帮助

:h 09.4

命令行模式

在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(”:”键),搜索(”/”和”?”键)或者过滤命令(”!”键)。在命令执行之 后,Vim返回到命令行模式之前的模式,通常是普通模式。

常用的命令模式有替换和搜索,比如使用 :%/a/b/g 将文本中所有的 a 替换成 b。

或者使用 /abc 来搜索文本中的 abc 字符串

Ex模式

这和命令行模式比较相似,在使用”:visual”命令离开Ex模式前,可以一次执行多条命令。我至今没用过,也不知道怎么弄,如果需要 Google 关键词: Vim Ex模式。

派生模式

操作符等待模式

这个派生模式指普通模式中,执行一个操作命令后Vim等待一个”动作”来完成这个命令。Vim也支持在操作符等待模式中使用”文本对象”作为动作, 包括”aw”一个单词(a word)、”as”一个句子(a sentence)、”ap”一个段落(a paragraph)等等。

比如,在普通模式下”d2as”删除当前和下一个句子。在可视模式下”apU”把当前段落所有字母大写。

插入普通模式

这个模式是在插入模式下按下ctrl-o键的时候进入。这个时候暂时进入普通模式,执行完一个命令之后,Vim返回插入模式

插入可视模式

这个模式是在插入模式下按下ctrl-o键并且开始一个可视选择的时候开始。在可视区域选择取消的时候,Vim返回插入模式。

插入选择模式

通常这个模式由插入模式下鼠标拖拽或者shift方向键来进入。当选择区域取消的时候,Vim返回插入模式。

替换模式

这是一个特殊的插入模式,在这个模式中可以做和插入模式一样的操作,但是每个输入的字符都会覆盖文本缓冲中已经存在的字符。在普通模式下按”R”键进入。

vim key command


2015-05-01 vim , linux

Vim字符编码及中文菜单乱码

vim经常遇到文件乱码的情况,很多的文章都只是解决了作者遇到的乱码问题,不同的使用者由于环境不一样,参考之后,反而更加混淆和复杂。 其实vim乱码是与系统环境非常相关的,一味执着于修改vim的配置而不知道分析系统的实际环境,往往导致混淆,本文从原理分析vim编码的设计和乱码原因,帮助所有的用户解决vim的乱码。

vim为何会出现乱码:

  1. 首先是输入,vim以错误的格式解析文件,比如原本是utf-8,但以ansi解析,那必然是乱码了。
  2. 然后是处理,vim以错误的格式处理文件,比如原本是utf-8,但内部以ansi保存处理,导致乱码。
  3. 然后是输出,vim输出显示的编码与系统不一致,也会乱码。
  4. 最后是写入,vim回写文件与打开的不一致,造成编辑后文件乱码。

在 Linux 下需要考虑:

  1. Linux 默认支持的语系,/etc/sysconfig/i18n
  2. 终端 bash 的语系,与 $LANG 变量有关
  3. 再就是上面提到的文件编码有关

VIM编码相关选项

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下:

  1. encoding : Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在 .vimrc 中改变它的值才有意义。vim读取文件之后,但并不以读取文件的编码来处理,而是会转换成内部编码的格式,这个编码一般与操作系统相关,linux下utf-8居多,中文windows下则是gbk。
  2. fileencoding : 用于配置打开文件和保存文件的编码,但只能有一个值,只适合少数文件都是同种编码的环境
  3. fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。从名字上看就知道是fileencoding的增强版,可以配置多种不同的编码,常见的配置为,配置好之后,列表中的文本编码只要合法,都能被vim正确的读取。
  4. termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。vim输出的编码,输出指输出到操作系统或命令终端等,默认与操作系统的语言编码一致,如果使用linux命令终端,建议终端和linux系统配置相同的编码,然后配置相同的termencoding,否则顾全了vim就顾不上shell,不过如果shell不存在中文名文件,则配置终端和termencoding一致即可,对于windows,能自动的识别gbk和utf-8,不用特殊配置。
  5. fileformats,用于区分操作系统,主要是回车\r\n的区别,fileformats选项,用于处理文件格式问题。以下命令,告诉vim将UNIX文件格式做为第一选择,而将MS-DOS的文件格式做为第二选择:(换行方式 在早期的打印机时代,开始新的一行要占用两个字符的时间。如果到了一行的结尾处,你要快速回到新的一行的开头,需要打印针头在纸面上飞快地掠过,常常会在纸面上留下污点。解决这个问题的办法就是,用两个字符:一个字符来移到第一列,另一个字符来新增一行。计算机产生以后,存储较为昂贵,在如何解决回车换行这个老问题上,人们产生了不同的意见。UNIX人认为在到达一行的结尾时新增一行 (LF),而Mac人则认同 (CR)的解决办法,MS则坚持古老的 (CRLF)的方法。这就意味着如果你将一个文件从一个系统转移到另一个系统,就面临着回车换行的问题。而Vim编辑器则会自动的认出这种文件格式方面的区别,并做出相应处理。) set fileformats=unix,dos

VIM多字符编码方式工作流程

再记录一下,Vim 的多字符编码方式支持是如何工作的:

  1. Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式。
  2. 读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到看起来是正确的 字符编码方式,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
  3. 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为 encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。
  4. 编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。

由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议 encoding 的值设置为 utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;) 。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示 cp936,也就是 GBK 的代码页)。

vimrc中设置

在分析了乱码原因,了解了vim编码的参数之后,就可以根据实际情况来配置了

  1. 分析文件编码,配置vim文件文件解析编码fileencodings,让vim能解析出来
  2. 分析系统编码,配置vim内码encoding,如果linux系统语言为ansi,则必须配置内码,否则vim无法处理中文,中文windows下vim内码为gbk,但还是建议统一配置为utf-8
  3. 根据输出配置显示编码,linux系统如果使用了putty或者SecureCRT,需要注意配置termencoding和终端软件一致,windows系统比较少有终端软件,系统能自动解析gdb和utf-8,建议统一配置为utf-8 参考的vim编码配置如下,linux和windows配置相同,linux系统语言编码和ssh终端编码配置为utf-8,windows则不需要配置,即可正常的打开utf-8,gdk等编码的文件

    “vim内部编码 set encoding=utf-8 “按照utf-8 without bom,utf-8,顺序识别打开文件 set fileencodings=ucs-bom,utf-8,gbk,gb2312,cp936,big5,gb18030,shift-jis,latin1

    set fileencoding=utf-8

    “防止菜单乱码 if(has(“win32”) || has(“win64”) || has(“win95”) || has(“win16”)) source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim language messages zh_CN.utf-8 endif “默认以双字节处理那些特殊字符 if v:lang =~? ‘^(zh)|(ja)|(ko)’ set ambiwidth=double endif

    set nobomb “不自动设置字节序标记

参考:


2015-05-01 vim , linux , encode , fileencoding

开始使用Vim

Brief Introduction

VIM作为一款Linux下必备的编辑器,如果学会了使用,非常强大,但是不得不说VIM的入门实在是太困难了。当然如果只是简单的使用插入功能,i,进入插入模式,直接敲,敲完ESC退出,再:wq保存退出,也就是最基本的入门了。当时如果想要尝试其他的功能,就不得不看文档,装插件,装配色方案,写VIMRC配置等等了。

其实很多VIMer都会对新手说一句看帮助文档,这句话对新手真的毫无用处,或许真的只有对VIM有了一定了解才能在文档的帮助下学到VIM更多的东西。文档一般都是大而全,有很多部分其实完全没有必要再新手阶段的时候就全部读完,而甚至有些命令,设置用了多年的VIMer都不会去接触一下。所以如何入门?首先要了解作为一个编辑器最基本的功能,写入,删除,修改,保存,编码,而对于VIM,还有几大模式,移动光标,替换操作等等。

vimtutor

在最短的时间内了解这个编辑器的简单功能,至少把他能够当成一个编辑器使,再不济能够直接使用键盘来浏览文件内容,对文件内容进行修改,删除,保存。当然在几十分钟内你可能要记住几十个命令,以及每个命令对应的操作。可能这对于很多新手来说需要锻炼一段时间才能记住,所以不要怕,用记事本,或者VIM记下来每个命令和对应的功能,之后不断的练习,很短的时间就能习惯这种操作。在习惯了之后就会发现再移动鼠标是多么的慢。当然你可能在VIM默认配置中有很多不太习惯的地方,把你那些不习惯记住,把那些你想要的功能一个一个记下来,在以后的学习中,我们来一一解决。 比如我在最初的时候觉得j/k在行之间移动,有些时候中文一行比较长,显示的时候跳跃了很多行,而是用j/k移动光标的时候在几行之间跳跃,让我很不习惯,当然这个在之后的学习中偶然看到了原来只要在VIMRC中配置<map> j gj就能够用j来直接到下一行,即使这一行事实上是VIM中的一行。还有很多很多的问题,都在短短几天的时间内一一得到了解决。所以开始的时候用极短的时间略读一遍vimtutor先熟悉。哦,对了,vimtutor在哪里,Windows下是在VIM安装目录下vimtutor.bat这个文件,双击运行,而Linux下直接终端运行vimtutor即可。当然这一切都在VIM的帮助文档中写着了,你可以尝试在VIM普通模式下运行:help vimtutorVIM会把文档全部显示出来。

vimrc

在熟悉了最基本的命令之后,你可以开始看文档,尝试修改vimrc配置,当然如果你不想看英文文档,VIM还是有中文文档的。不想覆盖:help 的文档,直接下一个PDF的随时查看也挺好,在熟悉了一下命令之后,直接看英文的也就很快了。我的方法就是直接看别人的配置,去Github上面一搜,很多人把自己的配置都公开了,就去一条条试试那些命令,有什么作用,我自己能怎么修改,然后查文档,很快你自己熟悉的配置就有了。

Plugin

当然在熟悉VIMRC配置之后,在随便哪个文件中只要运行:edit $MYVIMRC就能够直接编辑vimrc文件,我在网上看别人的博客,于是我也就用了很多人推荐的Vundle来管理我的插件,从此之后再不用下载,解压,复制,只需要修改vimrc配置就能够安装插件,同样也只要保存一份配置文件就能够同步我的插件,这件事简直太棒了。当然最初安装Vundle这件事情是要你自己来的。直接去Vundle主页看吧。

colorscheme

或许在练习了VIM不久就会觉得VIM的颜色太单调,但是没关系,VIM有很多很多的配色方案,只要你能找到总能找到自己喜欢的,我直接用了别人推荐的molokai,你也可以试试,下载molokai.vim文件到colors目录下之后,在vimrc中写入colorscheme molokai,就能使用这款配色了。当然你也能自己定义字体和字号,还有很多你能自己定义的东西等待发掘的。

附送两张图

vi tutorial

vi key command


2015-05-01 vim , tutorial , linux , editor

Google+

最近文章

  • Maven 介绍 Maven 是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理。自动化构建过程,从清理、编译、测试和生成报告、再到打包和部署。
  • IntelliJ IDEA 中使用 Resin 调试 平时开发环境使用的是 jetty,而 Java Web 有一个更好更快的服务器 Resin,这篇文章就来说一下什么是 Resin,以及在 Debug 中如何使用。
  • 使用Shell命令来对 Unix 时间戳和日期进行转换 date 命令 在程序中经常要使用到 Unix timestamp 和日期的转换,通常情况下都是Google一个时间戳转换的网页在进行转换,其实 Linux 命令中就有能够快速实现转换的命令。主要都是集中在 date 这个命令。date 命令主要用于显示或设定系统时间和日期。
  • Mastering the Vim 我已经用了很长一段时间 Vim 了,但是 Vim 最可贵之处便在于你永远达不到 Vim 的天花板,在使用的过程中我永远会发现操作 Vim 的其他便捷方法。最近看了一个关于 Vim 的讲座 ,革新我对 Vim 命令的认识。可以说掌握这样的一个世界观可以对 Vim 的操作上到另外一个层次。下面就总结一下这个视频中的精髓内容。
  • Spring MVC 应用处理 CORS 什么是跨域或者说什么是CORS(Cross-origin resource sharing),中文叫”跨域资源共享”。在了解 CORS 之前首先要知道“同源策略”,出于安全考虑,浏览器会限制Ajax中发起的跨站请求。比如,使用 XMLHttpRequest 对象发起 HTTP 请求就必须遵守同源策略(same-origin policy),”同源策略“是浏览器安全的基石。具体而言,Web 应用程序能且只能使用 XMLHttpRequest 对象向其加载的源域名发起 HTTP 请求,而不能向任何其它域名发起请求。阮一峰写的一篇关于 CORS 的文章 介绍得非常详细,这里主要记录一下重点以及 Spring MVC 中如何处理 CORS。