星期三, 四月 19, 2017

VIM学习笔记 正则表达式-基础(Regular Expression Basic)

Vim使用正则表达式(regular expressions)来进行逻辑查找。正则达式是神秘和简洁的,然而这种强大的功能也必须要以大量的学习才能够习惯和掌握。

一个正则表达式是由一些元素组成的,一个元素可以是一个字符或者是一个特殊字符。

以下表格列示了常用的简单元素:

x字符x
^一行的开始处
$ 一行的结尾处
.任意单个字符
<开始标记
>结尾标记

行首与行尾

^acme,将匹配以acme开始的行。注意:除非出现在模式的开头,否则音调符号^就不是一个代表行开头的通配符,而会代表其他的含义。2^4,将匹配包含"2^4"的所有行。如果要查找以“^”开头的行,则需要使用^^模式。其中第一个^是通配符用于指示一行的开头,而第二个^则是实际的音调符号。如果要指明前导^是一个实际的音调符号而不是表示一行开头的通配符,那么就需要在其前面加一个转义的反斜杠“\”来组成\^acme模式。

RegularExpression_BeginOfLine

acme$,将匹配以acme结尾的行。^acme$,将匹配只包含acme一个单词的行。而^$,则会匹配所有空行。

RegularExpression_EndOfLine

dog.bone,将匹配dog-bone,dog bone,dog/bone,但不会匹配dogbone,因为dog和bone之间并没有分隔符。

RegularExpression_AnySingleChr

要指示任何字符出现的次数,可以同时使用句点和星号(.*),例如dog.*bone将匹配以下字符串(但不会匹配dog在一行而bone在另一行的情况):

dogbone
dog-bone
doggy bone
My dog has a bone

词首与词尾

<用于匹配一个单词的开始。>用于匹配一个单词的结束。也就是说,只要将想要查找的字符串包围其中,就可以实现精确查找。例如在文件中有单词Californian和Unfortunately。如果使用命令/for来查找,那么也会找到这两个单词。

RegularExpression_Partial

如果使用表达式/\<for\>来进行查找,则只会精确的查找到for,而不会出现其他的匹配。

RegularExpression_Exact

匹配次数

星号(*)通配符,作用于其之前的一个元素,表示可以匹配0次或是多次。表达式的贪婪(greedy)特性,将尝试查找尽可能多的匹配项。te*将会匹配te,tee,teee等等。甚至还会匹配t,因为在这里e可以出现0次。

RegularExpression_Asterisk

加号(+)通配符,表示一个字符可以匹配一次或是多次。所以表达式te\+可以匹配te,tee,teee等等。但是不会再匹配t,因为这里e最少要出现一次。

RegularExpression_Plus

等号(=)通配符,表示一个字符匹配0次或是一次。所以表达te\=可以匹配t和te,但是不会匹配tee,因为这个表达式只能匹配不多于两个字符。

RegularExpression_Equal

Ver: 1.0<上一篇 | 目录 下一篇>

星期二, 三月 28, 2017

VIM学习笔记 重复命令(Dot Command)

.(Dot)命令,可以重复上次的修改。而上次的修改,可以是针对单个字符、整行,甚至是整个文件。所以Dot命令,是一个作用范围极广的强大命令。

重复单个命令

假设我们有以下文本:
Line one
Line two
Line three
Line four

如下图所示:.命令重复执行了x命令,用于删除当前光标下的字符:

DotCommand_SingleCommand

以下图例则展示了,.命令如何重复作用于整行之上的删除操作:

DotCommand_dd

重复多个命令组合

假设我们有以下代码:
var foo = 1
var bar = 'a'
var foobar = foo + bar

如下图所示:首先,我们使用A命令进入插入模式并在当前行的末尾增加分号;然后,退回到常规模式;之后,移动到一下行并利用.命令重复插入分号的操作。

DotCommand_A

重复命令与其他命令的组合

假设我们有以下代码:
var foo = "method("+argument1+","+argument2+")";

在以下实例中:我们希望在每个加号前后分别插入空格,以提高代码的可读性。首先,我们使用f命令查找加号;然后,使用s命令将加号替换为“ + ”;随后,退回到常规模式;之后,就可以利用;.命令查找下一个加号并重复执行替换操作。

DotCommand_f

Ver: 1.0<上一篇 | 目录 下一篇>

星期五, 二月 24, 2017

VIM学习笔记 字体(Font)

在Mac系统中,可以在Font Book中查看字体列表;在Linux系统中,可以用命令xlsfonts列出所有可用的字体;在Windows系统中,可以在控制面板中检查字体列表。

更改字体

可以使用:set guifont=*命令,来打开字体选择对话框。

Font_Dialog

可以使用:set guifont=fontname命令,来更改当前使用的字体。

以下为 Linux 风格的字体设置语法。其中:字体名称和尺寸是以空格(Space)分隔的。如果字体名称中含有空格,则需要在空格前面加上一个反斜杠进行转义。

:set guifont=Andale\ Mono\ 11

以下为 Mac 风格的字体设置语法。其中:字体名称和尺寸是以冒号(:)分隔的。字体尺寸以字母h为前缀。如果字体名称中含有空格或逗号,则需要在特殊字符前面加上一个反斜杠进行转义。

:set guifont=Monaco:h11

以下为 Windows 风格的字体设置语法。其中:字体名称和尺寸是以冒号(:)分隔的。字体尺寸以字母h为前缀。如果字体名称中含有空格,则可以用下划线(_)来代替。

:set guifont=Andale_Mono:h11

为了提高字体设置的适用范围,可以在命令中用逗号分隔多个字体,如果Vim没有在系统中找到第一个字体,则会自动寻找字体列表中的后续字体。

:set guifont=Droid\ Sans\ Mono:h10,Consolas:h11:cANSI

字体设置实例

你可以将以下代码添加到vimrc配置文件之中,并设置为自己喜欢的字体:

Ver: 1.0<上一篇 | 目录 下一篇>

星期五, 二月 17, 2017

VIM学习笔记 语法高亮 (Syntax Highlight)

语法高亮,将使用不同的颜色来显示不同的语法元素,可以体现文档的结构,帮助发现排布错误,以提高文本编辑和代码开发的效率。

查看语法高亮设定

我们可以使用:highlight命令,查看当前的语法高亮设定。

highlight

修改语法高亮设定

可以使用以下命令修改语法高亮显示:

:highlight group definition

其中group是指语法元素,例如:

  • Cursor,光标下的字符
  • Directory,目录名称
  • ErrorMsg,在最底行显示的错误信息
  • IncSearch,增量(Incremental)查找的匹配结果
  • ModeMsg,在左下角显示的模式名称
  • MoreMsg,显示更多信息时的提示
  • Visual,在可视化模式下被选中的文本

使用以下命令,可以查看关于group的帮助信息:

:help group-name

definition是指具体定义。例如以下命令,将定义黄底黑字的终端:

:highlight Normal ctermfg=black ctermbg=yellow

在命令中没有指定的参数,将保持其原有的定义。例如以下命令,将背景定义为白色,而前景颜色不变:

:highlight Normal\ ctermbg=white

Vim识别三种不同的终端:term,黑白终端;cterm,彩色终端;gui,Gvim窗口。

term,可以定义其字体显示为:bold、underline、reverse、italic或standout。例如以下命令,用逗号来组合使用这些属性:

:highlight Keyword term=reverse,bold

cterm,可以用ctermfg设置前景色;用ctermbg设置背景色。例如以下命令,定义蓝底红字并使用下划线来显示注释:

:highlight Comment cterm=underline ctermfg=red ctermbg=blue

gui,可以使用选项gui=attribute,来定义图形窗口下语法元素的显示属性。选项guifgguibg,用来定义了前景色和背景色。推荐使用的颜色包括:black, brown, grey, blue, green, cyan, magenta, yellow, white。

为了保持各平台下的一致性,我们应该使用十六进制颜色代码来指定颜色。例如使用以下命令,一次定义几种终端下的配色:

:highlight Error term=reverse cterm=blod ctermfg=#00afff ctermbg=#a8a8a8

使用以下命令,可以查看关于highlight的帮助信息:

:help highlight

查看配色

利用Colorizer插件可以直观的显示#rgb, #rgba, #rrggbb, #rrgbbaa, rgb(...), rgba(...)等等形式的配色。

plugin_Colorizer

Ver: 1.0<上一篇 | 目录 下一篇>

星期一, 一月 23, 2017

星期三, 一月 18, 2017

VIM学习笔记 行号(Line Number)

绝对行号

可以用以下命令显示绝对行号(Absolute Line Number):

:set number

LineNumber_AbsoluteNumber

可以用以下命令隐藏绝对行号:

:set nonumber

相对行号

可以用以下命令显示相对行号(Relative Line Number):

:set relativenumber

LineNumber_RelativeNumber

可以用以下命令隐藏相对行号:

:set norelativenumber

如果我们使用以下命令,同时显示绝对行号和相对行号,那么Vim将显示当前行的绝对行号,而其他行则显示相对行号:

:set number

:set relativenumber

LineNumber_BothNumber

在Vim中,很多命令都可以使用数字前缀。例如,命令10j既是向下移动10行;命令>2j则可以缩进当前行以及其下2行。通过显示相对行号,你就可以清楚地看到命令所覆盖的范围。如果仅仅显示绝对行号,那么就需要你手动计算行之间的距离。

行号显示效果

行号默认右对齐显示在每行的左侧,占据4个空格的空间:其中3个空间用于显示行号,另1个空格作为于文本的间隔。当行数超过999时,行号显示区域将自动进行扩展。可以通过以下命令,改变行号所占用的空间(其中n为空间大小):

:set numberwidth=n

使用以下命令,可以定制行号(LineNr)的显示效果:

:highlight LineNr guibg=#1874cd ctermbg=#1874cd

使用以下命令,则可以定制当前行号(CursorLineNr)的显示效果:

:highlight CursorLineNr guifg=#050505

命令小结
:set number显示绝对行号
:set nonumber隐藏绝对行号
:set relativenumber显示相对行号
:set norelativenumber隐藏相对行号
:set numberwidth=n设置行号显示宽度

Ver: 1.0<上一篇 | 目录 下一篇>

星期四, 一月 12, 2017

我不喜欢八面玲珑、世故圆滑的人。喜欢略显笨拙、非常努力的人。
--山本耀司