大家来学 VIM(一个历久弥新的编辑器)[一]
◎ 前言
监于仍有许多人还没找到顺手的编辑器,而许多想学 vi 的人又觉得无从下手,因此在
此提出一些个人的心得,希望能对这些朋友有点帮助。或许也减少一点 FAQ 吧!
真要深入的话,大多数的前辈都认为 vi 比 emacs(xemcas)还难学。但谁又真的需要熟悉
编辑器的所有功能呢?你大可以边用边学啊!需要用到的先学,其它的就放一边,只
要能善用一些常用到的功能,又何必要那么深入呢?而且您在使用当中经常会发现一
些新功能,这又会马上让您给赚到了。
文章是自由格式,会分成好几次来 post,不常写文章,各位就将就着看吧!没有网站
(要维护,太麻烦了!),只好放到newsgroup,这样看到的人可能会比较多,放在网
站的话也没人知道,打广告又伤感情。但如有人认为这系列文章还有点看头,您要拿
去放,悉听尊便,但不能是商业用途,而且也请告知一下,这样道德上比较完整。您
不告知我,也不会去告您啦!只是起毛子有点不好而已。:-)
听说许多 BBS 站很痛恨 hinet 的 news server,我也是!垃圾一大堆没人管,这样一来可
能有些站会挡 hinet 的信件,那只能算是无缘了!可避免被我污染。我目前是用 hinet 上
newsgroup,已经不是学生了,没有学校资源可用。:-(
◎ 为什么选 VIM?
最最重要的原因是可以正确处理中文!其它如 elvis,vile,nvi在中文方面都会有问题。另外
就是许多作业系统都有 VIM 可用。当然如果您不需要中文支援的话,也建议使用
elvis。vile则有 emacs 的味道,而 nvi 大概是最忠于原味的了!至于原始vi 的书已有中文
翻译(O’Reilly),各位到大一点的书局翻翻就有了。所以选定 VIM 做对象,兼述及
elvis,至少她不「排斥」中文。
※ VIM 代表 Vi IMproved。
※ elvis 可直接读 HTML(可用来上网,但只有文字),binary,manpage 及 TeX(LaTeX)(不是只显示程式
码喔!)档,和 XA+CV配合也可以用中文,但不能真正处理就是了!
※ VIM 也不是真的能完全支援中文啦!有些细部的功能还是没法度。大概 6.0 版的时候会更好!不
过平常一般的编辑动作是没问题。
另一个原因是,VIM 是慈善软体(CharityWare),如有赞助或评比得奖(前不久刚得
过),所得皆救助乌干达孤儿,有点年纪的大概还记得"We Are The World" 这首歌吧!
全球的艺人共同合唱的,就是救助这些孤儿(应该没记错吧!)。您要使用当然是免
费,您要捐款赞助当然是不勉强啦!但如果有评比有奖金可拿的,您去投她一票就是
功德无量了。
另外 vim 的规则表示式(regular express)颇完整,您也可借这个机会学 regexp,因为您在
sed,awk,perl,less,grep...中也是要用到,早点会 regexp 您生活在 Linux(Unix)的世界会更美
好。学了 regexp 您会很鄙视 windows 系统中的寻找功能的。
由于是慈善软体,广结善缘,因此连中文繁体都支援,不简单。但也因此最近的版本
有点肥,但又不会太肥(比 xemacs 好多了啦!)。这么可爱的软体,能不用她吗?
◎ 何处抓 VIM(elvis)?
javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">http://www.vim.org/
找个自己中意的 mirro 站抓。或许也顺便抓 Win32 的可执行档回来在 windows 系统中使
用。别忘了 runtime 档也要抓,否则会无法找到需要的档案来执行。
http://www.fh-wedel.de/elvis/index.html
ftp://ftp.pdx.edu/pub/elvis
也可试试 elvis(当然是免费的)。
CLE 的使用者也可以到:
ftp://linux.tmtc.edu.tw/pub/CLE/i386/RedHat/RPMS
抓最新版来安装,省时省力,而且还把必要的中文设定都弄好。目前最新的版本,
VIM 是 5.6,elvis 是 2.1-4。
◎ 编译安装
只讲重点,避免罗嗦!
VIM:
1. configure 时加上:
--enable-multibyte
--enable-xim 如果您使用 xcin2.3 的话,就不必了
--enable-fontset
--enable-gui=gtk
gtk+ 最好是 1.2.3 以上的版本,1.2.1 也是将就可以啦!大家都用 gtk+ 了,您不会想编
Athena 或 Motif(lesstif)吧!而且后两个版本的 GUI 就没有漂亮的icon 了(但有的人就是
讨厌这些无用的 icon)。
2. ~/.vimrc 加入:
set fileencoding=taiwan
set guifontset=英文字型,中文字型
设了 guifontset 就不能设 guifont 否则会优先使用
guifont,这样就找不到中文字型了!console 下或 xterm下的话,就看您用什么字型就显
示什么字型,和guifontset 无关。
※ 英文字型要用固定字,建议使用危卵的 Andale Mono 这个字型,包您满意,可去危卵抓,免费
的。我个人是使用180 的 Andale 字,配上 220 的中文字,绝配(1024x768)!哦!不要告诉我,您的 X
server 还不能支援 TTF。
3. 使用 xcin2.3 的话还是得配合 XA+CV 主要是输入的问题。使用 xcin2.5 的话就不必
XA+CV 了,但您得另外设 xim,请进入 VIM 后 :help xim。很抱歉您可能得自己试看看
了,我并没有亲自试过。
4. locale 要设成 zh_TW.Big5,意思就是您的系统的 i18n支援不能太差,我是使用
gvim-chinese shell script来呼叫 gvim。
#!/bin/sh
# gvim-chinese
# unset LD_PRELOAD 如果您使用 xcin2.5x 的话
export LC_ALL=zh_TW.Big5
gvim "$@"
elvis:
elvis 没什么好说的,反正是靠 XA+CV 来显示及输入中文。至于其他外观调整,就请
man elvis。
◎ 勤前教育
VIM 的模式可有六种,为免初学的人搞混,仍依一般的分类分成三种:
1. Normal mode(common mode,以下简称 c-mode):
您一进入 VIM 就是处于 c-mode,只能下按键指令,不能输入文字。这些指令可能是游
标移动的指令,也可能是编辑指令或寻找替换指令。
2. Insert mode(i-mode):
按 i 就会进入 i-mode,此时才可以键入文字,写您的文章,按 Esc 又会回到 c-mode。
3. Ed mode(common-line mode,e-mode):
按冒号:(别忘了 Shift 键)就会进入 e-mode,左下角会有一个冒号:出现可下 ed 指令。
也是按 Esc 回 c-mode。反正正常状态都是处于 c-mode,这样才不会把您辛苦打字的文
章给随便搞乱掉。
※ ed 是一个很古老的行编辑器,就好像 DOS 下的 edline 一样,vi,sed 这些编辑器都是从 ed 衍化而来
的。有兴趣可man ed 学看看有些时候会只有 ed 可以用(当机救助的时候)。
其它的模式就碰到时再说明了!
◎ 基本教练:step by step
1. 由命令列来开档:
vim test.txt 或 gvim test,txt 或 gvim-chinese test.txt.如果您的系统 vi 是 vim 的连结档话,就可
以直接用vi test.txt。以下就直接用 vim 代表 vi,gvim,elvis 因操作是一样的。
2. 先进入 vim 后再开档:
进入 vim 后,使用冒号命令 :e test.txt,就可以编辑test.txt 这个档。1. 及 2. 这两个开档
法,如果 test.txt不存在的话,就会开一个以 test.txt 为名的新档案。
※ 如果 gvim,可由 icon(gtk 版本才有)或功能表来叫出 file browser 来选看看您要编辑哪一个档,但如
果您是初学的话不建议您这么做,vi 就是以按键快速闻名,这是她的优点,您还是学起来吧,不然
没有 GUI 的时候会很不习惯的。
3. 进入 vim 后,按 i 进入 i-mode,就可以编写您的文件了。在vim 游标的移动可以由
方向键来移动。Backspace 键可消去前一个字元,中文的话是一个中文字。Del 键可删
除游标所在处的字元(中文字)。
※ 原始 vi 是不能在 i-mode 随意移动游标的,得进入 c-mode才能移动,因此就常常要按 Esc 来变换模
式。vim 及 elvis都打破了这个规矩。
4. 如果您写好您的文件,就可以按 Esc 回到 c-mode,然后 :w 就会存档(注意,是冒
号命令),但还不会离开 vim,要离开可按:q,就可以了!也可以合起来用,:wq,就样
就会存档后离开。怎么样,也不会很难吧!只不过操作方式和别的编辑器不一样罢
了,这样岂不是很有个性。:-)
※ 尽量记住按键的意义,才不必死背,如 e 是 edit(编辑), w是 write(写入),q 是 quit(停止、离开)。
好了,这是就编辑的整个过程。下回开始是详述各部份的功能,把vim 解剖开来讲,您
可以马上现学现卖。由于 vi(m) 的操作方式很有个性,因此,用了一次就会记住有这么
一个功能,想忘也忘不了,但有时按键难免会忘记,但有这一种功能大概是忘不了
的,查了几次指令就可以记得住了。下回待续。
==========
Edward Lee
edt1023@ms28.url.com.tw
[大家来学VIM(一个历久弥新的编辑器)[二]]
[上一页]
发信人: "Edward Lee" 〈edt1023@ms28.url.com.tw〉, 信区: LINUX
标 题: [心得整理]大家来学VIM(2)
发信站: DCI HiNet (Wed Mar 15 23:58:17 2000)
转信站: redbbs!wd.atc.ntut!freebsd.ntu!news.ntu!ctu-gate!news.nctu!newsfeed.ber
出 处: h136.s226.ts32.hinet.net
大家来学VIM(一个历久弥新的编辑器)[二]
游标的移动
本节所述皆是在 common-mode(c-mode,在 vim 又名 normal-mode)下的移动,原始的 vi
只能在 c-mode 移动,在 insert-mode 只做文字的输入,而不做游标的移动。当然 vim 及
elvis 的方向键是不论在那一种 mode 皆可移动自如。
◎ 基本的游标移动
h 左,或 Backspace 或方向键
j 下,或 Enter 或 +(要 Shift 键),或方向键
k 上,或 方向键或 -(不必 Shift 键)
l 右,或 Space 或方向键
※ 使用 hjkl 键的移动是为了使手不必离开打字区(键盘中央的部位),以加快打字的速度,如果各
位不习惯,那就使用方向键吧!
※ Backspace 及 Space 的移动方式是到了行首或行尾时会折行,但方向键或 hl 键的移动则在行首或
行尾时您继续按也不会折行。转折换行的功能是 vim 的扩充功能,elvis 无此功能。
※ jk 及使用方向键的上下移动游标会尽量保持在同一栏位。使用Enter,+,- 的上下移动,游标会移
至上(下)一行的第一个非空白字元处。
※ 好像有点复杂,各位就暂时使用方向键来移动就简单明白了!等您爱上了 vim 后再来讲究吧。
Ctrl-f 即 PageDown 翻页
Crtl-b 即 PageUp 翻页
◎ 进阶的游标移动
0 是数目字 0 而不是英文字母 o。或是 Hmoe 键,移至行首,(含空白字元)。
^ 移至第一个非空白字元,注意,要 Shift 键。
$ 移至行尾,或 End 键。要 Shift 键。
※ 以上两个按键是源自规则表示式(regular expression),在regexp 中 ^ 是匹配行首,$ 是匹配行
尾。
G 移至档尾(最后一行的第一个非空白字元处)
gg □至档首(第一行之第一个非空白字元处)
※ gg 是 vim 的扩充功能,在 elvis 或原始 vi 中可用 1G 来移至档首(是数字 1 不是英文字 l)。
※ G 之原意是 goto,指移至指定数目之行首,如不指定数目,则预设是最后一行。
w 移至次一个字(word)字首。当然是指英文单字。
W 同上,但会忽略一些标点符号。
e 移至前一个字字尾。
E 同上,但会忽略一些标点符号。
b 移至前一个字字首。
B 同上,但会忽略一些标点符。
H 移至萤幕顶第一个非空白字元。
M 移至萤幕中间第一个非空白字元。
L 移至萤幕底第一个非空白字元。
※ 这和 PageDown,PageUp 不一样,内文内容并未动,只是游标在动而已。n| 移至第 n 个字元(栏)
处。注意,要用 Shift 键。n 是从头起算的。
: n 移至第 n 行行首。或 nG。
◎ 特殊的移动
) 移至下一个句子(sentence)首。
( 移至上一个句子(sentence)首。
} 移至下一个段落(paragraph)首。
{ 移至上一个段落(paragraph)首。
※ sentence 是以 . ! ? 为区格。paragraph 是以空白行为区格。
% 这是匹配 {},[],() 用的,例如您的游标现在在 { 上只要按 %,就会跑到相匹配的 }
上。写程式时满好用的。
另还有一些 vim 的特殊按键,但这得留待最后才来讲述,否则
各位恐怕会头昏眼花了。下回待续。
1999.03.15
请勿移作商业用途!
=======
Edward Lee
edt1023@ms28.url.com.tw
[大家来学VIM(一个历久弥新的编辑器)[三]]
发信人: "Edward Lee" 〈edt1023@ms28.url.com.tw〉, 信区: LINUX
标 题: [心得整理]大家来学VIM(3)
发信站: DCI HiNet (Fri Mar 17 17:48:16 2000)
转信站: redbbs!wd.atc.ntut!freebsd.ntu!news.cs.nthu!newsfeed.nthu!ctu-gate!news
出 处: h242.s225.ts32.hinet.net
大家来学 VIM(一个历久弥新的编辑器)[三]
基本编辑指令
这个单元就开始进入主题了。下编辑指令都是在 commond-mode(c-mode),就是您一进
入 vim 时的模式,只能下指令,不能键入文字。如果印象模糊,请瞄一下第一个单元的
内容。这个单元说的是基本的指令,有些比较特殊的编辑指令,因为太有个性了,所
以会独立成一个单元来说明。
◎ 进入 i-mode 的指令
i 在游标所在字元前开始输入文字(insert)。
a 在游标所在字元后开始输入文字(append)。
o 在游标所在行下开一新行来输入文字(open)。
I 在行首开始输入文字。
※ 此之行首指第一个非空白字元处,要从真正的第一个字元处开始输人文字,可使用 0i 或 gI(vim)。
A 在行尾开始输入文字。
※ 这个好用,您不必管游标在此行的什么地方,只要按 A 就会在行尾等您输入文字。
O 在游标所在行上开一新行来输入文字。
J 将下一行整行接至本行(Joint)。
※ 并无相对的 split 功能,可在 i-mode 下按 Enter 来达成,当然如果您熟 macro 的话,可自行定义。
※ 使用 J 时,预设会消去本行的 EOL,且上下行接缝间会留下一个空白字元,这符合英文习惯,却
对中文会造成困扰,欲不留空白字元,可使用 gJ(大写 J) 指令,但这是 vim 的扩充功能,elvis 不
适用。
※ 请您随便找一个档案来试看看,光看文字说明太抽象了。
◎ 删除指令
x 删除游标所在处之字元。在 vim 及 elvis 亦可用 Del 键。
X 删除游标前之字元。不可使用 Spaceback 键。
※ vim 可以正确使用以上两个指令于中文,会删去一个中文字elvis 则不行,一个中文字要删两次,
即使用 xx。
dd 删除一整行(delete line)。
dw 删除一个字(delete word)。不能适用于中文。
dG 删至档尾。
d1G 删至档首。或 dgg(只能用于 vim)。
D 删至行尾,或 d$(含游标所在处字元)。
d0 删至行首,或 d^(不含游标所在处字元)。
※ 请回忆一下 $ 及 ^ 所代表的意义,您就可以理解 d$ 及 d^的动作,这就是 vi(m) 可爱之处。
◎ 取代及还原
r 取代游标所在处之字元。vi(m) 很有个性的,您在 c-mode 按了 r 她就会停在那里等主
人键入所要替代的字元,希望您这个当主人的,不要傻呼呼的也楞在那里,赶快键入
您的新字元吧!:-)
※ vim 中可用于中文字,也就是可以替换一个中文字,elvis 则不行。当然您的 vim 是要设在 taiwan
的才行。怎么样!有没有看过如此有个性的取代方式?ㄚ!r 就是 replace 啦!
R 取代字元至按 Esc 为止。
cc 取代整行内容。或大写 S 亦可。
cw 替换一个英文字(word),中文不适用。(change)
~ 游标所在处之大小写互换。当然不能用于中文。别忘了 Shift!
C 取代至行尾,即游标所在处以后的字都会被替换。或 c$。
c0 取代至行首,或 c^。
s 替换一个字元为您所输入的字串。和 R 不同,R 是覆盖式的取代,s 则是插入式的取
代,您可亲自实验看看。ㄟ!是小写的s。
u 这个太重要了,就是 undo,传统的 vi 仅支援一次 undo,vim及 elvis 就不只了,vim 是
没有限制的。
U 在游标没离开本行之前,回复所有编辑动作。
Crtl+r 这个也是很重要,就是 redo 键。
◎ 加上数目字
喔!骚到 vi(m) 的痒处了,这是 vi(m) 一个非常骚包的功能,只此一家别无分号。就是
您可以在大部份的指令前加上数目字,代表要处理几次的意思。以下用实例来说明比
较清楚。
5dd 删除游标所在处(含)起算以下五行内容。妙吧!
3r 按了 3r 后,您键入一个英文字,则三个字元皆会被您所键入的英文取代。很抱歉,
这不能用于中文。
5J 将五行合并成一行。
3x 删除三个字元。抱歉,不能用于中文。
5i A 然后按 Ecs,插入五个 A。中文也可以!
2i system Esc 插入 systemsystem。中文也可以!
5G 游标移至第五行,是从档首开始起算。
5l 移至右第五个字元处,当然 j 是可以用方向键取代的。
所有移动指令(参考第二单元)都可以加上数目字来控制,中文也通喔!elvis 当然是
不能用于中文。
其它的指令和数目字结合,就留待各位去发掘吧!最重要的是请您亲自操作看看,使
用 vi(m) 常常要动动脑筋,会有更妙的操作方式。
◎ 简单重排功能
〉〉 整行向右移一个 shiftwidth(预设是 8 个字元,可重设)。
〈〈 整行向左移一个 shiftwidth(预设是 8 个字元,可重设)。
※ :set shiftwidth? 可得知目前的设定值。
: set shiftwidth=4 可马上重设为 4 个字元。
shiftwidth 可简写成 sw。ㄟ,别忘了 Shift 键!
: ce(nter) 本行文字置中。注意是冒号命令!
: ri(ght) 本行文字靠右。
: le(ft) 本行文字靠左。
※ 所谓置中、靠左右,是参考 textwidth(tw) 的设定。如果tw 没有设定,预设是 80,就是以 80 个字元
为总宽度为标准来置放。当然您可以如 sw 一样马上重设。
gqip 整段重排。中文会出槌!:-(
gqq 本行重排。
※ 重排的依据也是 textwidth。这里的重排是指您键入文字时没有按 Enter 键,就一直在 keyin,这样
会形成一个很长的一行(虽然萤幕上会替您做假性折行),重排后,则会在每一行最后加入 EOL。
在以后的单元里还会详谈,各位就先记起来吧!gq 重排功能是 vim 才有的功能。
下回预告:复制(yank)
如有错误请不吝指正,谢谢!
2000.03.17
=======
Edward Lee
edt1023@ms28.url.com.tw
[大家来学 VIM(一个历久弥新的编辑器)[四]]
发信人: "Edward Lee" 〈edt1023@ms28.url.com.tw〉, 信区: LINUX
标 题: 大家来学VIM(4)
发信站: DCI HiNet (Mon Mar 20 16:37:59 2000)
转信站: redbbs!wd.atc.ntut!freebsd.ntu!News.Math.NCTU!newsfeed.stanford.edu!new
出 处: h25.s226.ts32.hinet.net
大家来学 VIM(一个历久弥新的编辑器)[四]
复制(yank)
yank 是什么意思?有疑问的请查一下字典吧!就好像是中医治疗中的「拔罐」的意思
啦(是不是叫「拔罐」?知道的朋友指正一下吧)!反正在 vi(m) 中,她就是复制 copy
的意思。这在 vi(m)的思考逻辑里,就是「拔」yank 起来,「放」put 上去。其实复制的
指令就是 y 一个而已,为什么要独立成一个单元来说明呢?因为 vi(m) 复制、贴上的功
能实在太独特了,再配合第三单元介绍的数目字,及 vi(m) 内部的缓冲区来使用的话,
您会发现,原来 vi(m) 肚子里还暗藏着秘密武器。
◎ 指令说明
yy 复制游标所在行整行。或大写一个 Y。
2yy 或 y2y 复制两行。ㄟ,请举一反三好不好!:-)
y^ 复制至行首,或 y0。不含游标所在处字元。
y$ 复制至行尾。含游标所在处字元。
yw 复制一个 word。
y2w 复制两个字。
yG 复制至档尾。
y1G 复制至档首。
p 小写 p 代表贴至游标后(下)。
P 大写 P 代表贴至游标前(上)。
※ 整行的复制,按 p 或 P 时是插入式的贴在下(上)一行。非整行的复制则是贴在游标所在处之后
(前)。
"ayy 将本行文字复制到 a 缓冲区
※ a 可为 26 个英文字母中的一个,如果是小写的话,原先的内容会被清掉,如果是大写的话是
append 的作用,会把内容附加到原先内容之后。
※ " 是 Enter 键隔壁的那一个同上符号(ditto marks)。
"ap 将 a 缓冲区的内容贴上。
※ 缓冲区的术语在 vim 称为 registers,vim 扩充了相当多的功能,有兴趣深入的朋友请 :h registers。
您用 d、c、s、x、y 等指令改变或删除的内容都是放在 registers 中的。
例如:您用 dd 删除的一行,也是可以使用 p 来贴上的。只要是在缓冲区的内容都可以使用 p 来贴
上,不是一定要 y 起来的内容才能用 p。因此您认为 p 是 paste 也可以,认为是put 可能较正确。
5"ayy 复制五行内容至 a 缓冲区。
5"Ayy 再复制五行附在 a 内容之后,现在 a 中有十行内容了!
※ ㄟ!不要我一直用 a 您就认为只有 a 可以用喔。26 个英文字母都可以的,交叉运用下,您会发觉
vi(m) 肚量不小。
※ 问题来了!忘记谁是谁的时候怎么办? :reg(冒号命令)就会列出所有 registers 的代号及内容。
您现在就试着按看看.咦!怎么还有数目字、特殊符号的缓冲区,原来您刚刚删除的就预设放在 " 这
个缓冲区,然后依序是 0,1,2,...9。也就是说您按 p 不加什么的话,是取出 " 缓冲区的内容的。% 指的
是目前编辑的档案,# 指的是前一次编辑的档案。还有其它的呀!因为没什么重要,就请 :h registers
吧!registers 有个 "s" 结尾,不要搞错了,而且 Tab 的补全键 vim 也支援的,也就是说您键入 :h regi
再按 Tab 键,vim 就会帮您补全,按了 Tab 后发现不是您要的,那就继续按,总会出现您要的。:-)
※ Tab 补全的功能,elvis 也有,但叫出 registers 列表的命令则没有,您得自行记忆在您的脑袋瓜子
里。而且 elvis 的补全能力并没 vim 强。
◎ 天大的指令
. 这是什么?ㄚ,是英文句点啦!没错,就是英文句点。什么意思?重复前次的编辑动
作。这个指令太高明了,只要是编辑动作(移动游标不算,冒号命令也不算)都可以
按英文句点来重复,要重复几次都可以。
例如:您按了 yy,然后按 p 就会复制一整行,如果要重复这个动作的话,就可以按 .
,也可以把游标移到其它地方后再按。其它dd,dw,r,cw 等编辑指令都可以这样来
重复。如果您要重复做某些编辑动作时,千万千万一定要想到有这么一个英文句点重
复指令。ㄚ,拜托啦!您一定要记得常用这个指令。
◎ 疑难杂症
1. 那 mouse 中键的剪贴功能还有吗?
当然还有,不管在 console 或 X terminal 中都照用不误。当然在 windows 下的话就不能用
了,复制用 Ctrl-c,贴上用 Shift-Insert 来代替。Ctrl-v 在 vim 中另有作用,在 windows下
就不必去麻烦它了。
2. ㄟ,我从 netscape 用 mouse copy 东东过来的时候,常常都搞得天下大乱耶!
要设成 :set paste,预设是 map 至 F9 键的,您要 copy 之前先按一下 F9,copy 完后再按
一次 F9 来回复。这是 vim 的扩充功能,elvis 没有。那在 elvis 怎么办?只好 :set noai了。
在 GUI 的版本应不会有这种情形。
※ set 的功能先不必去理它,往后会有一个单元专门讨论。
朋友!您睡着了吗?不要被吓到了,您只要开个档案,亲自操作一下就能心领神会。
那用 mouse 不是更方便吗?不见得,yyp 来复制贴上一整行比较快,还是用 mouse 来拉
比较快?您可以试看看。