工欲善其事必先利其器,很多时候在解决问题的时候我们都会找各种各样的工具来方便自己的工作,但是时间久了也许会养成一种只要有问题就去找一种强大工具的习惯,但很多时候我们目前已有的工具便可以解决问题。
之前使用notepad++都是编辑一些页面内容,仅仅停留在格式好看,方便编辑。今天查阅、学习了notepad++的列编辑功能,很方便、很强大,使自己放弃了去探索一款新的文本编辑工具的想法,进而去深入学习这款软件强大的功能,让器变的更“利”而不是更多!
什么是列编辑模式
普通编辑器,编辑文本的时候,选中一部分内容,都是在一行或多行的范围内操作,从左到右的,所以,可以看做是行模式。
与此相对应的,就是上下方向的列模式了。
阿斯蒂芬
进入列模式后,操作顺序和范围,是在所选范围内,从上到下的,比如全部插入某些字符等等,是在所选的列模式操作区域内,所涉及的每一行,都对应的插入这些字符。
当有些高级的操作,需要对不同的列,同时进行编辑的话,那么列编辑模式,就非常有用了。
Notepad++的列编辑模式的基本操作
在Notepad++中,按住Alt键之后,就处于列(编辑)模式了。
比如,按住Alt键,此处从上到下,选择多列:
![]() |
例 3.13. 列编辑:多行输入同样内容
然后多行同时输入同样的内容,效果如下:
![]() |
例 3.14. 列编辑:删除多行内容
然后也可以同时删除多行内容:
先按住Alt键,选后同时选取多列:
![]() |
然后松掉Alt键,点击右键选择删除,或者直接按键盘上面的Delete键,都可以实现删除所选的多行中对应部分的内容:
![]() |
例 3.15. 列编辑:多行中插入相同或不同的内容
进入列编辑模式后,除了可以手动输入内容外,也可以通过插入,实现输入多行内容:
按住Alt键进入列编辑模式后:
![]() |
然后松掉Alt键,点击 编辑(E) ⇒ 列编辑 Alt+C:
![]() |
然后在“插入文本”处,填写你所要插入的内容:
![]() |
此处填入想要插入的内容,即可同时插入多行内容:
![]() |
同样,可以看到,上面还有个“插入数字”的功能,可以插入自己所想要的某种序列的数字:
![]() |
然后就可以看到插入了想要的数字了:
![]() |
虽然上面只是一些基本操作,但是对于很多人,如果需要用到此功能,也会觉得很方便了。
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字符串内容的。
如此继续操作,就处理完毕所有的列了:
这也就是我们最开始所看的效果。
而如此的列操作,其实只是对于每一列,去复制粘贴一下,就可以实现,整个列的内容录入了。
通过此列操作实现的多列同时录入,不仅效率很高,而且还不容易出错。
总之,有效利用列编辑模式,可以大幅度的提高做事情的效率和准确度。