星期四, 五月 04, 2017

VIM学习笔记 正则表达式-进阶(Regular Expression Advanced)

范围(Character Ranges)

[]通配符,表示只可以匹配方括号内列表的字符。例如t[aeiou]n将匹配一个小写元音字符,可以找到tan,ten,tin,ton,tun。

在方括号内,可以通过短横线来指明包括字符或数字的范围。例如[0-9]可以匹配0到9中的任一数字。我们还可以组合其他字符,例如[0-9aeiou]可以匹配任意一个数字或是小写的元音字符。

如果需要匹配"-"本身,那么需要使用反斜杠进行转义。例如表达式one[\-]way可以匹配one-way,但不会匹配one way。

范围通配符:
[abc]匹配a,b或是c
[^abc]匹配除abc以处的字符
[a-z]匹配从a到z的所有小写字符
[a-zA-Z]匹配所有大小写字符

排除(Excluding)

^通配符,可以排除指定的字符。

acme[^0-9]匹配所有包含acme,后跟一个非数字字符的行。但不会匹配以acme结尾的行,因为模式中的acme之后必须有一个字符。

^[^a-zA-Z]匹配以非字母开头的行,但不会匹配空行,因为行中必须有一个非字母字符存在。

如果需要匹配"^"本身,那么需要使用反斜杠进行转义。例如表达式2[\^*]4可以匹配2^4和2*4。

重复次数(Repeat Modifiers)

{minimum,maximum}表达式指出一个字符重复的次数。例如表达式a\{3,5}可以匹配3到5个a(aaa,aaaa,aaaaa)。Vim默认是会尽可能多地进行匹配(Matching as much as possible)。在表达式中,最小次数是可以省略的,即默认最小次数为0,所以表达式a\{,5}可以匹配0到5个a。最大次数也是可以省略的,即默认匹配无穷大,所以表达式a\{3,}最少可以匹配3个a,最多个数没有限制。

{number}表达式只指定一个数字,Vim就会精确的匹配相应的次数。例如a\{5}只会精确的匹配5次。

{-minimum,maximum}在数字前增加一个负号(-),那么Vim在查找时就会尽可能少地进行匹配(Matching as little as possible)。例如ab\{-1,3}将只匹配 "abbb"中的"ab"。表达式a\{-3,}可以匹配三个或是更多个a,但尽可能少地进行匹配。而表达式a\{-,5}可以匹配0到5个字符。

RegularExpression_Matching as little as possible

表达式a\{-5}将会精确的匹配5个字符。

重复通配符:
*匹配0次或是多次,尽可能多的匹配
\+匹配1次或是多次,尽可能多的匹配
\=匹配0次或是1次
\{}匹配0次或是多次
\{n}精确匹配n次
\{-n}匹配n次
\{n,m}匹配n次到m次
\{n,}匹配n次到多次
\{,m}匹配0次到m次
\{-n,m}匹配n次到m次,尽可能少的进行匹配
\{-n,}至少匹配n次,尽可能少的进行匹配
\{-,m}匹配到m次,尽可能少的进行匹配
{-}匹配0次到多次,尽可能少的进行匹配

捕获组(Groups)

()用于保证需要组合出现的字符。表达式a\(XY\)*b将会匹配ab, aXYb, aXYXYb, aXYXYXYb。

或操作(Alternation Operator)

|用于查找两个或是多个可能的匹配。例如表达式foo\|bar可以找到foo或是bar。我们可以连接使用多个或运算符,例如表达式Larry\|Moe\|Curly将找到Larry、Moe和Curly。而表达式end\(if\|while\|for\)则可以匹配"endif", "endwhile" 和 "endfor"几个不同的元素组合。

如果希望匹配多次,那么可以组合使用加号和括号运算符。例如表达式/\(foo\|bar\)\+可以匹配 "foo", "foobar", "foofoo", "barfoobar"等等。

特殊字符元素(Special Character Atoms)

\a大小写字母字符 [a-zA-Z]
\A除了a-zA-Z以外的字母字符
\b<BS>
\d数字字符 [0-9]
\D非数字字符 [^0-9]
\e<ESC>
\f由isfname选项定义的文件名字符
\F文件名字符,但是不包含数字
\h单词的头字符(A-Za-z)
\H不是单词的头字符(A-Za-z)
\i由isdent选项定义的字符
\I定义的字符,但是不包括数字
\k由iskeyword选项定义的关键字字符
\K关键字字符,但是不包括数字
\l小字字符 [a-z]
\L非小写字符 [^a-z]
\o八进制数字
\O非八进制数字
\p由isprint选项定义的可打印字符
\P可打印字符,但是不包括数字
\r<CR>
\s空白符<Space>和<Tab> [ ]
\S非空白符 [^ ]
\t<Tab>
\u大写字母字符 [A-Z]
\U非大写字母字符 [^A-Z]
\w单词字符(0-9A-Za-z)
\W非单词字符
\x十六进制数字 [0-9a-fA-F]
\X非十六进制数字 [^0-9a-fA-F]
\~匹配最后指定的字符串

表达式\a匹配任意字符,而表达式\a\a\a则可以匹配任意三个字符。而\a\a\a_则可以匹配任意后带一个下划线的三个字符。

RegularExpression_3CharU

操作符\d可以匹配任意数字;\d\d\d\d则可以匹配任意四个数字(即使其为更长数字串中的一部分)。

RegularExpression_4DigitNumber

如果希望精确匹配四位数字,那么可以使用以下任一命令:

/\<\d\d\d\d\>

/\<\d\{4}\>

RegularExpression_4DigitNumberExact

\u可以匹配任意大写字符;\U则可以匹配任意非大写字符。使用以下命令,可以将整篇文本替换为大写字母:

:%s/.*/\U&/

如果需要找出包含空格的空行,那么可以使用^\s.*$表达式;如果需要找到没有空格的空行,则可以使用\S

\s\+$可以匹配尾部的空格; \+\ze\t则可以匹配Tab制表符之前的空格。(请注意,此表达式开头为空格)

请注意,以上预定义字符是不能内嵌在[]中使用的。例如,表达式[\d\l]是错误的,应使用\(\d\|\l\)表达式匹配数字或小写字符。

预定义字符类(Character Classes)

如果我们想要查找所有大写字符,可以使用表达式[A-Z],或者使用预定义的字符类[:upper:]。使用/[[:upper:]]命令可以匹配所有大写字母;而使用/[[:upper:][:lower:]]命令则可以匹配包括大写和小写字母在内的所有字母。

预定义字符类:
[:alnum:]匹配所有的字符和数字
[:alpha:]匹配所有的字符
[:ascii:]匹配所有的ASCII字符
[:backspace:]匹配退格符<bs>
[:blank:]匹配空格和Tab
[:cntrl:]匹配所有的控制字符
[:digit:]匹配所有的数字
[:escape:]匹配Esc
[:graph:]匹配所打印的字符,不包括空格
[:lower:]匹配所有的小写字符
[:print:]匹配所有的要打印字符,包括空格
[:return:]匹配所有的行末符号(包括<Enter>,<CR>,<NL>)
[:punct:]匹配所有的功能符号
[:space:]匹配所有的空白符
[:tab:]匹配Tab
[:upper:]匹配所有的大写字符
[:xdigit:]匹配十六进制数字

转义符(Escaped Characters )

如果需要查找某些特殊符号(比如美元符号),那么可以使用反斜杠backslash(\)进行转义。例如:表达式\$可以匹配美元符号($),而表达式\^则可以匹配脱字符(^)。需要注意的是,反斜杠backslash(\)本身也是特殊符号,所以需要用两个反斜杠\\来匹配。

帮助信息(Help)

可以使用以下命令,查看关于查找模式的更多帮助信息:

:help pattern

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

星期一, 四月 24, 2017

VIM学习笔记 magic选项

magic选项

默认情况下,magic选项是打开的。如果关闭了此选项,那么正则表达式中的许多的特殊字符就失去了他们神奇的魔力,而变成了普通的字符。

我们使用以下只有一行的文件来测试magic选项。先用:%print命令将整个文件打印出来:

Test aaa* aa* a*

然后设置magic选项并且执行替换命令。其中,p标记打印出所改变的行:

:set magic

:1 substitute /a*/b/p

命令的执行结果如下:

bTest aaa* aa* a*

命令只是改变了一行开始的部分。为什么会将Test变为b*Test呢?这是因为*可以匹配0次或是多次,而Test正是以0个a开始的。为什么只是替换了一次呢?这是因为:substitute命令中是改变第一个出现的地方,如果我们使用g标记就可以替换全部的匹配项了。如果希望g标记成为默认设置,那么可以使用:set gdefault命令。

我们撤销刚才的命令并再次执行替换命令:

:undo

:1 substitute /a*/b/pg

命令的执行结果如下:

bTest b*b b*b b*

如果在关闭magic选项的情况下再次执行命令:

:undo

:set nomagic

:1 substitute /a*/b/pg

命令的执行结果如下:

Test aab ab b

smgic命令

:smagic命令,可以在执行替换命令时强制转换*等特殊字符的意义。例如我们执行以下命令:

:smagic /a*/b/pg

命令的执行结果如下:

bTest b*b b*b b*

:snomagic命令,强行关掉magic选项:

:snomagic /a*/b/pg

命令的执行结果如下:

Test aab ab b


命令小结
:set magic打开magic选项
:set nomagic关闭magic选项
:smagic强制使用magic选项
:snomagic强制禁用magic选项

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

星期三, 四月 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,来定义图形窗口下语法元素的显示属性。选项guifg和guibg,用来定义了前景色和背景色。推荐使用的颜色包括: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

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

星期三, 一月 11, 2017

世上只有两类悲剧:一种是求而不得;一种是得偿所求。
In this world there are only two tragedies. One is not getting what one wants and the other is getting it.
--Oscar Wilde

星期一, 十二月 19, 2016

VIM学习笔记 大小写转换(Tilde)

转换字符大小写

命令~可以改变字母的大小写。如果当前光标下的字母为小写,那么点击~可以将该字母转换为大写。同理如果当前光标下的字母为大写,那么点击~则可以将该字母转换为小写。

tildeop选项可以控制命令~的行为。默认设置下,只会对单个字符进行大小转换。

:set notildeop

如果设置了tildeop选项,那么命令就会变为~motion的模式:

:set tildeop

例如,在下面的句子中:

this is a test

我们将光标放在第一个t上并执行~ft命令,则结果为:

THIS IS A Test

命令使得当前光标以后第一个t和光标间的字符全部转换为大写,如果这个句子中还有小写字符,那么这个命令还可以执行第二次,直到句子中的字符全部为大写为止。

可以指定转换字符的个数和方向。例如命令3~l是从当前字符开始向右3个字符进行大小写的转换。

命令g~3w可以转换当前光标开始之后的3个单词;而命令g~iw则可以转换当前inner word;而命令g~$则可以转换从当前位置到行尾的所有字符。

命令g~g~和g~~可以转换整行的大小写。而且并不依赖于tildeop选项的设置。

在可视化模式下,可以使用u命令,将选中的字母转换为小写;也可以使用U命令,将选中的字母转换为大写。

gUU和gUgU命令,都可以将整行字符转换为大写。如果指定了数字参数,例如3gUU则可对指定行数进行转换。

相对应的guu和gugu命令,则是用于将整行字符转化为小写。

首字母大写

选中文本,然后进入命令行模式并使用以下命令,可以将选中的文本转换为首字母大写(title case / initial capitals)。

:s/\<\(\w\)\(\w*\)\>/\u\1\L\2/g

Title_Case

命令小结
~转换字符大小写
u将选中的字母转换为小写
U将选中的字母转换为大写
:set notildeop设置大小写转换命令的行为仅针对单个字符
:set tildeop设置大小写转换命令的行为类似于操作符

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

星期四, 十二月 15, 2016

VIM学习笔记 文本对象(Text Objects)

在Vim中,相比针对单个字符进行操作,对于单词、句子和段落等更大范围的文本对象(text-objects )执行命令则更有效率。Vim的命令结构示例如下:

[number]<command>[text object or motion]

其中:number是指命令作用在几个文本对象之上。比如3个单词;command是指执行的具体命令。比如删除或复制;text object or motion是指具体的文本对象。比如单词、句子或段落。

文本对象的类型

  • iw …inner word
  • aw …a word
  • iW …inner WORD
  • aW …a WORD
  • is …inner sentence
  • as …a sentence
  • ip …inner paragraph
  • ap …a paragraph
  • it …inner tag
  • at …a tag
  • i( or i) …inner block
  • a( or a) …a block
  • i< or i> …inner block
  • a< or a> …a block
  • i{ or i} …inner block
  • a{ or a} …a block
  • i[ or i] …inner block
  • a[ or a] …a block
  • i" …inner block
  • a" …a block
  • i` …inner block
  • a` …a block

文本对象的作用范围

iw表示inner word。如果键入viw命令,那么首先v将进入选择模式,然后iw将选中当前单词。

aw表示a word,它不但会选中当前单词,还会包含当前单词之后的空格。

以下实例中的红色 [ ] 表示作用范围:

iwThis is a [test] sentence.
awThis is a [test ]sentence.
iWThis is a […test…] sentence.
aWThis is a […test… ]sentence.
is…sentence. [This is a sentence.] This…
as…sentence. [This is a sentence. ]This…
ipEnd of previous paragraph.

[This is a paragraph. It has two sentences.]

The next.
apEnd of previous paragraph.

[This is a paragraph. It has two sentences.

]The next.
i( or i)1 * ([2 + 3])
a( or a)1 * [(2 + 3)]
i< or i>The <[tag]>
a< or i>The [<tag>]
i{ or i}some {[ code block ]}
a{ or a}some [{ code block }]
i[ or i]some [[ code block ]]
a[ or a]some [[ code block ]]
i"The "[best]"
a"The[ “best”]
i`The `[best]`
a`The[ `best`]

文本对象的应用实例

使用ci)命令,可以删除括号内的所有内容,但保留括号本身。而ca)命令,则可以删除括号内的所有内容,以及括号本身。

ci(

在某个开括号上,点击%键,光标将可以自动移动到相对应的闭括号上。通过与编辑命令组合,c%可以实现与ca)相同的功能。使用%命令,必须将光标放在括号之上;而使用a)命令,则光标可以在括号之上或括号内的任何位置。而且%命令,也是无法实现用i)命令效果的。

ca

使用cit命令,你甚至不用将光标移动到Tag之内,就可以快速修改其中的内容。

cit

使用ci"命令,可以快速修改当前行内第一个双引号其中的内容。

cidq

使用ci'命令,可以快速修改当前行内第一个单引号其中的内容。

cisq

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

星期一, 十月 10, 2016

VIM学习笔记 运行外部命令(shell)

执行单个命令

使用:!命令,可以运行一个外部系统命令。例如,以下命令将打开终端窗口,并在其中显示当前日期:

:!date

使用:!!命令,可以重新执行最近一次运行过的命令。

使用!!命令,可以运行外部命令并将输出结果做为当前行的内容。例如,输入!!date命令,将会把date命令的输出结果插入到文件中,当前行中的原有内容将会被覆盖。

执行多个命令

使用:shell命令,不需要退出Vim,就可以进入命令终端执行一个或多个Shell命令。在终端中使用exit命令,则可以退回到Vim。

命令小结
:!运行外部命令
:!!重新执行最近一次运行过的命令
!!运行外部命令并将输出结果做为当前行的内容
:shell打开shell终端

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

星期一, 七月 25, 2016

星期四, 七月 07, 2016

虫数据在线中文识别 chongdata ocr

网站的界面非常简洁,只需上传图片,然后点击“提交”按钮,随即开始在网站后台识别内容,很快就会自动显示识别结果。

如下图所示,即使混合了简体中文、繁体中文以及英语的内容,也能够很好地进行识别。

星期日, 二月 28, 2016

WEAK/STRONG

People cry, not because they’re weak, It’s because they’ve been strong for too long.
--Johnny Depp

星期六, 八月 08, 2015

星期六, 二月 07, 2015

星期日, 十月 26, 2014

什么是好生活?

在全球化的消费主义世界里,好生活似乎不再与任何宇宙、宗教或者空想主义的原则有关,而只与权力意志相连——更确切地说,只与最大限度地强化个体自我的生存有关。在没有任何外在于个人或高于个人的参照物时,‘好生活’就意味着竭尽全力地活着,意味着个人不仅‘自由自主’,而且全身心地投入到自我选择的任何行为当中。

--吕克·费里

星期日, 九月 21, 2014

游戏就是

拒绝接受这个世界的现状,想象它的可能性,并与此同时打破既有的观点和墨守成规的刻板印象。游戏就是纵情于幽默与机智的政治不正确,狡黠的挑衅,以及讽刺和挖苦。

— 卡特琳娜·格雷戈斯(Katerina Gregos)