📄 usr_25.cnx
字号:
*usr_25.txt* For Vim version 6.3. 最近更新:2004年6月 Vim 用户手册 - by Bram Moolenaar (译者: snoopyxp http://vimcdoc.sf.net ) 编辑已编排过的文本很少有那种一行一个句子的文本。这一章我们将要介绍如何为了适合页面而为句子分行以及进行其它的编排操作。当然,针对编辑单行的段落和表格,Vim 也有一些有用的特性。|25.1| 折行|25.2| 对齐文本|25.3| 缩进和制表符|25.4| 对长行的处理|25.5| 编辑表格 下一章: |usr_26.txt| 重复 上一章: |usr_24.txt| 快速插入 目录: |usr_toc.txt|==============================================================================*25.1* 折行Vim 有一系列功能可以使处理文本变得更容易。在默任情况下,Vim 并不会自动换行,换句话说,你得自己敲 <Enter>。这在你编写程序并想自己决定哪里是行尾时会很有用。但当你想建立一个每行至多有 70 个字符宽的文档时,这就显得没那么好了。 如果你设置了 'textwidth' 选项,Vim 就会自动插入换行符。举个例子,假设您想要一个只有30个字符宽的非常窄的栏,你需要执行下面的命令: > :set textwidth=30现在开始输入正文(加入了标尺): 1 2 3 12345678901234567890123456789012345 I taught programming for a whi ~如果接下来你输入 "l",这将使此行的长度超出 30 个字符的限制。当 Vim 发现这种情况时,它会自动插入换行符。你将得到下面的结果: 1 2 3 12345678901234567890123456789012345 I taught programming for a ~ whil ~接着,你可以输入剩下的段落: 1 2 3 12345678901234567890123456789012345 I taught programming for a~ while. One time, I was stopped~ by the Fort Worth police,~ because my homework wos too~ hard. True story.~你不用输入换行符,Vim 会自动插入的。 Note: 'wrap' 选项会使 Vim 分行显示文本,但并不会在文件中插入换行符。重 排 文 本:Vim 编辑器并不是一个字处理器。字处理器在你删除了段落开头的一些东西时会重新考虑换行符。(译者注:这意味着后边的文本会向前补进,使换行位置保持不变)。 但在 Vim 里并不是这样。因此,当你从第一行删除单词 "programming" 时,你所得到的只是一个短行: 1 2 3 12345678901234567890123456789012345 I taught for a~ while. One time, I was stopped~ by the Fort Worth police,~ because my homework was too~ hard. True story.~这看起来不大美观。为了保持段落的形状,你要用到 "gq" 操作符。 下面我们首先结合一个可视选中区来使用它。 从第一行开始,键入: > v4jgq"v" 用来进入可视模式,"4j" 用来移动到段落结尾,接下来是 "gq" 操作符。下面是得到的结果: 1 2 3 12345678901234567890123456789012345 I taught for a while. One ~ time, I was stopped by the ~ Fort Worth police, because my ~ homework was too hard. True ~ story. ~Note: 有一种方法可以自动的格式化特定文本类型的布局,参见 |auto-format|。因为 "gq" 是一个操作符,所以你可以通过下面三种方法之一来选择要操作的文本范围:可视模式,一个移动操作,或是一个文本对象。 上面的例子也可以用 "gq4j" 来完成。这减少了击键次数,但你得知道行数。一个更有用的移动命令是 "}"。使用这个命令可以移动到一个段落的结尾处。因此,"gq}"将对从当前光标处至当前段段尾所包括的文本进行编排操作。 可以和 "gq" 一起使用的一个很有用的文本对象是段落。试一下这个: > gqap"ap" 意味着 "a-paragraph" (译者注:一个段落)。这将对一个段落(用空行隔开)的文本进行格式化操作。也包括在光标之前的部分。 如果你所有的段落都已经用空行分隔好了,你可以键入以下命令来对整个文件进行格式化操作: > gggqG"gg" 用来移动到第一行,"gqG" 用来对文本进行格式化操作直到最后一行。 警告: 如果你的段落没有被正确的分隔开,它们将被连接在一起。一个常见的错误是文件内包含一些只有空格或制表符的行。这些是空白行,但不是空行。 Vim 并不是只能对纯文本进行格式化操作。请参考 |fo-table| 一节获取更详细的信息。参考 'joinspaces' 选项以了解如何改变在结尾(译者注: 如在"." "?" 或 "!" 等后)加入的空格数。 也可以调用外部程序来做编排。这在 Vim 自带的格式化功能无法满足你的文本的需要时很有用。参阅 'formatprg' 选项。==============================================================================*25.2* 对齐文本要使一定范围包括的行居中,用以下命令: > :{range}center [width]{range} 即是那些通常命令所能指定的范围。 [width] 是一个可选项,用来确定要居中的行的宽度。如果没有指定 [width],则默认使用 'textwidth' 的值。(如果 'textwidth'是0,则默认为80。) 例如: > :1,5center 40将得到下面的结果: I taught for a while. One ~ time, I was stopped by the ~ Fort Worth police, because my ~ homework was too hard. True ~ story. ~右 对 齐类似地,":right" 命令将使文本右对齐: > :1,5right 37将得到这种结果: I taught for a while. One ~ time, I was stopped by the ~ Fort Worth police, because my ~ homework was too hard. True ~ story. ~左 对 齐我们使用这个命令: > :{range}left [margin]和 ":center" ":right" 不同的是, ":left" 的参数并不是行的宽度,而是左边的页边距。如果这个参数被省略了,文本将被紧靠在屏幕的左边缘 (用一个零页边距参数将得到一样的效果)。如果页边距是 5,文本将缩进五个空格。举个例子,使用以下命令: > :1left 5 :2,5left结果会是下面这样: I taught for a while. One ~ time, I was stopped by the ~ Fort Worth police, because my ~ homework was too hard. True ~ story. ~两 端 对 齐Vim 并没有提供内建的方法来使文本两端对齐。不过,我们可以通过使用一个灵巧的宏来做这项工作。要使用这个包,执行下列命令: > :runtime macros/justify.vim这个 Vim 脚本文件定义了一个新的可视命令"_j"。要使一块文本两端对齐,只需在可视模式中加亮该文本块,然后执行"_j"。 请查阅该文件以获得更详细的解释说明。在文件名$VIMRUNTIME/macros/justify.vim上键入命令 "gf", 就可以打开该文件。作为另一个选择,你还可以使用一个外部程序来对文本进行编排处理。例如: > :%!fmt==============================================================================*25.3* 缩进和制表符缩进可以被用来突显特定的文本。举个例子,在本手册的示例文本用八个空格或一个制表符来缩进。通常,你可以在每行的开头键入一个制表符来输入下面内容。用这个文本: the first line ~ the second line ~这些文本是这样输入的,先输入一个制表符,再输入一些文本,然后键入 <Enter>,接着又是一个制表符,然后输入另一些文本。 设置 'autoindent' 选项可以自动插入缩进: > :set autoindent当开始一个新行时,新行会采用和上一行相同的缩进。在上面的例子中,我们再也不需要在<Enter> 后面输入制表符了。增 加 缩 进要增加一行中的缩进量,可以使用 ">" 操作符。一个经常使用的操作是 ">>",这将为当前行增加缩进。 增加的缩进量是使用 'shiftwidth' 来指定的。默认的值是 8。举例来说,要使 ">>" 插入四个空格宽度的缩进,键入: > :set shiftwidth=4当你在示例文本中的第二行上使用时,你会得到下面的结果: the first line ~ the second line ~"4>>" 将为四行增加缩进。制 表 位如果你想使缩进量为 4 的倍数,你需把 'shiftwidth' 设置为4。但是当你敲下Tab 键时,你仍然会得到八个空格宽度的缩进。要改变这种情况,请设置 'softtabstop' 选项。 > :set softtabstop=4这将使 <Tab> 键插入四个空格宽度值的缩进量。如果已经存在四个空格,就加上一个<Tab> 字符(在文件中省去了七个字符)。(如果你只想要空格而不想加上 tab 字符,请设置 'expandtab' 选项。) Note: 也许你已经把 'tabstop' 选项设置为4。尽管如此,如果你在另一个时间再次编辑 这个文件时 'tabstop' 的默认值是8,文件缩进看起来会不对。在其它程序中或者在打 印的时候,缩进也将是错的。因此,建议把 'tabstop' 的值始终保持为8。在 任何地方该值都是标准值。改 变 制 表 符当你在 Vim 中编辑一个 tabstop 为3的文件时,文件会看起来很难看,因为在 Vim 中tabstop 的正常值为8。你可以通过把 'tabstop' 的值设置为3来更正它。但是你每一次你编辑这个文件都得做这个更改。 Vim 可以改变你的文件中的 tabstops 的用法。首先,设置 'tabstop' 的值使缩进看起来美观,然后使用 ":retab" 命令: > :set tabstop=3 :retab 8":retab" 命令将把 'tabstop' 的值改为8,同时仍保持文件看起来不变。它改变了制表符中空白的范围和所占的空间。现在你可以写入这个文件。 下次你再编辑它的时候缩进将是正确的,你不需要改变任何选项。 警告: 当你对一个程序文件使用 ":retab" 命令时,它可能会改变一个字符串常量中的空白。因此,要养成在程序中使用 "\t" 而不是输入一个制表符的好习惯。==============================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -