<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[刘新修]]></title> 
<link>http://liuxinxiu.com:80/index.php</link> 
<description><![CDATA[刘新修的个人博客 (Liuxinxiu'S Blog)]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[刘新修]]></copyright>
<item>
<link>http://liuxinxiu.com:80/s//</link>
<title><![CDATA[vim 撤销上一个编辑操作]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Linux/Unix]]></category>
<pubDate>Thu, 09 Sep 2010 06:52:14 +0000</pubDate> 
<guid>http://liuxinxiu.com:80/s//</guid> 
<description>
<![CDATA[ 
	<p><strong>vim</strong> USR_02<br /><br />USR_02<br />*usr_02.txt* Vim version 6.1. 最后修改：2001年9月3日（翻译于2002年5月10日）<br />VIM用户手册 － Bram Moolenaar(由nek_in翻译)<br />Vim初步<br />本章提供用Vim编辑一个文件的足够信息。这里提供的方法不是很好或者很快，但至少你能<br />编辑。花些时间去练习这些命令，这是后面的知识的基础。<br />&#124;02.1&#124; 第一次运行Vim<br />&#124;02.2&#124; 插入文本<br />&#124;02.3&#124; 移动光标<br />&#124;02.4&#124; 删除字符<br />&#124;02.5&#124; 撤销与重做<br />&#124;02.6&#124; 其他编辑命令<br />&#124;02.7&#124; 退出<br />&#124;02.8&#124; 寻求帮助<br />下一章：&#124;usr_03&#124; 移动<br />前一章：&#124;usr_01&#124; 关于本手册<br />目录：&#124;usr_toc&#124;<br />--------------------------------------------------------------------------------<br />*02.1* 第一次运行Vim<br />启动Vim的命令如下：<br />gvim file.txt<br />在UNIX操作系统中，你可以在任意命令提示符下输入这个命令。如果你用的是Microsoft<br />Windows, 启动一个MS-DOS控制台，再输入这个命令。<br />无论哪一种方式，现在Vim开始编辑一个名为file.txt的文件了。由于这是一个新建<br />文件，你会得到一个空的窗口。这个屏幕看起来象下面这样：<br />+---------------------------------------+<br />&#124;# &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124;&quot;file&quot; [New file] &#124;<br />+---------------------------------------+<br />('#&quot;是当前关标的位置)<br />以波纹线(~)开头的行表示该行在文件中不存在。换句话说，如果Vim打开的文件不能充满<br />这个显示的屏幕，它就显示一个波纹线开头的行。在屏幕的底部，有一个消息行指示文件<br />名为file.txt并且说明这是一个新建的文件。这行信息是临时的，新的信息可以覆盖它。<br />VIM命令<br />gvim命令建立一个新窗口用于编辑。如果你用的是这个命令：<br />vim file.txt<br />则编辑在命令窗口内进行。换句话说，如果你在xterm中运行，编辑器使用xterm窗口。<br />如果你用的是Microsoft window的MS-DOS窗口，编辑器使用这个MS-DOS窗口。两个版本<br />显示出来的文本看起来是一样的。但如果你用的是gvim，就会有其他特性，如菜单条。<br />后面会有更多的描述。<br />--------------------------------------------------------------------------------<br />*02.2* 插入文本<br />Vim是一个多模式的编辑器。就是说，在不同模式下，编辑器的响应是不同的。在普通模式<br />下，你敲入的字符只是命令；而在插入模式，你敲入的字符就成为插入的文本了。<br />当你刚刚进入Vim，它处在普通模式。通过敲入&quot;i&quot;命令（i是Insert的缩写）可以启动<br />插入模式，这样你就可以输入文字了，这些文字将被插入到文件中。不用担心输错了，<br />你还能够随后修正它。要输入下文的程序员打油诗，你可以这样敲：<br />iA very intelligent turtle<br />Found programming UNIX a hurdle<br />输入&quot;turtle&quot;后，你通过输入回车开始一个新行。最后，你输入键退出插入插入模式<br />回到普通模式。现在在你的Vim窗口中有两行文字了：<br />+---------------------------------------+<br />&#124;A very intelligent turtle &#124;<br />&#124;Found programming UNIX a hurdle &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124; &#124;<br />+---------------------------------------+<br />什么是模式？<br />要看到你在什么模式，输入如下命令：<br />:set showmode<br />你会发现当你敲入冒号后，Vim把光标移到窗口的最后一行。那里是你输入&ldquo;冒号命令&rdquo;<br />（以冒号开头的命令）的地方，敲入回车结束这个命令的输入（所有的冒号命令都用<br />这种方式结束）<br />现在，如果你输入&ldquo;i&rdquo;命令，Vim会在窗口的底部显示 --INSERT--（中文模式<br />显示的是--插入-- &mdash;&mdash; 译者注），这表示你在插入模式。<br />+---------------------------------------+<br />&#124;A very intelligent turtle &#124;<br />&#124;Found programming UNIX a hurdle &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124;-- INSERT -- &#124;<br />+---------------------------------------+<br />如果你输入回到普通模式，最后一行又变成空白。<br />解决问题<br />Vim新手常常遇到的一个问题是不知道自己在什么模式下，可能是因为忘了，也可能<br />是因为不小心敲了一个切换模式的命令。无论你在什么模式，要回到普通模式，只<br />要敲就可以了。有时你需要敲两次，如果Vim发出&ldquo;嘀&rdquo;一声，就表示你已经<br />在普通模式。<br />--------------------------------------------------------------------------------<br />*02.3* 移动光标<br />回到普通模式后，你可以使用如下命令移动光标：<br />h 左<br />j 下<br />k 上<br />l 右<br />这些命令看起来是随便选的。无论如何，谁听说过用l表示右的？但实际上，作这些选择<br />是有理由的：移动光标是最普通的编辑器命令，这些命令将放在你可以最快输入的位置<br />（特别是当你用十指输入的时候。<br />注意：<br />你还可以用箭头键移动光标，但这样会减慢你输入的速度，因为你必须把你的手从<br />文本键移动到箭头键。想象一下，你在一个小时内可要这样做几百次，这可要花<br />相当多的时间的。（译者注：原文是根据英文输入来说明的，如果你输入的是中文<br />如果你需要在编辑中移动光标，还是用箭头快一些，因为输中文的时候，你要输入<br />命令还要把中文输入法切换到英文输入状态。主要还是看个人习惯吧，译者倒是已经<br />习惯不使用箭头键了，这样至少直接使用vi的时候不需要改变习惯）<br />而且，有一些键盘是没有方向键的，或者放在一些很特别的地方（译者注：译者<br />现在用的便携就是这样）。所以，知道hjkl的用法在这些情况下就很有帮助了。<br />记住这些命令的一个方法是：h在左边，l在右边，j指着下面。用图表示如下：<br />k<br />h l<br />j<br />学习这些命令的最后方法是使用它。用&ldquo;i&rdquo;命令输入更多的文字。然后用hjkl键移动<br />光标并在某些地方输入一些单词。别忘了用切换回普通模式。&#124;vimtutor&#124;也是一个<br />练习的好办法。<br />--------------------------------------------------------------------------------<br />*02.4* 删除字符<br />要删除一个字符，把光标移到它上面然后输入&ldquo;x&rdquo;。（这是对以前的打字机的一种回归，<br />那时你通过在字符上输入xxxx删除它） 例如，把光标移到行首，然后输入xxxxxxx（七个x）<br />可以删除&ldquo;A very&rdquo;。结果看起来这样：<br />+---------------------------------------+<br />&#124;intelligent turtle &#124;<br />&#124;Found programming UNIX a hurdle &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124; &#124;<br />+---------------------------------------+<br />现在你可以输入新的字符了，例如，通过输入：<br />iA young <br />这个命令启动一次插入操作（注意那个&ldquo;i&rdquo;），并插入&ldquo;A young&rdquo;，然后退出<br />插入模式（注意最后一个）。结果是：<br />+---------------------------------------+<br />&#124;A young intelligent turtle &#124;<br />&#124;Found programming UNIX a hurdle &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124; &#124;<br />+---------------------------------------+<br />删除一行<br />要删除一整行要使用&ldquo;dd&rdquo;命令，后一行会移上来填掉留下的空行：<br />+---------------------------------------+<br />&#124;Found programming UNIX a hurdle &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124;~ &#124;<br />&#124; &#124;<br />+---------------------------------------+<br />删除一个分行符<br />在Vim中你可以把两行连起来，这意味着两行间的换行符被删除了。&ldquo;J&rdquo;命令<br />用于完成这个功能。<br />以下面两行为例子：<br />A young intelligent<br />turtle<br />把光标移到第一行，然后按&ldquo;J&rdquo;：<br />A young intelligent turtle<br />--------------------------------------------------------------------------------<br />*02.5* 撤销与重做<br />假设现在你删得太多了，当然，你可以重新输入需要的内容，不过，你还有一个更简单的<br />选择。&ldquo;u&rdquo;命令撤销上一个编辑操作。看看下面这个操作：先用&ldquo;dd&rdquo;删除一行，再敲<br />&ldquo;u&rdquo;，该行又回来了。<br />再给一个例子：把光标移到第一行的A上：<br />A young intelligent turtle<br />现在输入xxxxxxx删除&ldquo;A young&rdquo;。结果如下：<br />intelligent turtle <br />输入&ldquo;u&rdquo;撤销最后一个删除操作。那个删除操作删除字符g，所以撤销命令恢复这个字符：<br />g intelligent turtle <br />下一个u命令恢复倒数第二个被删除的字符：<br />ng intelligent turtle <br />下一个u命令恢复u，如此类推：<br />ung intelligent turtle <br />oung intelligent turtle <br />young intelligent turtle <br />young intelligent turtle <br />A young intelligent turtle <br />注意：<br />如果你输入&ldquo;u&rdquo;两次，你的文本恢复原样，那应该是你的Vim被配置在Vi兼容<br />模式了。看这里修正这个问题：&#124;not-compatible&#124;。<br />本文假定你工作在&ldquo;Vim的方式&rdquo;。你可能更喜欢旧的Vi的模式，但是你必须<br />小心本文中的一些小区别。<br />重做<br />如果你撤销得太多，你可以输入CTRL-R（redo）回退前一个命令。换句话说，它撤销<br />一个撤销。要看执行的例子，输入CTRL-R两次。字符A和它后面的空格就出现了：<br />young intelligent turtle <br />有一个特殊版本的撤销命令：&ldquo;U&rdquo;（行撤销）。行撤销命令撤销所有在前一个编辑行<br />上的操作。 输入这些命令两次取消前一个&ldquo;U&rdquo;：<br />A very intelligent turtle <br />xxxx 删除very<br />A intelligent turtle <br />xxxxxx 删除turtle<br />A intelligent <br />用&ldquo;U&rdquo;恢复行<br />A very intelligent turtle <br />用&ldquo;u&rdquo;撤销&ldquo;U&rdquo;<br />A intelligent <br />&ldquo;U&rdquo;命令自己改变自己，&ldquo;u&rdquo;命令撤销操作，CTRL-R命令重做操作。这有点乱，但不用<br />担心，用&ldquo;u&rdquo;和CTRL-R命令你可以切换到任何状态。<br />--------------------------------------------------------------------------------<br />*02.6* 其他编辑命令<br />Vim有大量的命令可以修改文本。参见&#124;Q_in&#124;和下文。这里是一些经常用到的：<br />添加<br />&ldquo;i&rdquo;命令在光标所在字符前面插入字符。一般情况下，这就够用了，但如果你刚好想在<br />行尾加东西怎么办？要解决这个问题，你需要在文本后插入字符。这通过&ldquo;a&rdquo;<br />（append）命令解决。<br />例如，要改变如下行<br />and that's not saying much for the turtle. <br />为<br />and that's not saying much for the turtle!!! <br />把光标移到行尾的句号上。然后输入&ldquo;x&rdquo;删除它。现在光标处于一行的尾部了，现在输入<br />a!!!<br />添加三个感叹号到turtle的&ldquo;e&rdquo;后面了：<br />and that's not saying much for the turtle!!! <br />打开一个新行<br />&ldquo;o&rdquo;命令在光标下建立一个新的空行，并把Vim切换到插入模式。然后你可以为这个新行<br />输入文本了。<br />假定你的光标在下面两行中第一行的某个地方：<br />A very intelligent turtle <br />Found programming UNIX a hurdle <br />如果你现在用&ldquo;o&rdquo;命令并输入新的文字：<br />oThat liked using Vim<br />结果会是：<br />A very intelligent turtle <br />That liked using Vim <br />Found programming UNIX a hurdle <br />&ldquo;O&rdquo;命令（大写）在光标上面打开一个新行。<br />指定个数<br />假定你想向上移动9行，你可以输入&ldquo;kkkkkkkkk&rdquo;或者你可以输入&ldquo;9k&rdquo;。实际上，<br />你可以在很多命令前面加一个数字。例如在这章的前面，你通过输入&ldquo;a!!!&rdquo;<br />增加三个感叹号。另一个方法是使用命令&ldquo;3a!&rdquo;。个数3要求把后面的命令执行<br />三次。同样的，要删除三个字符，可以使用&ldquo;3x&rdquo;。个数总是放在要被处理多次的<br />命令的前面。<br />--------------------------------------------------------------------------------<br />*02.7* 退出<br />使用&ldquo;ZZ&rdquo;命令可以退出。这个命令保存文件并退出。<br />注意：<br />与其他编辑器不一样，Vim不会自动建立一个备份文件。如果你输入&ldquo;ZZ&rdquo;，<br />你的修改立即生效并且不能恢复。你可以配置Vim让它产生一个备份文件，<br />参见&#124;07.4&#124;。<br />放弃修改<br />有时你会做了一系列的修改才突然发现现在还不如编辑前，不用担心，Vim有&ldquo;放弃修改<br />并退出&rdquo;的命令，那就是：<br />:q!<br />别忘了按回车使你的命令生效。<br />如果你要了解细节，这就是：这个命令有三部分，包括冒号（:），它使Vim进入命令模式，<br />q命令，它告诉Vim退出，而感叹号是强制命令修饰符（override command modifier）。<br />这里，强制命令修饰符是必要的，它要求Vim强制性地放弃修改并退出。如果你只是<br />输入&ldquo;:q&rdquo;，Vim会显示一个错误信息并拒绝退出：<br />E37: No write since last change (use ! to override) <br />通过指定强制执行，你有效地告知Vim：&ldquo;我知道我所做的看起来很傻，但我长大了，知道<br />自己在做什么了。&rdquo;<br />如果你放弃修改后还想重新编辑，用&ldquo;:e!&rdquo;命令可以重新装载原来的文件。<br />--------------------------------------------------------------------------------<br />*02.8* 寻求帮助<br />所有你想知道的东西，都可以在Vim帮助文件中找到，随便找它问！<br />要获得一般的帮助用这个命令：<br />:help<br />你还可以用第一个功能键。如果你的键盘上有一个键，可能也能用。<br />如果你不指定主题，&ldquo;:help&rdquo;命令显示一个普通的帮助窗口。Vim的作者在帮助系<br />统方面使用了一个很聪明的方案（也许可以说是很变态的方案）：他们用一个普通的编<br />辑窗口来显示帮助。你可以在帮助窗口中使用任何普通的Vim命令移动光标。所以，h，<br />j，k和l还是表示左，下，上和右。<br />要退出帮助窗口，用退出一个普通窗口的命令：&ldquo;ZZ&rdquo;。这只会退出帮助窗<br />口，而不会退出Vim。<br />当你阅读帮助的时候，你会发现有一些文字被一对竖线括起来了(例如&#124;help&#124;）。这表示<br />一个超级链接。如果你把光标移到这两个竖线之间并按CTRL-]（标签跳转标签命令），<br />帮助系统会把你引向这个超级链接指向的主题。（由于不是本章的重点，这里不详细讨论，<br />Vim对超级链接的术语是&ldquo;标签&rdquo;（tag），所以CTRL-]实际是跳转到光标所在单词为名的<br />标签所在的位置。）<br />跳转几次以后，你可能想回到原来的地方。CTRL-T（标签退栈）把你送回前一个<br />跳转点。CTRL-O（跳转到前一个位置）也能完成相同的功能。<br />在帮助屏幕的顶上，有一个符号： *help* 。这个名字被帮助系统用来定义一个标签<br />（也就是超级链接的目标）。<br />参见&#124;29.1&#124;可以了解更多关于标签的内容。<br />要获得特定主题的帮助，使用如下命令：<br />:help &#123;主题&#125;<br />例如，要获得&ldquo;x&rdquo;命令的帮助，输入如下命令：<br />:help x<br />要知道如何删除文本，使用如下命令：<br />:help deleting （译者注：要直接用中文是不行了，除非我用中文来写这些标签&hellip;&hellip;）<br />要获得所有命令的帮助索引，使用如下命令：<br />help index<br />如果你需要获得一个包含控制字符的命令的帮助（例如CTRL-A），你可以在它前面<br />加上前缀&quot;CTRL-&quot;。<br />help CTRL-A<br />Vim有很多模式。在默认情况下，帮助系统显示普通模式的命令。例如，如下命令显示<br />普通模式的CTRL-H命令的帮助：<br />:help CTRL-H<br />要表示其他模式，可以使用模式前缀。如果你需要插入模式的命令帮助，使用&ldquo;i_&rdquo;前<br />缀。例如对于CTRL-H，你可以用如下命令：<br />:help i_CTRL-H<br />当你启动Vim，你可以带一些命令行参数。这些参数以短横线开头（-）。例如知道要-t<br />这个参数是干什么用的，可以使用这个命令：<br />:help -t<br />Vim有大量的选项让你定制这个编辑器。如果你要获得选项的帮助，你需要把它括在一个<br />单引号中。例如，要知道'number'这个选项干什么的，使用如下命令：<br />:help 'number'<br />如果你看到一个你不能理解的错误信息，例如：<br />E37: No write since last change (use ! to override) <br />你可以使用使用E开头的错误号找关于它的帮助：<br />:help E37<br />&nbsp;</p>
]]>
</description>
</item><item>
<link>http://liuxinxiu.com:80/s//#blogcomment</link>
<title><![CDATA[[评论] vim 撤销上一个编辑操作]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://liuxinxiu.com:80/s//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>