cmd-line模式又有3个类型:Ex 命令(ex commands)、查找模式(Search patterns)、Filter 命令(Filter commands)。本文主要重点的是Ex 命令和Search patterns。Filter 命令暂时用的场景比较少,如果有更适合的场景再补充。

目的

掌握cmd-line模式下常用操作的语法和概念

Ex 命令简介

  初时,先有ed,ed为ex之父,ex为vi之父,而vi为vim之父。可见Ex 命令的重要性。

  在Ex 命令影响范围广且距离远。对比normal模式的文本操作,它适合在本地(或者说可以通过快捷键一次到达)进行操作。

  一般操作都是范围({range})+动作。

  Vim 为几乎所有功能都提供了相应的Ex 命令。下面简要列举几个

命令 用途
:[range]delete [x] 删除指定范围内的行[到寄存器x 中]
:[range]yank [x] 复制指定范围的行[到寄存器x 中]
:[line]put [x] 在指定行后粘贴寄存器x 中的内容
:[range]copy {address} 把指定范围内的行拷贝到{address} 所指定的行之下
:[range]move {address} 把指定范围内的行移动到{address} 所指定的行之下
:[range]join 连接指定范围内的行
:[range]normal {commands} 对指定范围内的每一行执行普通模式命令{commands}
:[range]global/{pattern}/[cmd] 对指定范围内匹配{pattern}的所有行,在其上执行Ex 命令{cmd}
:[range]substitute/{pattern}/{string}/[flags] 把指定范围内出现{pattern}的地方替换为{string}

  概念:

  • [range]指的是范围。下方会涉及到
  • [x] 表示的寄存器具名。即[a-zA-Z]
  • {address}表示的是地址。
  • {pattern}对应的是下面的模式
  • [cmd]表示动作
  • {string} 字符串
  • [flags] 标记
  • {commands}表示normal模式下的一系列操作

  想了解更多,参见:h ex-cmd-index。

移动光标

  在cmd-line模式下怎样更快捷的移动光标。一般是为了更正输入的错误。

  语法如下:

命令 用途
Ctrl+B 移动到命令的行首
Ctrl+E 移动到命令的末尾
Ctrl+<Left> 向左移动一个单词
Ctrl+<Right> 向右移动一个单词
<Left> 向左移动一个字符
<Right> 向右移动一个字符

删除

  移动的时候,一般只使用Ctrl+B,Ctrl+E。如果此时输错了,之前在insert模式也说过了,最好的办法是删除重输。所以这里介绍一下删除的快捷键

命令 用途
Ctrl+U 删除到行首
Ctrl+W 删除一个单词

快捷键映射

  如果还是更习惯移动光标,那可以把非主键区的按键映射成主键区的组合

  

  这个设置,大家可以根据自己的习惯来设置。我一般只设置单词移动,然后如果输错了直接删除重输。

历史记录

  查看命令的历史。

  

  查看历史记录的语法如下

命令 用途
Ctrl+P 上一条命令
Ctrl+N 下一条命令

命令窗口

  命令行窗口就像是一个常规的 Vim 缓冲区,只不过它的每行内容都对应着命令历史中的一个条目。我们可以用k 及j 键在历史中向前或向后移动(像另一个独立的操作窗口,可以使用正常的所有模式命令),也可以用 Vim 的查找功能查找某一行。在按下<CR> 键时,将会把当前行的内容当成Ex 命加以执行

  开启命令窗口语法

命令 用途
q/ 在normal模式打开查找命令历史的命令行窗口
q: 在normal模式打开 Ex 命令历史的命令行窗口
<Ctrl-f> 从cmd-line模式切换到命令行窗口

  例如

# 假设我们正在写一个简单的Ruby 脚本,然后发现每做出一个修改时,都会执行
# 下面两条命令:
# :write
# :!ruby %
# 在接连执行了几次这两条命令后,我们意识到可以简化工作过程,把这两条命令
# 合为一条。这样,以后就可以从历史中选择该完整命令并再次执行:
# :write | !ruby %
# 这些命令都已经在历史中了,所以我们不必从头输入整条命令。但要怎样才能把历史
# 中的两条记录合并成一条呢? # 执行下面的步骤即可
q:
k
J(Shift+j)
<CR>

自动补全

  补全的语法

命令 用途
tab 如同在shell 中一样,在命令行上也可以用<Tab> 键自动补全命令。
Shift+tab 要想反向遍历补全列表
Ctrl+D 命令会让Vim 显示可用的补全列表。这个在挺好用的。
Ctrl+A 补全所有匹配列表
ctrl+L 只有一个匹配的时候。暂时觉得用处不大
<C-r><C-w> 把当前单词插入到命令行
<C-r>{register} 可以把寄存器的内容插入到命令行

  例如

  

重复执行

  在normal模式重复上次的 Ex 命令非常简单,只需按@:。

  注意事项

  • : 寄存器总是保存着最后执行的命令行命令。在运行过一次@: 后,后面就可以用@@ 命令来重复它。

范围

  很多 Ex 命令可以用[range] 指定要操作的范围。我们可以用行号、位置标记或是查找模式来指定范围的开始位置及结束位置。

  在定义一个[range]时,它总是代表一系列连续行,不过:global 命令也可以在一系列非连续行上执行Ex 命令

用地址指定范围

  指的就是上面的{address}。

  地址类型如下

符号 地址
0 虚拟行,位于文件第一行上方。
n 文件的第n行
$ 文件的最后一行
. 光标所在的那一行
'm 包含位置标记m 的行
% 整个文件(:1,$ 的简写形式)

  注意事项:

  • 第0 行在文件中并不真实存在,但它作为一个地址,在某些特定场景下会很有用处。特别是,在把指定范围内的行复制或移动到文件开头时,可以用它做:copy{address} 及:move {address} 命令的最后一个参数。

  • 很多情况下不写[range]情况是默认当前行
  • :{start},{end}表示一个更广的范围。其中{start}和{end}都表示{address}。比如:.,$表示当前行到文件尾。

  特殊场景:

  • 如果输入一条只包含数字的Ex 命令,那么 Vim 会把这个数字解析成一个地址,并把光标移动到该数字所指定的行上。比如:3 跳到第3行。

  

用高亮选区指定范围

  当高亮选中后,按下:时,就会触发选定范围。此时在Ex 命令会显示":'<,'>"。

  '<,表示高亮选中的开头,'>表示高亮选中的结尾。

用模式指定范围

  Vim 也接受以模式作为一条 Ex 命令的地址。 :/{pattern1}/,/{pattern2}/。

  例如:

  

  这个范围看起来比较复杂,但实际上它符合范围的一般形式:{start},{end}。在本例中,{start} 地址是模式/<html>/,而{end} 地址是/<\/html>/。换句话说,这个范围由<html> 开标签所在的行开始,到对应闭标签所在的行结。  

  在此例中,用地址:2,5 也可以获得同样的结果,并且这种表示方式更简洁,不过它也更不可靠。用模式指定范围的话,我们的命令总是对整个<html></html> 范围进行操作,无论这个范围包含多少行都没问题。

  

用偏移对地址进行修正范围

  接着上面的例子,假设我们想对位于<html></html>之间的每一行都运行一条 Ex 命令,但是不想包括<html> 及</html> 标签所在的行,那么此时偏移量就有大用了。

  

  偏移的一般形式是这样的:":{addr}+n"。

  {addr} 可以是一个{address} 或是一个查找模式。可以+n,也可以减-1。"+"表示向下偏移,"-"表示向上偏移

动作

复制

  语法::[range]t{address}  t==(t|copy|co)

  例如:

  注意事项:

  • 在上表中,也可以将yyp 变化一下来复制我们想要的行,但不管怎样,这都需要一些额外的移动动作。我们得先跳到想复制的行上(6G),复制该行(yy),快速跳回原先的位置(<C-o>),然后再用粘贴命令(p)创建一个副本。由此可见,在复制距离较远的行时,:t 命令通常更加高效。

移动

  语法::[range]m[ove]{address}

  使用方法同复制非常像,就不单作解释了。

显示

  想把匹配到东西显示出来的时候可以使用这个动作。

  语法::[range]p[rint]

连接

  把文本连接成一行的时候可以使用这个动作。

  语法::[range]j[oin]

删除

  语法::[range]d[elete][x]      

  可以把删除的内容放到寄存器x里。

  读取文本到当前缓存

  语法1:[range]r[ead]  !{cmd}  这里的{cmd}指的是外部的命令

  语法2:[range]r[ead]  {filename}  这里的{filename}指的是文件名称

  注意事项:

  • 这里的[range]如果是一个范围的话,只会取最后的位置

  把当前的缓存写到其他地方

这里的{filename}指的是文件名称

  语法如下

命令 用途
:[range]w[rite]  {filename} 把范围的文本写到指定的文件里。如果文件存在,不能直接覆盖
:[range]w[rite]!  {filename} 把范围的文本写到指定的文件里。如果文件存在,直接覆盖
:[range]w[rite]  >> 把范围的文本追加到当前文件尾。不过在窗口不会刷新出来。
:[range]w[rite]  >> {filename} 把范围的文本追加指定的文件尾。
:[range]w[rite]  !{cmd} 把范围文本当作标准输入文本调用命令

  注意事项:

  • 如果没有[range]和{filename},相当于覆盖当前文件

normal

  在一系列连续行上执行一条普通模式命令。此命令在与. 命令或宏结合使用时,我们只需花费很少的努力就能完成大量重复性任务。

  语法::[range]normal {commands}

  注意事项

  • {commands}是普通模式的命令

  例如

#想给所有行添加注释

#使用normal
:% normal I# #使用替换
:%s /^/#/g

global

  结合了Ex 命令与Vim 的模式匹配这两方面能力。凭借该命令,我们可以在某个指定模式的所有匹配行上运行Ex 命令。就处理重复工作的效率而言,global 命令是除点范式以及宏之外,最为强大的Vim 工具之一。

  语法::[range] global[!] /{pattern}/ [cmd]

  注意事项

  • 在缺省情况下,:global 命令的作用范围是整个文件(%),这一点与其他大多数Ex 命令(包括 :delete、:substitute 以及:normal)有所不同,这些命令的缺省范围仅为当前行(.)。

  • 反选使用:vglobal 或简写的:v。想对不匹配的内容操作的时候,可以使用这个命令。比如不匹配的全部删除::v/{pattern}/d
  • :print 是:global 命令的缺省[cmd]

查找

  语法:(/|?){pattern}

方向

  • 以/开头的,向后查找
  • 以?开头的,向前查找

重复查找

  • n     继续相当的方向查找
  • N     取相反的方向查找

关闭高亮功能的快捷键

  :noh <CR> 虽然可以禁用查找高亮功能,但我们在键盘操作上也花费了不少功夫。通过创建映射项,可以让我们加速操作。

  例如:

  nnoremap <silent> <C-l> :<C-u>nohlsearch<CR><C-l>

  <C-l> 通常用于清除并重绘显示屏(参:h CTRL-L )。而新的映射项,是在原有基础之上增加了暂时关闭查找高亮的功能。

  这个用起来很带感哈。

在执行查找前预览第一处匹配  

  每次查找的时候定位到第一处匹配的位置。按esc的时候回到原来的位置。

  开启语法::incsearch

  可以用于检查是否存在一处匹配。

  例如

  假设我们只想确认单词“carrot”是否在当前文档中出现,却不想移动光标,该怎么办呢?
  当‘incsearch’选项被启用时,我们只需简单地调出查找提示符,并尽可能多地输入组成单词“carrot”的字符,直到该单词首次映入我们的眼帘。
  一旦找到该单词,我们只需按下<Esc> ,即可马上结束查找并返回原位,从而避免打断我们的思维。

根据预览结果对查找域自动补全

  此法会用当前预览的匹配结果对查找域进行自动补全。单词长的时候特别好用!!力荐

  语法:<C-r><C-w>

  例如

#文本里有一个单词like。

#查找步骤
/li
<C-r><C-W>
#此时会显示/like

将光标偏移到查找匹配的结尾

  会把光标定位到查找匹配的字符的结尾位置。如果不加的话会放在开始位置。

  语法:/{pattern}/e

  注意事项

  • 这里的"/"可以换成"?",不过两个"/",都必须换。就像这样:?{pattern}?e

查找当前选中的文本

  可以通过寄存器来实现。

  步骤如下:

  1. 用visual模式选中要查找的文本
  2. 然后使用y复制到寄存器""里。
  3. 最后输入/<C-r>"<CR>

替换

  语法::[range]s[ubstitute]/{pattern}/{string}/[flags]

重用上次的查找模式

  执行substitute 命令通常包括两个步骤:一是撰写查找模式,二是设计合适的替换字符串。因此,一分为二的技术让我们消除了这两项任务的耦合性,这才是关键所在。

  将substitute 命令的查找域留空,意味着Vim 将会重用上次的查找模式。我们可以利用这一特点精简工作过程。

  例如

# 看看这个庞大的substitute 命令吧
:%s/\v'(([^']|'\w)+)'/“\”/g #它等价于以下两条单独的命令:
/\v'(([^']|'\w)+)'
:%s//“\1”/g # 在我们撰写复杂的正则表达式过程中,通常需要尝试多次才能达到正确的匹配效果。
# 如果打算通过执行substitute 命令的方式来验证模式的话,每次执行命令都会改变文档的内容,这样做简直太麻烦了。
# 与之形成鲜明对比的是,当执行查找命令时,文档不会被修改。因此,即使我们犯的错误再多也无所谓 # 请注意,这个一般用于复杂的匹配。。如果很简单的匹配,就不要这么弄了。这个简单因人对正则的熟练度。
# 比如,,10行加注释,这个简单一句话就可以解决了。
:,10s/^/#/g

用寄存器的内容替换

  输入入<C-r>{register},我们可以将寄存器的内容插入到命令行

标记

  {flags}。不同的标记影响替换的行为。

  具体功能如下

字符 行为
& 保持上一个替换的标记
c 需要进行确认
e 如果有错误,不提示错误信息。暂时没有找到比较不错的场景
g 作用于全部匹配的内容
i 忽略大小写字母敏感
I 大小写字母敏感
n 统计计数,不执行替换内容。
p 打印出最后一次匹配的内容。如果有设置显示行号,则显示,没有设置则不显示行号
# 打印出最后一次匹配的内容,并且显示行号。
l 打印出最后一次匹配的内容,但是打印的内容和:list一致。按我理解是多打印出逃逸字符

  技巧:

  统计当前模式的匹配个数   

/{pattern}                #这个就是我们要统计的模式
:%s///gn           #抑止执行

模式

  即{pattern}。

  让我们先把目光集中在驱动它们运行的核心上,即Vim 的搜索引擎。你是否曾经想过Vim 的正则表达式是如何工作的?或者怎样关掉它们?

  Vim 的正则表达式引擎可能与你惯用的其他引擎有所不同。我们将会看到,最易混淆的差异可被very magic 模式开关轻松化解。

大小写敏感

  一般默认的是大小写敏感的。如果需要强制,在字符串后面加上标志即可。

  • \c(小写c),表示大小写不敏感
  • \C(大写c),表示大小写敏感

  例如

#查找单词"word",大小写不敏感
/word\c
#查找单词"word",大小写敏感
/word\C #把单词“word"替换为"me",大小写不敏感
:%s/word\c/me/g
#把单词“word"替换为"me",大小写敏感
:%s/word\C/me/g

vim的正则

  与Perl 相比,Vim 正则表达式的语法风格更接近POSIX。

  但是,通过使用very magic 模式开关,就可以让Vim 采用我们更为熟悉的正则表达式语法了。

  缺省使用的是magic模式。通过\v(小写v)可以使用very magic模式。通过\V(大写v)可以very nomagic模式。

例如

#假设我们要构造一个正则表达式,用于匹配以下CSS 片段中的每一组颜色代码:
body { color: #3c3c3c; }
a { color: #0000EE; }
strong { color: #; } #用magic 搜索模式查找十六进制颜色代码
/#\([-9a-fA-F]\{}\|[-9a-fA-F]\{}\) #用very magic 搜索模式查找十六进制颜色代码
/\v#([-9a-fA-F]{}|[-9a-fA-F]{}) #用十六进制字符类进一步优化模式
/\v#(\x{}|\x{})

  注意事项

  • 在此例中,magic模式我们用到了3 类括号。方括号缺省具有特殊含义,因此不用转义。圆括号会按原义匹配字符(及),因此需要转义,使其具有特殊含义。花括号也一样需要转义,不过,我们只需为开括号转义,而与之对应的闭括号则不用,因为Vim 会推测我们的意图。圆括号的情况有所不同,无论开闭括号都必须转义。

magic模式

  模式会自动为某些额外的符号赋予特殊含义,例如:. 、* 以及方括号。magic模式的设计初衷,是想能更容易地构造简单的正则表达式,但它却没能为诸如 +、?、圆括号以及花括号等符号赋予特殊含义,这些符号还必须经过转义才具有特殊含义。

nomagic模式

  暂时还不是很清楚???

very magic模式  

  开关正好弥补了这一点,除了 _、数字以及字母外,它为所有符号都赋予了特殊含义。这样一来,既好记又恰好与Perl 正则表达式的规则保持一致。

very nomagic模式

  在正则表达式中使用的特殊字符,在按模式查找时用起来很顺手,但如果我们想按原义查找文本时,它们就变成了阻碍。使用very nomagic 原义开关,可以消除附加在 .、* 以及? 等大多数字符上的特殊含义。

  例如:

#文本内容
The N key searches backward...
...the \v pattern switch (a.k.a. very magic search)... #现在假设我们想通过查找“a.k.a.”(此缩写表示also known as)的方式将光标移到
该处。针对这种情况,第一反应就是执行以下这条查找命令:
/a.k.a. #实质上我们需要这么才能得到效果
/a\.k\.a\.<CR> #或者,我们可以使用原义开关\V,激活very nomagic 搜索模式:
/ \Va.k.a.

  注意事项

  • 作为通用法则,如果你想按正则表达式查找,就用模式开关\v,而如果你想按原义查找文本,就用原义开关\V。这个要特别注意

特殊字符

  在几种模式的编写时,特殊字符比较容易混淆。

  几种模式的特殊字符对应列表如下:

magic nomagic very magic very nomagic 匹配内容
$ $ $ $ 行尾
. . \. \. 任何字符
* * \* \* 任何个数
() \(\) \(\) \(\)
| \| \| \| 分隔符
\a \a \a \a 字母表的字符
\\ \\ \\ \\ 反斜杠
\. \. . . 字符点
\{ { { { 字符{
a a a a 字符a

  

匹配和高亮 

  当我们谈论一个模式的时候,指的是在查找域输入的正则表达式(或者按原义匹配的文本);而匹配,是指在文档中被高亮显示的文本(假设已经启用'hlsearch'选项)。匹配和高亮是两件事。

  有这么个东东,但是暂时没觉得有什么用处,试了一下暂时没体会到运用场景。

  语法:

  • /zs  高亮开始
  • /ze  高亮结果

运行Shell 命令

  我们不用离开 Vim 就能方便地调用外部程序。更棒的是,我们还可以把缓冲区的内容作为标准输入发送给一个外部命令,或是把外部命令的标准输出导入到缓冲区里。

  在 Vim 中操作时,我们能很方便地调用shell 命令。下表选取了最有用的一些调用外部命令的方式

命令 用途
:shell 启动一个shell (输入exit 返回Vim)
:!{cmd} 在shell 中执行{cmd}
:read !{cmd} 在shell 中执行{cmd} ,并把其标准输出插入到光标下方
:[range]write !{cmd} 在shell 中执行{cmd} ,以[range] 作为其标准输入。这个暂时还没试明白?
:[range]!{filter} 使用外部程序{filter} 过滤指定的[range]

  运行shell命令一共有如下几种类型

一次性外部

  适用于执行一次性命令。

  语法::!{cmd}

交互

  适用于想在 shell 中执行几条命令。

  语法::shell

  注意事项

  • 想要退出的时候,输入exit,即可返回vim

使用外部命令过滤缓冲区内容

  语法::[range]!{filter}

  例如

#把当前文本排序一下

:% !sort

把命令的标准输出重定向到缓冲区  

  语法::[range]read !{cmd}

  例如

#文件开头插入当前时间

:0r !date

  注意事项

  • 如果没有[range],则插入到当前光标位置
  • 如果有[range],以range后面的匹配的范围行为准

菜鸟vimer成长记——第2.4章、cmd-line模式的更多相关文章

  1. 菜鸟vimer成长记——第2.1章、normal模式

    目的 掌握normal模式下常用操作的语法和概念,这些操作对应的应用场景以及实用技巧. 通过normal模式举一反三掌握cmd-line和visual的常用文本操作. 简介 文本操作的理想状态为:一个 ...

  2. 菜鸟vimer成长记——第2.3章、insert模式

    大部分的Vim 命令都在非插入模式中执行,不过有些功能在插入模式中会更好实现些. 如果没有输入当前文件不存在的新文本的需求时,建议通过其他模式来操作完成. 目的 掌握inser模式下常用操作的语法和概 ...

  3. 菜鸟vimer成长记——第2.2章、visual模式

    vi是没有可视模式的.然而大多数编辑软件都都是有可视模式.所以我猜测vim是几乎迫于无奈才有了visual模式. 个人建议,能不用就不用.这样能直接在头脑里处理好文本,锻炼文本处理能力,同时能转变过来 ...

  4. 菜鸟vimer成长记——第4.2章、编程插件

    简介 这部分的插件是与编程相关的插件.主要涉及两大块:所有编程语言通用的插件,以及各个语言独有的插件.插件的数量和合理性,这可能是一个不断累积和修正的过程. 个人感觉,现在比较适合sh,html,ma ...

  5. 菜鸟vimer成长记——第4.1章、通用插件

    简介 关于插件的分类,此系列只会简单的区分为通用插件和编程插件.通用插件的意思是,不基于任何编程语言都可以使用的插件.编程插件,是针对于编程习惯,或者说是针对于某种语言的插件. 计划中,是先把基本常用 ...

  6. 菜鸟vimer成长记——第4.0章、Vim插件管理利器-Vundle

    定义 Vundle是vim bunler和简称,它是一个vim插件管理器. Vim本身缺乏对插件的有效管理,安装插件并配置.vimrc文件非常不便.gmarik受到Ruby的bunler的启发,开发了 ...

  7. 菜鸟vimer成长记——第2.0章、模式初探

    首先,其他的文本编辑器只有一种模式,就是插入模式.而vim一下子颠覆了我们的世界观——有好多模式.这个是思维上的切换,很难也很重要!!! 其次,Vim 提供一个区分模式的用户界面.也就是说在不同的模式 ...

  8. 菜鸟vimer成长记——目录

    菜鸟vimer成长记——第0章.我眼中的vim学习 菜鸟vimer成长记——第1章.统一概念 菜鸟vimer成长记——第2.0章.模式初探 菜鸟vimer成长记——第2.1章.normal模式 菜鸟v ...

  9. 菜鸟vimer成长记——第0章、我眼中的vim学习

    这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...

随机推荐

  1. 企业级NFS网络文件共享服务_【all】

    1.1. 什么是NFS(1台机器提供服务) Network File System(网络文件系统)通过局域网让不同的主机系统之间共享文件或目录. NFS客户端可以通过挂载的方式将NFS服务器端共享的数 ...

  2. Linux 隐藏系统信息

    Linux查看系统信息 [更多参考]https://www.cnblogs.com/ftl1012/p/uname.html Linux隐藏系统信息 查看: cat /etc/issue.net    ...

  3. 如何在C++中动态建立二维数组(转)

    http://blog.sina.com.cn/s/blog_7c073a8d0100qp1w.html http://blog.163.com/wujiaxing009@126/blog/stati ...

  4. Hyper-v 中 CentOS 连接外网之有线网卡

    一.打开虚拟机交换管理器,查看默认的虚拟交换机 如果不是内部网络,则需要新建一个虚拟交换机,新的交换机应该使用内部网络: 二.配置虚拟机使用的交换机.如果 “默认开关” 不是内部网络,需要使用自己新创 ...

  5. print(n) 和 while/for 并列的时候, print()只会打印出最后一个结果

    n=0while n <10: n+=1print(n) # print(n)放在while的外面和while并列的时候, 只会打印出最后一个结果 n=0while n <10: n+=1 ...

  6. jQuery实现简易轮播图的效果

    (图片素材取自于小米官网) 刚开始接触jQuery的学习,个人觉得如果为了实现多数的动态效果,jQuery的确很简易方便. 下面简易的轮播图效果,还请前辈多多指教~ (努力学习react vue an ...

  7. super深究

    super的入门使用: 在类的继承中,如果定义某个方法,该方法会覆盖父类的同名方法,但有时候我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可以通过使用super来实现.比如: cla ...

  8. hihoCoder1343 : Stable Members【BFS拓扑排序】

    题目链接:https://hihocoder.com/problemset/problem/1343 #1343 : Stable Members 时间限制:10000ms 单点时限:1000ms 内 ...

  9. python and、or以及and-or

    @Python: and.or以及and-or 一.and: 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一. & ...

  10. Linux - 版本控制系统SVN

    0. 摘要 本文通过搭建SVN多版本库为例,介绍SVN的使用. SVN是一个集中式版本控制系统,在服务端部署中央版本库,所有开发人员客户端连接到中央版本库进行代码的提交和更新. Apache Subv ...