首先,我要问问:为什么要用vi?这个昨日黄花,一点都不好用,却被有些人吹为学Linux必学工具;我真不能理解。其实,现在在命令行或者X Window下有很多很好的编辑工具。为什么放着好好的工具不用,却要ask for trouble? 好了,牢骚发完,如果你真的那么对vi情有独钟,这里是你的问题的我的答案:
$ }7 {0 R$ ^/ A' w, l- _要复制数据,先把光标移动到所要复制数据的第一行,然后用以下命令:- l% T2 _9 B7 V
yy表示复制当前行8 Q8 Y/ R* ^) G; c- A, Q* p
nyy表示复制从当前行开始的n行
% C; t' ]! H; a, T内容将被复制到一个特定的内存缓冲区。(从文中删除的内容其实也被复制到缓冲区,从而可以实现剪切功能。)该缓冲区,并不是“剪贴板”,因为它是不能为vi以外的程序使用的。
) Z' H% J. ]1 i! H- X要把缓冲区的内容粘贴到指定位置,用下面的命令:6 p m& h9 ]( i- ?2 l2 E
p (小写p,将缓冲区的内容粘贴到光标后面)
: r, E1 B1 B4 X5 t. F6 r5 s2 DP (大写P,将缓冲区的内容粘贴到光标前面)
9 _' K9 e) D' E9 r3 h; i9 W5 s最后还是建议你使用X Window下的编辑工具,例如KWrite,使用方法简单而有方便;就是要使用vi,如果你是想用来编辑程序源代码,那么请用vim,它能高亮显示保留词和命令。& ^7 f, k. u6 a, O
2 _8 G: E/ U# P- s第二个问题。gcc是用来编译程序,而不是用来调试程序的。调试程序要用特定的工具。例如gdb(又是一个被吹捧,却难用的东西),KDbg等。其中,KDbg是GUI的,使用方法一目了然,这里不说了。还是把废话留给gdb吧。7 d/ W7 Y% P# y% {
gdb用法很多,这里只介绍最常用的。
g, o! Y& |+ O9 @% O" {1 ] N: \' u8 l0 A
启动:- a) ?4 X) J: Z k" `
gdb program 把可执行文件program调人,以调试
4 `/ x/ X8 E1 V- s4 Pgdb program core 调试中,分析core文件 X$ q( W# U1 U* `; b" F
gdb 直接进入9 ~. p3 K( \! t: ^% i. Z
* b. ]; u% @4 D) |7 L; j* I2 S3 N
在线帮助:" i6 G" S1 K; b: v+ [
进入后,用help命令
1 S+ R, ~. ]6 t8 ~
7 {* g) C% b0 l开始调试:0 c9 ^ a6 V. y1 {
run/ V$ ?0 d; F3 E+ U4 g
# Z, [* G6 ]4 M3 w/ T3 [; q
设断点:9 i/ U5 T- h8 Y4 n5 ]8 a
break n 在当前文件的第n行设置断点3 q$ d4 o/ J" x/ {
break function 在当前文件的function函数入口处设置断点
2 f& z+ g- M) J/ c+ |break file:n 在file文件中的第n行设置断点
3 n$ y- o& W* n0 V% k' u3 nbreak file:fun 在file文件中的fun函数入口处设置断点
1 h! I" H3 U4 n0 ` s4 j
" o5 j& b9 t7 j8 E单步调试:
1 s) o9 _: Z4 g0 Xstep 单步执行,遇函数进入
* @" h, p! @9 y3 t4 `) o! Ystep n 同上,执行n步0 v9 U, g% {7 k) a; \$ E0 g
next 单步,但遇函数不进入
7 a: E# s4 S9 lcontinue 继续执行,知道结束或断点
8 I0 H% v3 s" A1 B1 m0 L" c
' C2 C$ F) M: ]' i+ B- K i5 F最后,给个建议,能用方便的工具,就方便的,没必要自找麻烦!!