Linux VIʹÓÃ
viµÄʹÓÃÖ®»ã×Ü
¹¦ÄÜ×îÇ¿ÔÚµÄ±à¼Æ÷——vi
viÊÇËùÓÐUNIXϵͳ¶¼»áÌṩµÄÆÁÄ»±à¼Æ÷£¬ËüÌṩÁËÒ»¸öÊÓ´°É豸£¬Í¨¹ýËü¿ÉÒÔ±à¼Îļþ¡£µ±È»£¬¶ÔUNIXϵͳÂÔÓÐËùÖªµÄÈË£¬»ò¶à»òÉÙ¶¼¾õµÃvi³¬¼¶ÄÑÓ㬵«viÊÇ×î»ù±¾µÄ±à¼Æ÷£¬ËùÒÔÏ£Íû¶ÁÕßÄܺúðÑËüѧÆðÀ´£¬ÒÔºóÔÚUNIXÊÀ½çÀï±Ø½«³©ÐÐÎÞ×è¡¢ÓÎÈÐÓÐÓ࣬ÒòΪÆäËû¼¸ÖÖÎı¾´¦ÀíÆ÷²¢·ÇUNIX±ê×¼Å䱸¡£Ëµ²»¶¨±ðÈ˵ÄLinux»úÆ÷û°²×°joe»òpico£¬Èç¹ûÄú²»»ávi£¬ÄÇÄú¿ÉÄܾÍûéüÁË¡£
viµÄ»ù±¾¸ÅÄî
»ù±¾ÉÏvi¿É·ÖΪÈýÖÖ²Ù×÷״̬£¬·Ö±ðÊÇÃüÁîģʽ£¨Command mode£©¡¢²åÈëģʽ£¨Insert mode£©ºÍµ×ÏßÃüÁîģʽ£¨Last line mode£©£¬¸÷ģʽµÄ¹¦ÄÜÇø·ÖÈçÏ£º
1£® Comand mode£º¿ØÖÆÆÁÄ»¹â±êµÄÒÆ¶¯£¬×Ö·û»ò¹â±êµÄɾ³ý£¬Òƶ¯¸´ÖÆÄ³Çø¶Î¼°½øÈëInsert modeÏ£¬»òÕßµ½Last line mode¡£
2£® Insert mode£ºÎ¨ÓÐÔÚInsert modeÏ£¬²Å¿É×öÎÄ×ÖÊý¾ÝÊäÈ룬°´EscµÈ¿É»Øµ½Comand mode¡£
3£® Last line mode£º½«´¢´æÎļþ»òÀ뿪±à¼Æ÷£¬Ò²¿ÉÉèÖñ༻·¾³£¬ÈçѰÕÒ×Ö·û´®¡¢ÁгöÐкŵȡ£
²»¹ý¿ÉÒÔ°Ñvi¼ò»¯³ÉÁ½¸öģʽ£¬¼´Êǽ«Last line modeÒ²ËãÈëCommand mode,°Ñvi·Ö³ÉCommand ºÍInsert mode¡£
viµÄ»ù±¾²Ù×÷
?½øÈëvi
ÔÚϵͳÌáʾ·ûºÅÊäÈëvi¼°ÎļþÃû³Æºó£¬¼´¿É½øÈëviÈ«ÆÁÄ»±à¼»Ã棺
$ vi testfile
ÓÐÒ»µãÒªÌØ±ð×¢Ò⣬¾ÍÊÇÄú½øÈëviÖ®ºóÊÇ´¦ÓÚ“Command mode”Ï£¬ÄúÒªÇл»µ½Insert mode²ÅÄÜÊäÈëÎÄ×Ö¡£³õ´ÎÓÃviµÄÓû§¶¼»áÏëÏÈÓÃÉÏÏÂ×óÓÒ¼üÒÆ¶¯¹â±ê£¬½á¹ûµçÄÔÒ»Ö±½Ð£¬°Ñ×Ô¼ºÆø¸ö°ëËÀ£¬ËùÒÔ½øÈëviºó£¬ÏȲ»ÒªÂÒ¶¯£¬×ª»»ÈëInsertºóÔÙ˵¡£
?Çл»ÖÁInsert mode±à¼Îļþ
ÔÚCommand modeϰ´‘i’¡¢‘a’»ò‘o’Èý¼ü¾Í¿É½øÈëInsert mode¡£ÕâʱºòÄú¾Í¿ÉÒÔ¿ªÊ¼ÊäÈëÎÄ×ÖÁË¡£
i: ²åÈ룬´ÓĿǰ¹â±êËùÔÚÖ®´¦²åÈëËùÊäÈëµÄÎÄ×Ö¡£
a: Ôö¼Ó£¬Ä¿Ç°¹â±êËùÔÚµÄÏÂÒ»¸ö×Ö¿ªÊ¼ÊäÈëÎÄ×Ö¡£
o: ²åÈëеÄÒ»ÐУ¬´ÓÐÐÊ׿ªÊ¼ÊäÈëÎÄ×Ö¡£
?InsertµÄÇл»→Command mode£¬°´Esc¼ü
ÄúĿǰ´¦ÓÚInsert mode£¬Äú¾ÍÖ»ÄÜÒ»Ö±´ò×Ö¡£¼ÙÈçÄú·¢ÏÖ´ò´í×ÖÁË£¬ÏëÓùâ±ê¼üÍù»ØÒƶ¯£¬½«¸Ã×Öɾ³ý£¬¾ÍÒª°´ESC¼üת»»»ØCommand mode£¬ÔÙɾ³ýÎÄ×Ö¡£
?À뿪vi¼°´æÎļþ
ÔÚCommand modeÏ£¬¿É°´Ã°ºÅ“£º”¼üÈëÈëLast line mode£¬ÀýÈ磺
:w filename (ÊäÈë“w filename”£¬½«ÎÄÕ´æÈëÖ¸¶¨µÄÎļþÃûfilename)
:wq (ÊäÈë“wq”£¬ÒòΪ½øÈë֮ʱÒѾָ¶¨ÎļþÃûtestfile£¬ËùÒÔ»áдÈëtestfile²¢À뿪vi)
:q!
Ïà¹ØÎĵµ£º
/*
* ¸ÃÎļþʵÏÖϵͳµ÷ÓÃread£¬writeºÍlseek¡£
*/
/*
* linux/fs/read_write.c
*
* (C) 1991 Linus Torvalds
*/
#include <sys/stat.h>
#include <errno.h>
#include <sys/types.h>
#include <linux/kernel.h>
#include < ......
/*
* ¸ÃÎļþÖеÄÁ½¸öº¯Êýread_pipeºÍwrite_pipeÊÇÉϲ㺯Êý
* readºÍwriteµÄµ×²ãʵÏÖ
*/
/*
* linux/fs/pipe.c
*
* (C) 1991 Linus Torvalds
*/
#include <signal.h>
#include <linux/sched.h>
// ÄÚ´æ¹ÜÀíÍ·Îļþ¡£º¬ÓÐÒ³Ãæ´óС¶¨Òåº ......
/*
* linux/fs/file_dev.c
*
* (C) 1991 Linus Torvalds
*/
#include <errno.h>
#include <fcntl.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <asm/segment.h>
#define MIN(a,b) (((a)<(b))?(a):(b))
#defi ......
ÓÉbootload½øÈëlinuxºóÓÉhead.s½øÈëÁËstart_kernelÁË.
asmlinkage void __init start_kernel(void)
{
char * command_line;
extern struct kernel_param __start___param[], __stop___param[];
&hel ......
Ò».LinuxÄÚ´æ¹ÜÀíµÄһЩ»ù±¾¸ÅÄî
ÄÚ´æ¿Õ¼ä£º
¾ø´ó¶àÊýµÄǶÈëʽϵͳµÄϵͳÄÚ´æºÍI/OµØÖ·¿Õ¼äÊÇͳһ±àÖ·µÄ£¬ÄÚ´æºÍI/OµØÖ·¿Õ¼ä¹²Ïí0x00000000~0xFFFFFFFF¹²4GBµØÖ·¿Õ¼ä·¶Î§£¬Õâ4GBµÄµØÖ·¿Õ¼ä·¶Î§°üÀ¨ÒÔϼ¸ÖÖ´æ´¢¿Õ¼ä£ºÉ豸¿Õ¼ä¡¢ÄÚ²¿¸ßËÙSRAM¿Õ¼ä¡¢ÄÚ ......