原文网址:http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/npp_function_column_mode.html
3.6. Notepad++的列编辑功能
下面来解释Notepad++中的强大且好用的列编辑功能。
3.6.1. 什么是列编辑模式
普通编辑器,编辑文本的时候,选中一部分内容,都是在一行或多行的范围内操作,从左到右的,所以,可以看做是行模式。
与此相对应的,就是上下方向的列模式了。
进入列模式后,操作顺序和范围,是在所选范围内,从上到下的,比如全部插入某些字符等等,是在所选的列模式操作区域内,所涉及的每一行,都对应的插入这些字符。
当有些高级的操作,需要对不同的列,同时进行编辑的话,那么列编辑模式,就非常有用了。
3.6.2. Notepad++的列编辑模式的基本操作
在Notepad++中,按住Alt键之后,就处于列(编辑)模式了。
比如,按住Alt键,此处从上到下,选择多列:
例 3.21. 列编辑:删除多行内容
例 3.22. 列编辑:多行中插入相同或不同的内容
虽然上面只是一些基本操作,但是对于很多人,如果需要用到此功能,也会觉得很方便了。
3.6.3. Notepad++的列编辑模式的高级用法
其实,列编辑的功能的好处,在于相对更加复杂一点的用法。
下面就介绍一下,我之前所遇到的情况,以及如何利用列编辑模式,来提高工作效率的:
例 3.23. 列编辑:同时复制和粘贴多列
比如,我之前,需要得到这样的xml内容:
即,需要在多个entry中,一点点输入对应的数字和字母。
而数据来源,是来自另外已有的word文档中的表格:
对此,一般传统的办法,那无外乎,一个个数字,和字母的从word中拷贝,然后粘贴到xml文件中对应的两个entry的位置中去。
此种方法,效率及其低下不说,还很容易出错,所以肯定不是好办法。
但是如果不会用列编辑的话,那么好像也只能用此很笨的办法,慢慢的去拷贝粘贴了。
下面就来看看,如果使用Notepad++的列编辑,是如何提高效率和准确度的:
首先当前是在目标xml文件中,已经有了对应的entry了:
然后,是想要通过列编辑的复制与粘贴,实现将word中对应表格中的内容,一列列粘贴过来的。
但是,之前由于对于列模式编辑不是很熟悉,导致直接从word中选中一列:
然后在Notepad++中先进入列编辑模式:
再直接去用Ctrl+V去粘贴,结果却只是粘贴到第一个entry中,而不是整个列分别粘贴到对应的位置:
后来才知道,原来应该这么做:
同样先是去word中拷贝对应的列的内容:
然后在Notepad++中,新建一个页面,将拷贝的内容,粘贴到新建页面中:
然后再用列模式去选取此部分内容:
然后Ctrl+C复制所选内容,再回到要粘贴的地方,同样先是进入列模式:
然后再按Ctrl+V,这样才可以正确的将通过列模式选取的内容通过(Ctrl+V)粘贴到列模式所选取的范围内,即所选取的每一行的内容,粘贴到目标的每一行的位置:
列模式粘贴的时候,会自动帮你去掉所选内容中的空白处,即可以调整被粘贴后的内容的宽度 | |
---|---|
此处,可以注意到,原先列模式去选取内容的时候,0到9的那些行,(至少显示出来的效果中)是包含了多余的空格的: 以及0a到1f的行,是正常选取的全部内容,不包含空白的。 而粘贴出来的效果,可以看到,对应的0到9的行,是没有多余的空格,是一个字符的宽度的,没有被变成2个字符的宽度: 即,列编辑的时候,所选择的内容中,显示出来的效果中,好像是包含了空格,实际没有,所以在粘贴出来后,不会多余出于的空格的。 话句话说,列编辑模式下,选取内容,和粘贴内容,会自动帮你计算好对应的内容的,不会(像我以为的)多余的插入(那些在选取时显示出来的多余的)空格的 所以,这方面,个人觉得,其做得还是很人性化,或者说很符合用户需求的。 |
按照上述方法,你可以去接着一列列的,去粘贴word中别的列的内容。
但是,如果你接着这么做的话,你却发现,有些问题了。
因为经过上面第一列的粘贴,上面的0到9的那些行是一个字符宽度,而0a到1f却是2个字符宽度,这导致接下来的想要选取第二列的所有的entry,以进入列编辑模式的话,就无法正确全部选择对应的位置了:
即,0到9列,是可以正确的选择了两个"
如此,想要接着实现列拷贝粘贴的话,一般人所能想到的,那就只是,先拷贝粘贴0到9列的,然后再拷贝粘贴0a到1f列的。
如果这么做的话,其对于此处只是被分为2个不同的列的位置去操作,也还算能接受。
但是如果被粘贴的内容,像后面的同一列中,既有1个字符宽度的,又有2个和3个字符宽度的,甚至其他更多字符的,那么一个完全的列,就被分为多个不连续的,可供列编辑操作的列了。
那结果就又几乎回到了之前的手工慢慢的复制粘贴的效果了。
所以,还是要找到更好的解决办法,尽量实现尽可能多的列,都实现一次性的列操作,这样才能真正提高效率。
后来,偶发现了一个办法,那就是,可以先操作左右边的列,然后依次向左处理每一列,这样就可以避免此问题。
之所以想到如此去做,是因为,右边的列,即使每一列的内容宽度不同,但是不会影响到左边的列的对齐,所以,就可以规避此问题了。
其具体做法很简单,只是换个顺序处理而已:
在word中,先复制最后一列的内容:
同样的,粘贴到新建的Notepad++的页面中,并以列模式去选取该内容:
然后用快捷键Ctrl+C去复制此内容,再回到要粘贴的地方,先以列模式选择所要插入的位置:
然后Ctrl+V去粘贴此内容:
如此,就不会影响左边的列了。
然后依次方法,依次处理每一列。
不过,当你处理到40那列的时候,你会发现,有些内容,却折回到开始显示了,即内容显示出来,是换行的了:
但是看起来也是不影响继续使用列模式的,但是当想要继续选择多列时,选中的效果却变成了隔行的效果:
此处,看起来是隔行的列选择,实际仍是每个行的列选择,即,其实是不影响继续列操作的。
和上述的隔行选择的效果类似的,是处理到最后一列的时候:
实际上,看起来“穿”过了字符串"entry",而实际上,是不影响的entry字符串内容的。
如此继续操作,就处理完毕所有的列了:
这也就是我们最开始所看的效果。
而如此的列操作,其实只是对于每一列,去复制粘贴一下,就可以实现,整个列的内容录入了。
通过此列操作实现的多列同时录入,不仅效率很高,而且还不容易出错。
总之,有效利用列编辑模式,可以大幅度的提高做事情的效率和准确度。