vi是最强大的文本编辑器,没有之一。尽管 vi已经是古董级的软件,但还是有无数新人迎着困难去学习使用,可见其经典与受欢迎程度。
无论是小说中还是电视剧,真正强大的武器都不容易驾驭,需要付出一些努力才能收获到更加强大的力量,对于vi这种上古神器来说更是如此。由于它全程使用键盘操作,很多首次接触 vi的人会觉得不习惯而中途放弃。然而,坚持下来的朋友就会渐渐地发现这种键盘操作的设计绝妙之处!经典之所以能成为经典,必然有它的道理,不用解释太多。
观察一个程序员对vi的熟练程度,可以判断它的技术水平,如果他对vi不熟悉,就肯定不是Linux平台下的程序员,说vi不好用的人也肯定不熟悉vi,没有例外。
vi 有两种模式,命令行模式和编辑模式,在命令行模式下,任何键盘输入都是命令,在编辑模式下,键盘输入的才是字符。
打开一个文件: vi 文件名,如果文件不存在,就新建文件。
Esc 从编辑模式切换到命令行模式
i 从光标所在字符前插入
a 从光标所在的字符后面插入
o 从光标所在行的下面插入空白行
O 从光标所在行的上面插入空白行
I 从光标所在行的行首插入
A 从光标所在行的行末插入
k 类似方向键上
j 类似方向键下
h 类似方向键左
l 类是方向键右
Ctrl+u 向上移动半页
Ctrl+d 向下移动半页
gg 光标跳到文本的第一行
G 光标跳到文本最后一行
0 光标跳到所在行的行首
$ 光标跳动到所在行的行尾
w 光标跳到下个单词的开头
b 光标回到上个单词的开头
e 光标回到本单词的尾部
x 每按一次,删除光标所在位置的一个字符
nx 如"3x"表示删除光标所在位置开始的3个字符
dw 删除当前光标所在的单词
dd 删除光标所在行
ndd 如"3dd"表示删除光标所在行开始的3行字符
yy 将光标所在行复制到缓冲区
nyy 将光标所在n行复制到缓冲区
p 将缓冲区里的内容写到光标所在位置
r 替换光标所在处的字符 replace
R 替换光标所在处的字符,直到按下"Esc"为止
cw 开始替换当前光标所在的单词,直到按下"Esc"为止
u 撤销命令,可多次撤销
J 把当前行的下一行接到当前行的尾部
Ctrl+g 列出文件一共有多少行
nG 表示移动光标到文件的第n行行首
/abcd 在当前打开的文件中查找“abcd”文本内容
n 查找下一个
N 查找上一下
. 重复执行上一次执行的vi命令。
~ 对光标当前所在的位置的字符进行大小写转换。
:5回车 光标跳到第5行。
:n回车 光标跳到第n行。
:w回车 存盘
:w!回车 强制存盘
:wq回车 存盘退出
:x回车 存盘退出
:q回车 不存盘退出
:q!回车 不存盘强制退出
:g/aaaaaaaaa/s//bbbbbb/g回车 把文件中全部的aaaaaaaaa替换成bbbbbb
Ctl+insert 复制鼠标选中的文本,相当于Ctl+c
Shift+insert 输出鼠标选中的文本,相当于Ctl+v
以上两个命令在windows和UNIX中是通用的
gcc工具其实和window界面下的编译工具差不多,只是这里用到的是命令行。在vi编辑器中打好程序后,保存为.c文件,然后用 gcc -o filename filename.c 命令执行,如果程序没有错误 ls 在该目录下可以看到filename一个可执行的文件,如果想看到hello world 执行这个可执行文件就ok了,用./命令执行。
注,如果,想用gdb调试工具的话,命令需要修改, gcc -g -o filename filename.c就可以用了,其中还有部分gcc命令没有给出,清参考
-c 只是编译不连接,生成目标文件.o
-S 只编译不汇编生成汇编代码
-E 只进行预编译,不做其他处理
-g 在可执行程序中包含标准的调试信息
-o file 把文件输出到file里
-v 打印出编译内部编译个过程的命令行信息和编译的版本
-l dir 在头文件的搜索路径列表中添加dir
-L dir 在库文件的搜索路径的列表中添加dir目录
-static 连接静态库
-library 连接名为library的库文件
:! 后面可以接 Linux命令
Vi编译时,输入错的信息,可以按住CTRL+backspace 或delete删除