[研讨会的Vim] [刘布兰登] [哈佛大学] [这是CS50。] [CS50.TV] >>今天将是一个介绍Vim的。 怎么你们的很多人听说过的Vim? 你听到了什么关于Vim? [学生]:它解决了所有的问题。 [布兰登L.]它解决了所有的问题。 别的你们听说过Vim的?任何印象如何? [学生]几乎每个人我已经说过了喜欢使用Vim的。 哦,甜美。 [学生]:很多人都知道我喜欢用Vim。 好吧,这是很好的,因为有很多人在CS51 开始回升的Emacs,因为Emacs有稍微更好的支持 对于语言你会在CS51使用, 我担心没有足够的人在哈佛使用Vim, 所以我真的尝试做鼓励Vim的使用方面做得很好。 >>但这里是一个典型的XKCD漫画的你们可能会觉得有趣。 有你们用纳米之前呢? 这本漫画说纳米?真正的程序员使用Emacs。 嘿,真正的程序员用Vim。 不,真正的程序员使用爱德是这个 - 你永远不要想用埃德。 这是真的,真的老了,真的太差了,真正的程序员使用 磁化针和一个稳定的手。 而且你可以阅读休息,但它是相当有趣的。 而有趣的是在最后。 他们说,“当然,哦,是的,有一个Emacs命令来做到这一点。” 好老的Cx MC M-蝴蝶,这是一个排序时戳的Emacs 因为Emacs的是历史上被称为是一个有点臃肿 并有命令,几乎所有的东西,所以这是个玩笑似的为Emacs的。 Vim是什么? VIM是一种先进的程序员的文本编辑器。 我真的想使文本编辑器之间的区别 和类似的文档处理器。 Microsoft Word中被称为一个文件处理器。 可以设置页边距,使事情加粗,加下划线的东西, 通过罢工的事情,改变字体大小和诸如此类的东西。 一个文本编辑器做无非只是编辑文本。 从字面上看,你只需要字符。 有没有那种造型,大小,字体,颜色,或类似的东西的。 你要做的就是编辑文本,而Vim编程而特别制作。 它有很多内置在短短的编程功能。 它明确地专为高效的文本编辑。 >>总的来说,Vim中是已知的,基本上最快的文本编辑器 你可以使用一个带任何其他文本编辑器,有可能进行比较。 很多IDE的类似的功能不直接内置到Vim中, 所以如果你使用的IDE和你已经习惯了像编译和自动运行 或调试什么在你的IDE或不同的东西一大堆 Vim不会来与自然, 但有一大堆的插件,你可以用它来之类的功能添加到Vim中。 Vim的本身侧重于文本编辑和做文字编辑真的,真的很好。 最后,它是真正可定制和可扩展的, 而且基本的Vim已经出现,或VI,其中的Vim是建立在, 已经存在了超过40年,这是一个非常,非常深的程序, 人们会用它一辈子,从不真正掌握程序发挥到极致, 而你将永远继续学习贯穿你的生活,多年来, 总是越来越好。 >>有基本没有结束你可以学到什么,有多少你可以用Vim的提高, 这实在是令人振奋的。 你不想把它当作可怕的东西,因为你可能会变得非常,非常精通 在Vim中,在短短几个星期,但它有点像一个持续的, 你总是可以学到更多,学到更多,做的东西好, 这对我来说是很兴奋。 这是一个什么样的Vim看起来像一个例子。 这不是我的。你会看到一些现场演示现在。 这是Vim的可能是什么样子的例子。 >>什么我们今天要做的是我们要开始了与  快速展示一下Vim可以做。 我会做一些技巧和诸如此类的东西对你们 所以你可以看到为什么我喜欢Vim的这么多,为什么人们喜欢Vim的那么多, 然后从那里我们将进入一个简单的介绍。 事实上,这将是一个有点快,介绍了Vim的。 我会问你们去下载一个文本文件,并与我跟着如果你能。 这是Vim的,而且在这里我使用的MacVim, 所以如果你们有苹果电脑你可能要考虑使用的MacVim 因为它的Vim的图形化版本,虽然正规的Vim, 什么在你的命令行,工作得很好。 我要告诉你一些随机的技巧和窍门 您可以使用Vim会告诉你为什么它是如此凉爽。 >>就在几个随机的东西我会去。 的第一件事是文本对象,并有周围的文本对象的几个命令, 而我居然会教你什么文本对象在后面详细的研讨会上, 但例如,让我们说我我的名字拼错, Barndon刘,我想改变它。 我所要做的就是让我的光标在某个地方我在命令名称和类型 CIW,它会删除我的全名,把我在插入模式下, 我可以输入我的名字,并修复它。 同样,如果我想改变引号内的东西有也是一个命令。 我可以删除引号内的东西。 没有更多的双击,移动你的手放在鼠标, 双击,然后输入一些内容。互动 您可以从键盘做的一切,不管它是什么。 或者,或者,让我们说我有这样的图像标记这个锚标记内。 >>有你们的HTML覆盖在课堂上了吗? 是啊,也许我想删除这个标签, 通常你所要做的就是,你必须使用你的鼠标 并仔细高亮显示您希望删除,并删除它到底是什么。 但在Vim中,这根本DIT,你真的可以快速删除它, 我会向你解释什么所有这些命令的意思是,你如何使用它们在第二。 另外一个例子,我有一些代码在这里, 让我们说我要缩进的代码,但我要缩进的代码 只是在括号内,而我也可以使用3个命令缩进代码 使用基本> IB。 另一件事,真的很酷关于Vim是一种叫做可视块编辑。 我不知道,如果你们曾经想突出 文字在你的代码中的矩形块,有时 而不必做这种怪异的那种东西线跨越所有不同的线路。 例如,在Vim中你可以做到这一点。 我可以突出显示矩形就是这样,这是很酷, 但同时,我可以编辑使用该功能。 例如,如果我想给一些前缀给我们所有的名字 我可以突出一个块,然后添加一些东西。 >>同样,我也可以突出这个块,并选择将其删除, 也许我将重点介绍该块并将其更改为D,因为我们都是医生。 不管是什么,你可以做所有这些不同的事情。 最后,折叠是真的很酷。 很多的IDE有这个,你可以折叠不同的功能拿出来看 如果你不想看到他们。 例如,假设我有这样的一堆文字在这里,我真的不希望看到它。 我想保持它的看法,因为我编辑别的文件中。 我可以把它折叠起来使这一切都崩溃了, 而这种方式是拿出来看, 我可以编辑的页面上的其他东西,这真是太棒了。 您可以折叠起来的功能和诸如此类的东西或折叠起来的类,当你编程 只是为了让他们拿出来看,当你不编辑它们, 后来当你想看到他们,你可以打开它们。 而且你可以看到它刚开业一切。 制表符,缓冲区和窗口。 Vim的是在这很酷 通常在很多文本编辑器只能编辑一个文件时, 像纳米,或者如果你使用记事本或gedit的。 我其实从来没有使用gedit的非常多,但至少在记事本+ + 你可以有标签,但Vim有标签,缓冲区和窗口的概念。 例如,您可以打开了一堆新的标签。 >>您可以在这里看到,在最高层我现在有一堆选项卡, 我可以关闭它们。 另外,还有缓冲器的概念, 这是想法,一旦你打开一个文件 它停留在活着的缓冲区,如果你想真正快速定位到该文件 您可以在缓冲区内找到它真的很快为好, 进而,在一个窗格中,您也可以分割你的窗口分成多个窗口。 举例来说,如果我想要分割窗口分成多个窗口 你可以看到在这里,我可以有两次相同的密码, 我可以分裂越来越多,而现在它看起来并不好 因为默认情况下我有默认的窗口大小是那种大 因此,所有的人都压扁了, 但通常,当我在我的电脑,而不是这台投影机上 我可以有几个窗格打开在同一时间,这是非常好的对 编辑多个文件在​​同一时间。 你也可以有东西像选择和替换, 我们将实际上涵盖在研讨会上, 所以我将跳过,对于现在。 您也可以用在各种不同的方式在命令行交互。 例如,如果我这里有一些名单,我想对它进行排序, 我不知道,让我们添加另一个水果,葡萄, 我可以使用高亮功能突出这 并调用排序,它会自动排序对我来说。 >>同样,如果你要进行编辑的CSS,我相信你可能会做 为您的最终项目,大多数人做的, 也许你想保持你的CSS按字母顺序排序这些组织。 您也可以选中它们,并调用排序,它会整理它们。 这些都是一些的东西,Vim可以做例子, 你会发现,我真正想要的关键是要提请你注意 是,我是从键盘做的一切, 如果你能看到我的手放在 你还会看到我的手从来没有真正从母排移动。 通常,当你正在编辑的文本,通常必须先使用鼠标 并点击和诸如此类的东西,和那种运动的拖累你失望 和浪费时间,或者你家里行和箭头键之间移动, 所以你来回移动这样的,这是一个有点麻烦 但也减慢你失望的,就是一旦你在Vim的真的很不错 你想要做的一切,而不必移动你的手做 从母排,这是伟大的。 等一下,我要打开这个应用程序。我们走吧。 >>现在你可以看到什么命令都跑到右下角的窗口。 所有,我只是表明你是被默认包含Vim的东西的功能, 但也有一个巨大的插件,你也可以用数 提高你的Vim的经验。 如果您下载了我包括配置文件, 并有关于如何安装他们在PowerPoint中的说明 以及在电子邮件我送出去,我已经安装了约40插件 也许30插件,每一一个 带来了额外的功能,Vim会提高你的Vim的经验。 例如,我的最爱之一是一种叫做surround.vim, 它基本上可以让你与周围的工作 或分隔字符更容易。 >>一个例子,我不知道你们在LaTeX永远代码, 但乳胶是一种用于使一个数学排版语言 非常好看的数学,每当你想要的东西看起来像数学 你把它包在美元符号,并让我们说我打字的一些公式如F = MA, 我忘了把它包在美元符号。 然后,我可以强调这一点,并把它包在美元符号就这样。 另外,Vim允许你删除标签内的事情 和删除标签和诸如此类的东西,但Vim的性质 不允许您更改标签,因此,例如,我有这样的div标签, 我想升级到HTML5和使用新的头标记。 我可以做改变周围的标记和类型的头, 它会自动改变,对我来说。 同样,假设我们有东西在括号中, 我想改变,从括号放在括号中或类似的东西。 我也可以改变,真正轻松地通过键入C语言的变化, S代表环绕,括号中。 哦,我想我必须更快型。 括号和大括号或中括号,它会自动改变,对我来说, 这是非常好的,否则通常它真的很麻烦。 >>这是非常好的也许单引号之间切换 和双引号字符串或类似的东西。 这是一个示例用例。 有一个叫逃犯插件 它集成了使用Git。 我猜也许你们还没有使用Git的那么多的CS50, 但你会发现自己使用Git越来越多, 不仅在整个班级哈佛,而且在工作和诸如此类的东西, 而通常你必须之间来回切换 命令行和Vim用Git的互动, 但有插件来使用Git从内部集成Vim 同时也给你的Git之上,甚至更多的功能。 还有一种叫NERDTree,你可以用它来探索 该文件结构在Vim内。 >>例如,我可以打开NERDTree在右窗格中, 你基本上可以看到随机文件 和开不税,不看我的税。 你可以看一下文件和诸如此类的东西,并打开其他文件等等等等。 我不会去为其他的插件,所以我们基本可以在潜水 并开始开发Vim,但也有插件,让您 更轻松地发表意见,插件,让您更轻松地跳档之间, 插件,让你的语法在Vim内检查, 这是真的很酷,和它给你的语法检查 对于大多数语言正确的开箱即用, 事情像彩虹括号,这实际上是真的,真的很酷。 让我给你这样一个例子,现在。 >>让我们来看看。 下面是我在写一些随机代码, 你会发现,括号和括号都是彩色的, 和同色的括号和括号匹配,这是很好的 有时提高了代码的可读性。 您还可以自动完成,表格格式。 当你有,你想获得的所有注释排队的东西 或者你想使一个表中的文字,你要 把一切看,而不必手动格式化,像一个漂亮的表, 有插件,会格式化你等等,等等。 这样的例子不胜枚举和和。 我可以花时间探索所有存在不同的Vim插件, 和它的令人难以置信的外面的东西。 >>到目前为止,有问题吗?甜蜜。 在这种情况下,我们将开始用Vim玩弄, 我想你们的工作有一些Vim的我 这样你就可以感受得到它,我可以指导你用Vim工作的第一步 因为很多人不堪重负,当他们打开Vim的了, 有时,如果你甚至不知道该命令退出,你甚至不能脱身的Vim, 但它不是那么糟糕。 你只是从别人谁也有用的Vim需要指导几分钟 或阅读一些教程在网上,你会用自己的方式在任何时间。 这里有一些说明来安装Vim的,如果你还没有。 你可以提出后看看这些幻灯片,如果你想安装更多的东西。 >>此外,这些都为我的安装配置文件的一些指令, 你也可以在以后遵循这些说明,如果你还没有。 如果你们可以去这个网站,并下载一个文本文件。 该链接将带你到这个文本文件,我想请你下载并在Vim中开拓, 并有一堆练习和诸如此类的东西在那里,你可以和我一起跟随周边 并开始得到一些做法与一些Vim的基本操作。 好。 当你打开那个了,我要去给一个简短的介绍,以2真正的关键原则 在Vim的编辑,这是真正重要的是了解你潜入Vim的时候, 这就是模式的编辑和运营商和议案。 我将介绍莫代尔编辑第一,然后我们将讨论运营商和运动 在一点点。 Vim的和几乎所有其他的第一个关键区别 任何形式的文本编辑器就是Vim的是一个模式的编辑器, 而当你使用Vim的意思是指 你可以在许多不同的模式之一。 有普通模式,还有插入模式,有可视化模式, 等等等等,而事情是,你的按键采取不同的行动, 采取不同的含义,这取决于你是哪个模式中。 正如一个例子,正常模式下是你,当你走动的方式, 所以我会用钥匙J可向下移动, 但在插入模式下,您可以使用键J可实际键入通知J在屏幕上, 这就是为什么很多人感​​到困惑,因为他们不习惯 在不同的模式是所有的时间,所以他们会打字出来的东西, 而你习惯了不管你输入显示在屏幕上, 但在Vim中也许你的光标移动所有的地方 因为你输入的字符怪异,突然你会得到 转移到插入模式,因为您键入一些关键 这使你进入插入模式,然后文本开始飞了出去, 很容易让人因为这一点困惑。 但是你要跟踪你在什么模式下, 并且,如果你的Vim的底部工具栏 应该有一个指示灯,告诉你,你现在在什么模式下, 这应该是有帮助的。 >>但在一般情况下,3个主要模式,你应该知道, 有可能只有6或7或8或模式的话, 但是你花大部分的时间在3。 第一件事就是正常模式。这是你花你的大部分时间。 所有击键记录为某种命令, 而我们将全天今天学习了很多的命令。 另一种模式是插入模式,这就是你真正打字出来的东西, 和插入模式基本上是你平时用的模式。 你输入的东西,它只是涉及在屏幕上, 和视觉模式的东西,你可以做高亮。 你前面看到的地方,有时我会被突出显示文本 并操纵它以不同的方式,那就是使用可视化模式的一个例子。 >>我们将与您需要在Vim中生存的绝对基本的开始吧, 它基本上是这7个命令就在这里。 HJKL使用来浏览周围的文件, 和它们对应于左,下,上和右, 而你可以自由地使用箭头键为好, 但我们真的鼓励您使用HJKL尽可能 因为这个想法是,你正在编辑的同时,你可以在文档中移动 而无需移动的箭头键之间 并在你打字,这是真的,真的很好。 你只是想在移动几个字符。 你没有给你的整个移交移位,这是种不错的了。 一些Vim的专家其实他们的方向键映射到其他功能 因为他们已经有HJKL,并且它们可以用于其它功能的方向键,以及。 HJKL移动你身边,而你在正常模式。 如果你想进入插入模式并输入一些内容 您可以按i插入模式,并让你在插入模式下, 您可以输入一些东西,而你输入逃逸 从插入模式,回到正常模式。 逃避永远向您发送回正常模式 无论你是在的,如果有什么模式,你要离开 您可以键入:WQ进入, 你能记住这一点的方法是w代表写, 和q表示退出,所以:WQ, 和结肠运行命令,所以:WQ输入要运行的命令 保存并退出。 >>如果你打开​​该文件了,我们将通过第一个练习一起去。 步骤1尚存在Vim中, 并希望你们都有这个开放。 好了,我们有一些简单的练习,为您习惯使用这些键。 HJKL确实似乎直观起初不, 这是初始块1,而使用Vim的人们有 就是使用这些键来浏览周围。 这不是直观的,但一旦你习惯了它 果然集成到你的头脑,而且很多人经常发现自己 在Word或同时在Chrome中使用J和K, 实际上人们已经创造了这个浏览器插件叫做Vimium 您可以使用在Chrome或铬来浏览Chrome浏览器 用Vim般的快捷键使用键盘, 所以人们都非常热衷,但继续尝试和使用 HJKL的数字之间进行导航,所以您可以熟悉 这些东西是如何工作的。 >>一旦你完成,你也可以去玩弄这个迷宫,我创建 只是为了好玩,你可以排序按照虚线 尽量不要撞到墙上 并尽量做到迷宫的尽头。 如果你使用Gmail的快捷方式或任何数量的不同应用 你会发现,J和K,例如,经常被用来上下移动, 而且主要来自Vim的本质,所以你有J和K, 它真的很好,因为你可以上下移动,而无需 移动你的手来回的箭头键。 现在让我们尝试进入插入模式,走出的插入模式。 你会发现,现在我的光标是一个大大的黑盒子, 而当你进入插入模式,你会发现, 它变成一个狭窄的游标就像你已经习惯了。 如果你使用的Vim的终端,你可能不会发现这是事实 因为终端不支持这种薄光标, 但如果你使用的MacVim或gVim的Windows上 然后你会发现,它变成一个游标,这是一个非常快速的可视指示器。 这对你,告诉你无论你在正常模式或插入模式。 >>让我们继续前进,并尝试编辑这条线。 它使用自己的信息或不管它是补中, 以及如何做到这一点是您可以移动到空白的结束, TYPE I进入插入模式,你可以退格 并输入你的名字,当你完成输入 您可以按Escape键离开插入模式, 你可以搬过来这里,类型插入,删除的是, 键入逃生摆脱插入模式​​,你可以输入:w进入 保存该文件。 您可以输入刚:w来保存文件。 您可以输入刚:Q不保存退出, 或者您可以键入:wq保存并退出。 当然,我们并不想退出,因此你可以键入:瓦特 也许这似乎有点低效先 因为移动到那个地方你不得不J型一群倍, 也许我一堆时间去那个地方, 你必须按退格一群倍,似乎真的没有效率 而通常你可能会移动你的鼠标移到那里, 双击并开始打字,当然, 事情是,当你第一次开始Vim的,你只知道这些基本的命令, 是的,这将是一个有点慢,但很快你学习一些更强大的命令, 这将允许您在整个文件更快速地移动, 你不会有这个很麻烦的使用 重复的JS和重复KS和LS等等等等。 >>到目前为止,有问题吗?固体。 返回到PowerPoint中。 现在,我们要引入先进的运动几个命令。 你经历不必键入也许我有很多或H了很多, 这里有一些更多的命令,你可以用它来更快地走动。 假设你的光标在O上的一些“这是一些文本。” 这里有5个命令,你可以用它来跨线更容易移动。 所以,^和$分别移动到开始和结束行, 在某些时候,当你学习正则表达式或其他各种事情 你会发现,这些排序约定的情况非常普遍。 在^一般是指该行的开头。 元通常指的是行的结尾。 这些都是很容易记住,同样,B,E和W, 他们容易记住的好,因为B对应到后或开始, E对应于目的,它是字的结尾, 和w对应到下一个单词,所以w代表词。 如果你继续键入e或继续键入瓦特 你发现你可以字之间跳跃,而且它不仅仅是打字升得更快。 >>现在,接下来的事情就是操作符 - 动作模型。 其实,这是关键原因,Vim可以这么强大的一个, 并且那是因为你基本上可以组成不同的元素 为更强大的功能,所以一般 当你在Vim中做任何事情,你可以把它作为 结合运动操作。 到目前为止,我们只处理了动作,像HJKL。 他们移动你的周围,然后B和W,他们也打动你身边不同的方式, 但我们还没有去还没有能够删除的东西或改变的事情,或诸如此类的东西, 而当你把运营商提供的运动那么你就能够有 更强大的效果,因此,例如, 如果我想删除2个字,我可以用d表示删除操作员, 我可以添加一个2来表示我要删除2个字, 然后我有一个运动。 我可能包括瓦特说删除2个字。 我可以使用类似J可说删除下调2倍 并删除2行我下面。 我可以说D2B删除向后两次, 并有比那些我在这里表现得更加运动 真的,真正使您的Vim编辑功能更强大。 >>这些都是一些最流行或最常用的运算符 而且很容易记住。 D表示删除,C改变。 C是基本上是完全相同的东西改变,只是 当你自动使用C你得到把进入插入模式之后。 通常,当你使用删除您从正常模式下使用它, 你删除你留在正常模式下的东西后。 但是,如果你想改变的东西,你可以使用C 删除的东西,然后立即进入插入模式 这样你就可以开始输入文字和修复的东西。 Y是为粘贴。 它基本上是复制的Vim的概念。 例如,如果我想复制下一个2的话我可以做Y2W或类似的东西, 和v是用于高亮显示,基本上。 还什么是真正酷的是,如果你输入一个操作符两次 它会作用于整行,所以如果我要删除一整行 我可以输入dd来删除整行, 或者,如果我想复制整行,我可以使用yy或类似的东西。 >>让我们来试试这个更多一些。 这里有一个在这里锻炼一个先进的移动运营商,以及 甚至一些其他的事情我不打算在今天将PowerPoint覆盖, 但你可以随意查看他们后来和玩弄他们 并熟悉它们。 操作符与动作。 例如,假设有你只是想在句子中删除这些2个字。 什么,你会想要做的就是你要确保你的 光标在要删除的第一个字的开头, 您可以输入D2W,它将删除那些2个字给你。 并使用这个确切的命令,D2W,似乎有点麻烦 和毫无意义的,但它应该表达的想法 您可以以防万一撰写这些不同的东西,也 你碰巧是在这种情况,那么你就可以最终使用DW或D2W, 这点我偶尔使用。 DD和CC我用得更频繁,因为你可以在整个线采取行动。 >>例如,让我们说我有这样的随机列表在这里, 也许我想删除,说哈士奇,因为它不适合就行了,只是因为, 我不希望它进入插入模式之后。 我想删除它,在这种情况下,我可以键入日, 并且,将删除整行。 但是,假设现在有,我要删除这个其他线路, 但我也想修复它,并重写它,在这种情况下,我会尝试像CC, 并删除整条生产线,但使我在插入模式下,你可以看到, 我可以从那里修复它。 而且有很多很多不同的方式,你可以结合运营商和议案, 和您使用Vim越来越多的您更多地了解不同的方式 您可以使用这些命令,你会变得越来越好。 真棒,现在这里有一些其他杂七杂八的命令 这也是非常非常常用的,也将帮助你成为在Vim的更好。 >>比如,我们谈到了小写字母V的视觉高亮显示。 我们也可以使用大写V的视线高亮。 这样,你可以很容易地突出在整个时间线等等。 您可以使用O当你在正常模式下,基本插入新行 线下你目前并付诸插入模式开始打字。 您可以使用小写字母x删除的字符这是你的当前光标下。 您也可以使用u撤消,这是种不错的, 您也可以使用大写字母A追加到当前行的末尾, 所以也许你的光标就行了某个地方,你要添加到该行的末尾。 然后,您可以键入大写的A,立即跳转到该行的末尾 并进入插入模式,这样你可以添加到该行的末尾。 >>我觉得我有一些更多的练习了,我们可以尝试一下。 事实上,我没有,我没有。不是那些。 但是,我们有下一节我们将看到一些更多的练习。 但是,这些你可以尝试自己为好。 例如,如果你在正规的V型,你会得到你已经习惯了喜欢这个经常高亮。 如果您在首都V型,你可以得到全系强调这样的, 或者如果我输入的邻它基本上会打开一个新行对我来说,这是种不错的。 X I可以用它来删除字符上的光标。 我可以按x一群倍和删除的东西。 我可以按u撤消了这一切。 A,我可以键入立即到该行的末尾, 我也包括了许多很好的钥匙 您还可以看看介绍之后,学习一些其他命令。 [学生]有什么替代呢? [布兰登L.]更换也很酷 基本上,如果你去的地方 - 你有没有,人们并不真正使用它那么多了,这些天, 但你们见过在Microsoft Word中,如果您键入插入 你突然进入这个奇怪的模式,你输入的每一个字符 基本上取代了下一个字符? 我不知道,如果你们已经见过了。 这是类似的。 例如,如果我想覆盖什么我现在有出于某种原因 我可以输入大写的R,而现在我会在替换模式下,你可以在左下角看到。 如果我输入的东西它覆盖的东西,我也可以退格,这是一种很酷的, 我可以撤消。 我不使用,很多时候,但每一个现在,然后它变得得心应手。 >>让我们来谈谈文本对象,这是我的一个关于Vim喜欢的东西,说实话。 文本对象基本上都是定义某种文本块的这个概念 您的文本文件里面,我就去了这些键第一, 然后我会给你一些示范让你更充分地明白这意味着什么。 W是指一个单词,如文本对象作为一个词, 所以有些话,你通常知道, 如果有标点符号的字旁 那么它将不包括标点符号一般。 但是,举例来说,如果您要包含标点符号由于某种原因 或者你正在做的事情,这不是英文,你要包括 所有由空白划定的字符 您还可以使用资本W到得到的四周空白的一切。 您也可以使用括号来引用文本对象 这是一组括号内。 你可以做同样的事情用方括号,尖括号, 花括号和引号为好,最后, 您还可以使用T指一些标记。 >>让我来告诉你如何实际发挥出来。 例如,这是我在我展示的第一个例子。 有在这句话中的一些词,我想改变, 我们聊大约W被用作运动, 但你也可以把它作为像这样的文本对象。 例如,一个方法,我可以改变奥巴马的名字或基本修改 是我可以去这个字和类型的开始在C的变化和w代表词, 并且,将删除整个单词并把它变成插入模式。 但它是非常恼人的,让我有去的话所有的时间的开始。 这真的很烦人。我不希望有这样做。 其实我可以在里面他的名字在任何地方 并在CIW,而i代表内心, 所以,如果我输入CIW它代表改变一个字, 或者换句话说,改变我目前里面的字, 它会给你确切的同样的效果。 你可以解决这个问题。 >>同样,也许我有一些像这样的情况下, 其中由于某种原因,也有一些分隔符或者类似的东西, 或者有一些标点符号,我想删除整个事情。 如果我输入CIW它会​​删除什么这些定界符, 但我想拿到的四周空白整个事情, 所以我可以使用CIW删除整个事情。 我会输入5,做同样的事情,并在六人。 同样,如果我想改变的东西,在括号中 我可以在CI型)删除一切的括号内 然后填写任何我想做的事情,如int的argc,不管你想要做什么, 同样,同样的事情引号。 我可以修复文本的引号里面, 而且我还可以改变的事情,是标签内。 这是否有道理? >>你可以做的另一件事情是你没有用c。 您也可以使用d如果你想删除什么这些标签里面。 如果我要删除一个标签内的文字,我可以使用DIT删除该标签。 我也可以用维生素突出什么,在标签内,例如。 另一件事是,而不是用我在中间,你也可以使用, 这代表所有的,所以记住,如果你使用我会参考文本对象 或使用的包含在定界符文本对象, 但如果您使用的是它将包括文本以及作为分隔符本身。 例如,如果我想强调这个文本及周边标签 我可以使用增值税,V为视觉亮点,一为all,然后吨的标记。 你可以做这样的事情为好。 也许我要删除这个google.com与它周围的引号为好, 我可以使用类似哒“删除所有的,例如。 >>到目前为止,有问题吗? 我知道我对你倾倒了大量的Vim命令的全部一次, 这基本上是因为我要揭露你的所有不同的命令 给你介绍了这些命令在Vim中。 但是,当你回去什么事情要发生的是 你将不得不慢慢地拿起这些命令一个接一个。 你不想压倒自己,因为那是过于庞大。 如果你想拿起Vim你要真正做的是 开始第一个基本集,我已经打破它分为教训你 使您更容易遵循,并尝试和掌握每一个命令集 一个接一个,每次一个。 这是太多的事情要做面面俱到,所以当你回去是你应该做的 去的第一课,这是HJKL,插入模式,逃进正常模式, 和保存并退出,而这一切你真的需要在Vim中生存, 并获得非常,非常舒服。 以后一旦你很舒服的那几天 你应该移动到更先进的运动运营商, 更先进的运动,并在给运营商等等等等。 >>我知道我经历了很多,但我希望得到你接触到了很多不同的东西。 但是,如果你准备好迎接挑战,我可以告诉你 如何使用大多数我们今天刚刚获悉把这一切放在一起, 你也可以跟着,如果你想, 但是我创造了一些随机的运动。 假设我们有某种名册这样 在那里你有这些块用别人的名字, 房子,年,浓度和诸如此类的东西, 你想添加自己的新条目。 什么是为你做这一点的最好方法是什么? 让我们像这样做。 我们为什么不首先强调这个块。 你会选择它,我们可以按y键猛拉它, 所以现在我们基本上可以复制和粘贴第一这个模板 而不必从头开始重写了整个事情。 现在,我会按J键向下一堆次下井, 我会按p来粘贴。 也许我会加上一个空格一些额外的线条, 并让我们说现在我想改变你的名字的人。 然后我就可以去这里并在C2W像以前一样改变这个名字。 鲍勃·琼斯,谁知道。 也许,如果我想改变房子我可以去到中间位置 和类型的CIW,把卡博特众议院。 >>这里可能是,您可能要考虑使用一个例子 替换模式下,如果你想改变你的毕业一年, 或者我们也可以使用CIW为好。 不要紧 也许你想改变你的专业。 而这就是你要做的。 也许我会给你什么,我可能会做一个示范 如果我是,如果你继续学习Vim的更高级的命令 因为我们几乎没有划伤表面在这里, 我可以做这样的编辑速度甚至超过了我在这里向您展示 因为我知道更多的命令,我还没有得到一个机会展示你今天。 例如,如果我想强调这我能做到它这样, 向下移动。 我已经添加了我自己的映射 基本上自动突出显示的东西对我来说 我可以,我不知道。 我的意思是,这只是想告诉你,你可真,真 开始编辑东西比较快,尤其是当你把所有这些不同的领域, 而且通常你可能会做的是那种一下 并强调,然后键入。 你可以做的一切一下子,复制和粘贴, 向上和向下移动的文件之间, 刚刚划定的东西,格式化的东西。 这一切都可以在Vim的多,更快速地完成。 >>最后的一点点东西,我认为可能是非常好的, 这是查找和替换。 那些你们谁使用Gmail的快捷键 你也知道,如果你键入/它发送到你的搜索框, 而在很多不同一般的应用程序,你会发现斜线 也许控制斜线或是与斜线 将会把你带入某种搜索模式, 而这也主要来自Vim的本质 因为斜线运营商或斜杠命令允许你输入 某种形式的字符串,你可以用它来在文档中搜索。 你可以n和资本n转到下一个和以前发生的, 你也可以使用类似的搜索和文档内更换。 我给你什么可以做一个示范。 >>也许如果我想找到这个文件中的字符串抽出的所有实例 我可以键入/猛拉,因为你可以在左下角看到, 当我输入输入它强调所有实例。 我可以使用基本上n到来回跳转所有这些不同的实例之间, 让我们假设我要搜索和替换抽出一些随机单词 这也是在文档中。 我可以按:开始输入在Vim某种命令, 一些命令,这比走动更复杂 或删除或类似的东西。 我会键入%符号来引用我想用这个替换命令 在整个文档。 键入以s为替换。这来自于珍珠本质。 而这一个命令,你会发现珍珠一个非常标准的命令 而不是和其他编程语言,你会 可能会开始学习,因为你做更多的计算机科学, 我基本上可以使用/在我要查找和替换的单词键入/,类型 然后键入另一个/在什么的话,我想替换这个词型。 谁知道,也许nyancat。 我这样做,然后你会看到一切都得到了更换。 >>但是你会发现,有这个词在这里。 由于某种原因,我们的部分抽出的实例将被替换,但不是全部 那是因为路这样的说词已经写入 不仅在Vim的,但在其他地方是,当你运行该命令替换 它只会替换每一行中的单词的第一个实例, 所以如果我想其实在替换每一行字的所有实例 然后我必须做同样的事情,但将银旗在最后, 这代表全球,然后,将实际 替换所有实例。 而一旦你学会了正则表达式,那里实际上是一个CS50研讨会 正则表达式,所以如果您想了解正则表达式 你也可以采取座谈会,了解更多。 >>但是例如,让我们说我有一个这样的名称的列表, 我想,而不必姓,逗号,名字重新排列,所以 我想重新安排它,所以它说名字,空格,姓氏。 实际上,你可以使用此命令在这里 从根本上为你做的,所以你可以在这里看到 我们先从一个s,这意味着我们想要做一个查找和替换, 然后我添加了一个标志称为\ V,这是一种叫这个神奇的标志 在Vim里,让您更轻松地做正则表达式。 然后从那里我们基本上匹配任何一行 即形式的一组字,逗号,空格,和一组单词或一组字母。 \ W +基本上是指一个或多个字符, 而括号是用来捕获这些群体 所以我以后可以参考它们。 正如你所看到的,也就是说,一旦这些捕获2块 这是一个逗号,空格分隔 那么我们要取代它的是我用\ 2 \ 1 参考以前被抓获的话 在实际find命令, 等\ 2是指任何被包含在第二组括号, \ 1是指任何被包含在第一组括号, 正如你所看到的,我把2 1以空格分隔前 尝试和姓氏前移动的第一个名字。 这是否有道理? >>而我所能做的就是,我可以隐藏这些第一次,所以我只能在这些线路上运行此命令, 然后我会在键入此命令。 你可以看到它不正是因为划分。 再次,这是勉强划伤表面, 如果你去正规表达式研讨会话,我敢肯定你会学习 有更多不同的东西,你可以使用正则表达式做, 这基本上开始暗示你真的可以用Vim做 如果你真的开始成为它的主人。 也许你要重构的东西,你想找到的所有实例 的一些功能如下几种命名模式。 你想改变这种状况的命名方式。 你可以写一些像这样做,对你sort命令的, 这就是灵活性的那种你可以在Vim中得到 那你只是不会得到在其他的文本编辑器。 >>,基本上涵盖了所有我想今天来教你在今天的研讨会上的东西, 但同样,我真的想强调的是,如果你想拿起Vim的 这是事实,有一个在一开始就稍高的学习曲线。 在一开始你会略显不足生产力 比你可能会在其他方面,但如果你坚持下去 在数天或数周,取决于你学习的速度有多快, 你会变得非常非常快,我想给你示范 关于什么的Vim能够,但我并没有真正得到一个机会向您展示 当我常举例来说,在课堂上我输入了我的笔记用Vim会发生什么。 那是因为我可以工作,所以比我快得多的Vim与任何其他程序。 这是字面上的Vim相比其他方案2或3时生产率的提高, 不仅文字编辑的速度,而且在路上我可以在文档中移动 我可以访问我的计算机上的其他文件的方式 并跳转它们之间等等等等。 这只是一个非常非常巨大的生产力提升。 >>但是当你学习,你要确保你了解一件事的时候, 尽量不要淹没自己有太多不同的命令 因为有很多命令和很多不同的快捷方式,您可以在Vim中学习。 你要一点点回暖的时间和多年来 逐渐积累的Vim越来越大的理解。 如果您想继续了解更多,这些都是一些比较高级的主题 您可以继续了解,即使这样勉强皮毛。 以下是一些流行的插件,你可以随时检查出来和谷歌他们 和玩弄他们,如果你想,只是看到什么样的插件都在那里。 然后在这个PowerPoint演示结束时,我有一堆链接 各种资源,你可以使用来自学习。 这里有一堆不同的链接,您可以用它来开始使用的Vim。 他们有不同的教程和诸如此类的东西, 最后,这些都是一些可以使用更高级的东西 也检查出来为好, 一些屏幕的演员和Vim的一些更先进的技术 也有一些不同的部分源代码,你可以看看在GitHub上 只是为了看看别人的配置文件 还是来看看在Vim插件等等等等。 >>这就是我对你的。 [CS50.TV]