⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usr_25.cnx

📁 Vim 中文文档
💻 CNX
📖 第 1 页 / 共 2 页
字号:
*25.4*	对长行的处理有时你会编辑一个比窗口列数宽的文件。当发生这种情况时,Vim将把文件折行显示以便适应屏幕显示。    如果你将 'wrap' 选项设置为关闭,文件中的每一行都将在屏幕上仅作为一行显示。这时行尾会超出屏幕右端从而无法看到。    当你把光标移动到一个无法看到的字符时,Vim将滚动文本来显示它。这就好像在文本的水平方向移动视口一样。    默认情况下,Vim 并不在 GUI 中显示水平滚动条。如果你想启用它,使用下面的命令: >	:set guioptions+=b一个水平滚动条将出现在 Vim 窗口的底部。如果你没有滚动条或者你不想使用它,可以用下面这些命令来滚动文本。光标将停留在同样的地方,但在必要时会回移到可见文本区。	zh		向右滚动	4zh		向右滚动四个字符	zH		向右滚动半个窗口宽度	ze		向右滚动使光标处于行尾	zl		向左滚动	4zl		向左滚动四个字符	zL		向左滚动半个窗口宽度	zs		向左滚动使光标处于行首让我们试着用一行文本来演示一下。光标停留在 "which" 的 "w" 处。那行上方的 "当前窗口" 标示当前可见的文本。下方的 "窗口" 指示了执行了左边的命令后可见的文本区域。			      |<--    当前窗口    -->|		some long text, part of which is visible in the window~	ze	  |<--	    窗口      -->|	zH	   |<--      窗口      -->|	4zh		  |<--	    窗口      -->|	zh		     |<--      窗口	 -->|	zl		       |<--      窗口      -->|	4zl			  |<--	    窗口      -->|	zL				|<--	  窗口      -->|	zs			       |<--      窗口      -->|在 关 闭 折 行 情 况 下 移 动当 'wrap' 选项被关闭,文本将在水平方向卷动。你可以通过以下命令来使光标移动到你可以看到的一个字符处。这样超出窗口左右两端的文本将被忽略。这些命令将不会使文本卷动:	g0		移动到当前行的第一个可见字符	g^		移动到当前行的第一个非空白的可见字符	gm		移动到当前行的中点	g$		移动到当前行的最后一个可见字符		|<--	  窗口     -->|	some long    text, part of which is visible ~		 g0  g^    gm	     g$断 词						*edit-no-break*当你为另一个程序准备文本时,你或许需要使段落没有一处换行。使用 'nowrap' 选项的一个弊端是你看不见你正在处理的整个句子。当 'wrap' 选项开启时,会发生会断词,从而难以阅读。    编辑此类段落时,一个好的解决方法是设置 'linebreak' 选项。这样,Vim 将会在一个适当的地方折行显示,同时仍保持文件中的文本不变。    没有设置 'linebreak' 选项时的文本看起来可能是这样:  	+---------------------------------+	|letter generation program for a b|	|ank.  They wanted to send out a s|	|pecial, personalized letter to th|	|eir richest 1000 customers.  Unfo|	|rtunately for the programmer, he |	+---------------------------------+使用如下命令之后: >	:set linebreak看起来会是这样:	+---------------------------------+	|letter generation program for a  |	|bank.  They wanted to send out a |	|special, personalized letter to  |	|their richest 1000 customers.    |	|Unfortunately for the programmer,|	+---------------------------------+相关选项:'breakat' 指定了可以用来作为插入换行地点的字符。'showbreak' 指定了一个用于显示在折行显示行的行首的字符串。设置 'textwidth' 的值为零来避免一个段落被拆分。通 过 可 见 行 移 动使用 "j" 和 "k" 命令可以移动到下一行和上一行。当作用于一个长行时,这通常意味着要一次移动许多屏幕行。    使用 "gj" 和 "gk" 命令可以只移动一个屏幕行。当一个行没有折行时,它们和"j" 和 "k"命令所起的作用一样。当一个行折行时,它们将在屏幕上显示的上一行和下一行的一个字符之间移动。    下面这些移动命令的键映射也许对你有用: >	:map <Up> gk	:map <Down> gj变 段 为 行如果你想把文本导入类似 MS-Word 的程序中,每个段落就要变成一个单行。如果你的段落是由空行分隔开的,下面这个命令就可以要把一个段转化为一个单行: >	:g/./,/^$/join这看起来挺复杂。让我们把它分解开:	:g/./		一个 ":global" 命令,用来搜索至少含一个字符的所有行。	     ,/^$/	一个范围,从当前行开始(非空行)到一个空行。		  join	":join" 命令把范围内的行连接成一行。从下面这段含有八行,且在第三十列换行的文本开始:	+----------------------------------+	|A letter generation program	   |	|for a bank.  They wanted to	   |	|send out a special,		   |	|personalized letter.		   |	|				   |	|To their richest 1000		   |	|customers.  Unfortunately for	   |	|the programmer,		   |	+----------------------------------+你将得到下面两行:	+----------------------------------+	|A letter generation program for a |	|bank.	They wanted to send out a s|	|pecial, personalized letter.	   |	|To their richest 1000 customers.  |	|Unfortunately for the programmer, |	+----------------------------------+Note 当分隔段落的行是含有空格和/或制表符的空白行而不是空行时,这行命令将不起作用。下列的命令对于空白行仍起作用: >>	:g/\S/,/^\s*$/join要使最后一段也被连接,这行命令需要文件的结尾仍有一个空白行或空行。==============================================================================*25.5*	编辑表格设想你正在编辑一个含有四列的表格:	nice table	  test 1	test 2	    test 3 ~	input A		  0.534 ~	input B		  0.913 ~你需要在第三列输入数字。你可以先移动到第二行,键入 "A",键入一大堆空格然后输入你要输入的文本。    对于这种类型的编辑操作有一个特殊的选项: >	set virtualedit=all现在你可以把光标移动到没有任何文本的位置。这叫做 "虚空间"。通过这种方法,编辑表格变得容易很多。    通过查找最后一列的标题来移动光标: >	/test 3现在按下 "j",光标就到了你要输入对应 "input A" 的值的地方了。输入 "0.693",结果是: 	nice table	  test 1     test 2	 test 3 ~	input A		  0.534			 0.693 ~	input B		  0.913 ~Vim 已经自动为你填充了新文本前面的间隙。现在,要到此列的下一个域,键入 "Bj"。"B" 用来移动到间隔单词的空白的开始处。然后,用 "j" 移动到可以输入下一域的地方。	Note:	你可以把光标移动到窗口的任何地方,也可以超出行尾。但是,Vim 在你未在	该位置插入字符之前并不会插入空格。拷 贝 一 列你想增加一列,它是第三列的一个拷备并且想放在 "test 1" 列的前面。做以下七步:1.  移动光标到这一列的左上角,例如用 "/test 3"。2.  按 CTRL-V 来开启块可视模式。3.  用 "2j" 使光标向下移动两行。你现在进入了 "虚空间": "input B" 行中对应    对应列 "test 3" 的地方。4.  把光标向右移动来选择整列,外加那些你想要的列之间的空格。用 "9l" 就行。5.  用 "y" 来拷贝矩形选择区的内容。6.  把光标移动到我们需要插入新列的地方 "test 1"。7.  按下 "P"。结果应该是:	nice table	  test 3    test 1     test 2	   test 3 ~	input A		  0.693     0.534		   0.693 ~	input B			    0.913 ~需要注意的是整个 "test 1" 列被向右移动了,同时也包括 "test 3" 列中没有文本的行。要返回到光标的非虚拟移动模式用: >	:set virtualedit=虚 替 换 模 式使用 'virtualedit' 的弊端是你会 "感觉" 不太一样。当你移动光标的时候,你不能分辨超出行尾的制表符或空格。另一种可行的方法是: 虚替换模式。   设想在表格中有一个包含了制表符和其它字符的行。在第一个制表符上使用 "rx":	inp	0.693   0.534	0.693 ~	       |	   rx  |	       V	inpx0.693   0.534	0.693 ~版面被弄乱了。要避免这种情况,使用 "gr" 命令:	inp	0.693   0.534	0.693 ~	       |	  grx  |	       V	inpx	0.693   0.534	0.693 ~这里的情况是 "gr" 命令确保了新字符占据了正确的屏幕空间。额外需要的空格或制表符被插入到间隙中。然而,真正发生的是一个制表符被一个 "x" 代替, 然后空白字符被加上来使文本保持它的位置。在这个例子里是插入了一个制表符。   当你需要替换多于一个字符时,使用 "R" 命令来进入替换模式(参看 |04.9|)。这样一来,原来的版面乱套了,而且替换了不该换的字符。	inp	0	0.534	0.693 ~		|	 R0.786 |		V	inp	0.78634	0.693 ~"gR" 使用虚替换模式。这保全了版面布局:	inp	0	0.534	0.693 ~		|	gR0.786 |		V	inp	0.786	0.534	0.693 ~==============================================================================下一章: |usr_26.txt|  重复版权: 参看 |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -