3.6. Notepad++的列编辑功能

3.6.1. 什么是列编辑模式

普通编辑器,编辑文本的时候,选中一部分内容,都是在一行或多行的范围内操作,从左到右的,所以,可以看做是行模式。

与此相对应的,就是上下方向的列模式了。

进入列模式后,操作顺序和范围,是在所选范围内,从上到下的,比如全部插入某些字符等等,是在所选的列模式操作区域内,所涉及的每一行,都对应的插入这些字符。

当有些高级的操作,需要对不同的列,同时进行编辑的话,那么列编辑模式,就非常有用了。

3.6.2. Notepad++的列编辑模式的基本操作

在Notepad++中,按住Alt键之后,就处于列(编辑)模式了。

比如,按住Alt键,此处从上到下,选择多列:

例 3.13. 列编辑:多行输入同样内容

然后多行同时输入同样的内容,效果如下:


例 3.14. 列编辑:删除多行内容

然后也可以同时删除多行内容:

先按住Alt键,选后同时选取多列:

然后松掉Alt键,点击右键选择删除,或者直接按键盘上面的Delete键,都可以实现删除所选的多行中对应部分的内容:


例 3.15. 列编辑:多行中插入相同或不同的内容

进入列编辑模式后,除了可以手动输入内容外,也可以通过插入,实现输入多行内容:

按住Alt键进入列编辑模式后:

然后松掉Alt键,点击 编辑(E) ⇒ 列编辑 Alt+C:

然后在“插入文本”处,填写你所要插入的内容:

此处填入想要插入的内容,即可同时插入多行内容:

同样,可以看到,上面还有个“插入数字”的功能,可以插入自己所想要的某种序列的数字:

然后就可以看到插入了想要的数字了:


虽然上面只是一些基本操作,但是对于很多人,如果需要用到此功能,也会觉得很方便了。

3.6.3. Notepad++的列编辑模式的高级用法

其实,列编辑的功能的好处,在于相对更加复杂一点的用法。

下面就介绍一下,我之前所遇到的情况,以及如何利用列编辑模式,来提高工作效率的:

例 3.16. 列编辑:同时复制和粘贴多列

比如,我之前,需要得到这样的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列,是可以正确的选择了两个"<entry>"中间的,但是0a到1f的列,却都选择了y和>之间了,位置错了。

如此,想要接着实现列拷贝粘贴的话,一般人所能想到的,那就只是,先拷贝粘贴0到9列的,然后再拷贝粘贴0a到1f列的。

如果这么做的话,其对于此处只是被分为2个不同的列的位置去操作,也还算能接受。

但是如果被粘贴的内容,像后面的同一列中,既有1个字符宽度的,又有2个和3个字符宽度的,甚至其他更多字符的,那么一个完全的列,就被分为多个不连续的,可供列编辑操作的列了。

那结果就又几乎回到了之前的手工慢慢的复制粘贴的效果了。

所以,还是要找到更好的解决办法,尽量实现尽可能多的列,都实现一次性的列操作,这样才能真正提高效率。

后来,偶发现了一个办法,那就是,可以先操作左右边的列,然后依次向左处理每一列,这样就可以避免此问题。

之所以想到如此去做,是因为,右边的列,即使每一列的内容宽度不同,但是不会影响到左边的列的对齐,所以,就可以规避此问题了。

其具体做法很简单,只是换个顺序处理而已:

在word中,先复制最后一列的内容:

同样的,粘贴到新建的Notepad++的页面中,并以列模式去选取该内容:

然后用快捷键Ctrl+C去复制此内容,再回到要粘贴的地方,先以列模式选择所要插入的位置:

然后Ctrl+V去粘贴此内容:

如此,就不会影响左边的列了。

然后依次方法,依次处理每一列。

不过,当你处理到40那列的时候,你会发现,有些内容,却折回到开始显示了,即内容显示出来,是换行的了:

但是看起来也是不影响继续使用列模式的,但是当想要继续选择多列时,选中的效果却变成了隔行的效果:

此处,看起来是隔行的列选择,实际仍是每个行的列选择,即,其实是不影响继续列操作的。

和上述的隔行选择的效果类似的,是处理到最后一列的时候:

实际上,看起来“穿”过了字符串"entry",而实际上,是不影响的entry字符串内容的。

如此继续操作,就处理完毕所有的列了:

这也就是我们最开始所看的效果。

而如此的列操作,其实只是对于每一列,去复制粘贴一下,就可以实现,整个列的内容录入了。

通过此列操作实现的多列同时录入,不仅效率很高,而且还不容易出错。


总之,有效利用列编辑模式,可以大幅度的提高做事情的效率和准确度。