亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vi.c

?? 手機嵌入式Linux下可用的busybox源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
		//case 0x09:	// ht		//case 0x0b:	// vt		//case 0x0e:	// so		//case 0x0f:	// si		//case 0x10:	// dle		//case 0x11:	// dc1		//case 0x13:	// dc3#ifdef BB_FEATURE_VI_CRASHME	case 0x14:			// dc4  ctrl-T		crashme = (crashme == 0) ? 1 : 0;		break;#endif							/* BB_FEATURE_VI_CRASHME */		//case 0x16:	// syn		//case 0x17:	// etb		//case 0x18:	// can		//case 0x1c:	// fs		//case 0x1d:	// gs		//case 0x1e:	// rs		//case 0x1f:	// us		//case '!':	// !- 		//case '#':	// #- 		//case '&':	// &- 		//case '(':	// (- 		//case ')':	// )- 		//case '*':	// *- 		//case ',':	// ,- 		//case '=':	// =- 		//case '@':	// @- 		//case 'F':	// F- 		//case 'K':	// K- 		//case 'Q':	// Q- 		//case 'S':	// S- 		//case 'T':	// T- 		//case 'V':	// V- 		//case '[':	// [- 		//case '\\':	// \- 		//case ']':	// ]- 		//case '_':	// _- 		//case '`':	// `- 		//case 'g':	// g- 		//case 'u':	// u- FIXME- there is no undo		//case 'v':	// v- 	default:			// unrecognised command		buf[0] = c;		buf[1] = '\0';		if (c <= ' ') {			buf[0] = '^';			buf[1] = c + '@';			buf[2] = '\0';		}		ni((Byte *) buf);		end_cmd_q();	// stop adding to q	case 0x00:			// nul- ignore		break;	case 2:			// ctrl-B  scroll up   full screen	case VI_K_PAGEUP:	// Cursor Key Page Up		dot_scroll(rows - 2, -1);		break;#ifdef BB_FEATURE_VI_USE_SIGNALS	case 0x03:			// ctrl-C   interrupt		longjmp(restart, 1);		break;	case 26:			// ctrl-Z suspend		suspend_sig(SIGTSTP);		break;#endif							/* BB_FEATURE_VI_USE_SIGNALS */	case 4:			// ctrl-D  scroll down half screen		dot_scroll((rows - 2) / 2, 1);		break;	case 5:			// ctrl-E  scroll down one line		dot_scroll(1, 1);		break;	case 6:			// ctrl-F  scroll down full screen	case VI_K_PAGEDOWN:	// Cursor Key Page Down		dot_scroll(rows - 2, 1);		break;	case 7:			// ctrl-G  show current status		edit_status();		break;	case 'h':			// h- move left	case VI_K_LEFT:	// cursor key Left	case 8:			// ctrl-H- move left    (This may be ERASE char)	case 127:			// DEL- move left   (This may be ERASE char)		if (cmdcnt-- > 1) {			do_cmd(c);		}				// repeat cnt		dot_left();		break;	case 10:			// Newline ^J	case 'j':			// j- goto next line, same col	case VI_K_DOWN:	// cursor key Down		if (cmdcnt-- > 1) {			do_cmd(c);		}				// repeat cnt		dot_next();		// go to next B-o-l		dot = move_to_col(dot, ccol + offset);	// try stay in same col		break;	case 12:			// ctrl-L  force redraw whole screen	case 18:			// ctrl-R  force redraw		place_cursor(0, 0, FALSE);	// put cursor in correct place		clear_to_eos();	// tel terminal to erase display		(void) mysleep(10);		screen_erase();	// erase the internal screen buffer		refresh(TRUE);	// this will redraw the entire display		break;	case 13:			// Carriage Return ^M	case '+':			// +- goto next line		if (cmdcnt-- > 1) {			do_cmd(c);		}				// repeat cnt		dot_next();		dot_skip_over_ws();		break;	case 21:			// ctrl-U  scroll up   half screen		dot_scroll((rows - 2) / 2, -1);		break;	case 25:			// ctrl-Y  scroll up one line		dot_scroll(1, -1);		break;	case 27:			// esc		if (cmd_mode == 0)			indicate_error(c);		cmd_mode = 0;	// stop insrting		end_cmd_q();		*status_buffer = '\0';	// clear status buffer		break;	case ' ':			// move right	case 'l':			// move right	case VI_K_RIGHT:	// Cursor Key Right		if (cmdcnt-- > 1) {			do_cmd(c);		}				// repeat cnt		dot_right();		break;#ifdef BB_FEATURE_VI_YANKMARK	case '"':			// "- name a register to use for Delete/Yank		c1 = get_one_char();		c1 = tolower(c1);		if (islower(c1)) {			YDreg = c1 - 'a';		} else {			indicate_error(c);		}		break;	case '\'':			// '- goto a specific mark		c1 = get_one_char();		c1 = tolower(c1);		if (islower(c1)) {			c1 = c1 - 'a';			// get the b-o-l			q = mark[(int) c1];			if (text <= q && q < end) {				dot = q;				dot_begin();	// go to B-o-l				dot_skip_over_ws();			}		} else if (c1 == '\'') {	// goto previous context			dot = swap_context(dot);	// swap current and previous context			dot_begin();	// go to B-o-l			dot_skip_over_ws();		} else {			indicate_error(c);		}		break;	case 'm':			// m- Mark a line		// this is really stupid.  If there are any inserts or deletes		// between text[0] and dot then this mark will not point to the		// correct location! It could be off by many lines!		// Well..., at least its quick and dirty.		c1 = get_one_char();		c1 = tolower(c1);		if (islower(c1)) {			c1 = c1 - 'a';			// remember the line			mark[(int) c1] = dot;		} else {			indicate_error(c);		}		break;	case 'P':			// P- Put register before	case 'p':			// p- put register after		p = reg[YDreg];		if (p == 0) {			psbs("Nothing in register %c", what_reg());			break;		}		// are we putting whole lines or strings		if (strchr((char *) p, '\n') != NULL) {			if (c == 'P') {				dot_begin();	// putting lines- Put above			}			if (c == 'p') {				// are we putting after very last line?				if (end_line(dot) == (end - 1)) {					dot = end;	// force dot to end of text[]				} else {					dot_next();	// next line, then put before				}			}		} else {			if (c == 'p')				dot_right();	// move to right, can move to NL		}		dot = string_insert(dot, p);	// insert the string		end_cmd_q();	// stop adding to q		break;	case 'U':			// U- Undo; replace current line with original version		if (reg[Ureg] != 0) {			p = begin_line(dot);			q = end_line(dot);			p = text_hole_delete(p, q);	// delete cur line			p = string_insert(p, reg[Ureg]);	// insert orig line			dot = p;			dot_skip_over_ws();		}		break;#endif							/* BB_FEATURE_VI_YANKMARK */	case '$':			// $- goto end of line	case VI_K_END:		// Cursor Key End		if (cmdcnt-- > 1) {			do_cmd(c);		}				// repeat cnt		dot = end_line(dot + 1);		break;	case '%':			// %- find matching char of pair () [] {}		for (q = dot; q < end && *q != '\n'; q++) {			if (strchr("()[]{}", *q) != NULL) {				// we found half of a pair				p = find_pair(q, *q);				if (p == NULL) {					indicate_error(c);				} else {					dot = p;				}				break;			}		}		if (*q == '\n')			indicate_error(c);		break;	case 'f':			// f- forward to a user specified char		last_forward_char = get_one_char();	// get the search char		//		// dont seperate these two commands. 'f' depends on ';'		//		//**** fall thru to ... 'i'	case ';':			// ;- look at rest of line for last forward char		if (cmdcnt-- > 1) {			do_cmd(';');		}				// repeat cnt		if (last_forward_char == 0) break;		q = dot + 1;		while (q < end - 1 && *q != '\n' && *q != last_forward_char) {			q++;		}		if (*q == last_forward_char)			dot = q;		break;	case '-':			// -- goto prev line		if (cmdcnt-- > 1) {			do_cmd(c);		}				// repeat cnt		dot_prev();		dot_skip_over_ws();		break;#ifdef BB_FEATURE_VI_DOT_CMD	case '.':			// .- repeat the last modifying command		// Stuff the last_modifying_cmd back into stdin		// and let it be re-executed.		if (last_modifying_cmd != 0) {			ioq = ioq_start = (Byte *) strdup((char *) last_modifying_cmd);		}		break;#endif							/* BB_FEATURE_VI_DOT_CMD */#ifdef BB_FEATURE_VI_SEARCH	case '?':			// /- search for a pattern	case '/':			// /- search for a pattern		buf[0] = c;		buf[1] = '\0';		q = get_input_line(buf);	// get input line- use "status line"		if (strlen((char *) q) == 1)			goto dc3;	// if no pat re-use old pat		if (strlen((char *) q) > 1) {	// new pat- save it and find			// there is a new pat			if (last_search_pattern != 0) {				free(last_search_pattern);			}			last_search_pattern = (Byte *) strdup((char *) q);			goto dc3;	// now find the pattern		}		// user changed mind and erased the "/"-  do nothing		break;	case 'N':			// N- backward search for last pattern		if (cmdcnt-- > 1) {			do_cmd(c);		}				// repeat cnt		dir = BACK;		// assume BACKWARD search		p = dot - 1;		if (last_search_pattern[0] == '?') {			dir = FORWARD;			p = dot + 1;		}		goto dc4;		// now search for pattern		break;	case 'n':			// n- repeat search for last pattern		// search rest of text[] starting at next char		// if search fails return orignal "p" not the "p+1" address		if (cmdcnt-- > 1) {			do_cmd(c);		}				// repeat cnt	  dc3:		if (last_search_pattern == 0) {			msg = (Byte *) "No previous regular expression";			goto dc2;		}		if (last_search_pattern[0] == '/') {			dir = FORWARD;	// assume FORWARD search			p = dot + 1;		}		if (last_search_pattern[0] == '?') {			dir = BACK;			p = dot - 1;		}	  dc4:		q = char_search(p, last_search_pattern + 1, dir, FULL);		if (q != NULL) {			dot = q;	// good search, update "dot"			msg = (Byte *) "";			goto dc2;		}		// no pattern found between "dot" and "end"- continue at top		p = text;		if (dir == BACK) {			p = end - 1;		}		q = char_search(p, last_search_pattern + 1, dir, FULL);		if (q != NULL) {	// found something			dot = q;	// found new pattern- goto it			msg = (Byte *) "search hit BOTTOM, continuing at TOP";			if (dir == BACK) {				msg = (Byte *) "search hit TOP, continuing at BOTTOM";			}		} else {			msg = (Byte *) "Pattern not found";		}	  dc2:		psbs("%s", msg);		break;	case '{':			// {- move backward paragraph		q = char_search(dot, (Byte *) "\n\n", BACK, FULL);		if (q != NULL) {	// found blank line			dot = next_line(q);	// move to next blank line		}		break;	case '}':			// }- move forward paragraph		q = char_search(dot, (Byte *) "\n\n", FORWARD, FULL);		if (q != NULL) {	// found blank line			dot = next_line(q);	// move to next blank line		}		break;#endif							/* BB_FEATURE_VI_SEARCH */	case '0':			// 0- goto begining of line	case '1':			// 1- 	case '2':			// 2- 	case '3':			// 3- 	case '4':			// 4- 	case '5':			// 5- 	case '6':			// 6- 	case '7':			// 7- 	case '8':			// 8- 	case '9':			// 9- 		if (c == '0' && cmdcnt < 1) {			dot_begin();	// this was a standalone zero		} else {			cmdcnt = cmdcnt * 10 + (c - '0');	// this 0 is part of a number		}		break;	case ':':			// :- the colon mode commands		p = get_input_line((Byte *) ":");	// get input line- use "status line"#ifdef BB_FEATURE_VI_COLON		colon(p);		// execute the command#else							/* BB_FEATURE_VI_COLON */		if (*p == ':')			p++;				// move past the ':'		cnt = strlen((char *) p);		if (cnt <= 0)			break;		if (strncasecmp((char *) p, "quit", cnt) == 0 ||			strncasecmp((char *) p, "q!", cnt) == 0) {	// delete lines			if (file_modified == TRUE && p[1] != '!') {				psbs("No write since last change (:quit! overrides)");			} else {				editing = 0;			}		} else if (strncasecmp((char *) p, "write", cnt) == 0 ||				   strncasecmp((char *) p, "wq", cnt) == 0) {			cnt = file_write(cfn, text, end - 1);			file_modified = FALSE;			psb("\"%s\" %dL, %dC", cfn, count_lines(text, end - 1), cnt);			if (p[1] == 'q') {				editing = 0;			}		} else if (strncasecmp((char *) p, "file", cnt) == 0 ) {			edit_status();			// show current file status		} else if (sscanf((char *) p, "%d", &j) > 0) {			dot = find_line(j);		// go to line # j			dot_skip_over_ws();		} else {		// unrecognised cmd			ni((Byte *) p);		}#endif							/* BB_FEATURE_VI_COLON */		break;	case '<':			// <- Left  shift something	case '>':			// >- Right shift something		cnt = count_lines(text, dot);	// remember what line we are on		c1 = get_one_char();	// get the type of thing to delete

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产一区二区在线观看| 日韩一区二区麻豆国产| 97国产精品videossex| 欧美一区二区不卡视频| 国产精品国产三级国产普通话蜜臀| 日韩精品福利网| 色偷偷一区二区三区| 久久久99久久| 久久丁香综合五月国产三级网站| 91麻豆免费看片| 国产精品美女久久久久久久久久久| 日韩精品一卡二卡三卡四卡无卡| 91丨九色丨黑人外教| 久久青草国产手机看片福利盒子 | 欧美精品日韩一区| 中文字幕中文在线不卡住| 韩国理伦片一区二区三区在线播放| 欧美在线观看视频在线| 1000精品久久久久久久久| 国产精品1区二区.| 久久蜜桃一区二区| 波多野结衣中文一区| 精品国产乱码久久久久久图片| 亚洲国产精品一区二区尤物区| 97精品久久久午夜一区二区三区| 国产精品嫩草影院av蜜臀| 国产91露脸合集magnet | 777xxx欧美| 亚洲国产精品天堂| 欧美少妇xxx| 亚洲午夜精品在线| 欧美日韩黄视频| 日韩精品电影在线观看| 3751色影院一区二区三区| 日本一区中文字幕| 日韩欧美亚洲国产精品字幕久久久| 丝袜美腿亚洲一区二区图片| 欧美日韩mp4| 免播放器亚洲一区| 26uuu精品一区二区在线观看| 国模少妇一区二区三区| 国产日韩精品一区二区三区 | 亚洲免费观看在线视频| 91麻豆精品视频| 亚洲国产aⅴ成人精品无吗| 欧美日韩aaa| 色综合色狠狠综合色| 一区二区三区久久| 欧美性感一区二区三区| 天涯成人国产亚洲精品一区av| 91精品国产91热久久久做人人| 精品一区二区在线视频| 国产精品天美传媒| 欧美三级电影在线看| 久久精品国产精品亚洲红杏| 久久久精品国产免费观看同学| www.视频一区| 午夜精品在线视频一区| 国产午夜亚洲精品理论片色戒| 成人18视频日本| 日日摸夜夜添夜夜添亚洲女人| 日韩欧美亚洲另类制服综合在线| 国产福利不卡视频| 亚洲亚洲精品在线观看| 欧美刺激脚交jootjob| 成人黄色一级视频| 日韩成人精品视频| 国产精品入口麻豆原神| 欧美人妖巨大在线| 精品一区二区三区免费毛片爱| 国产精品乱码一区二三区小蝌蚪| 欧美日韩一区小说| 国产精品一区二区三区99| 亚洲国产精品久久久男人的天堂| 精品第一国产综合精品aⅴ| 97se亚洲国产综合自在线观| 久久国产精品免费| 亚洲综合久久久| 国产精品午夜春色av| 日韩一区二区视频在线观看| 99在线精品视频| 国产在线播精品第三| 一区二区三区中文字幕| 国产欧美日韩亚州综合 | 欧美午夜在线观看| 国产成人精品一区二区三区四区 | 日韩欧美中文一区二区| 色婷婷激情综合| 高清不卡在线观看| 蜜桃av一区二区三区| 亚洲一二三区在线观看| 亚洲人成7777| 国产欧美日韩亚州综合| 精品国产乱码久久| 91精品国产综合久久精品| 色吧成人激情小说| a级精品国产片在线观看| 激情亚洲综合在线| 老司机精品视频一区二区三区| 亚洲电影在线播放| 尤物av一区二区| 亚洲欧洲日本在线| 中文字幕电影一区| 久久精品视频网| 久久影音资源网| 精品国产百合女同互慰| 制服丝袜国产精品| 欧美夫妻性生活| 欧美视频日韩视频在线观看| 在线看一区二区| 欧美性感一类影片在线播放| 91官网在线观看| 欧美无乱码久久久免费午夜一区| 色狠狠一区二区| 在线精品国精品国产尤物884a | 国产一区二区久久| 国模娜娜一区二区三区| 国产精品亚洲一区二区三区在线| 国产麻豆9l精品三级站| 国产一区二区0| 国产精品白丝av| 成人污视频在线观看| 北条麻妃一区二区三区| av在线不卡网| 91福利在线观看| 欧美视频一区二区三区在线观看| 欧美性生活久久| 国产精品毛片久久久久久| 国产精品毛片a∨一区二区三区 | 国产区在线观看成人精品| 国产女人18水真多18精品一级做| 国产欧美va欧美不卡在线| 中文字幕亚洲欧美在线不卡| 亚洲欧美自拍偷拍色图| 亚洲影视在线观看| 毛片不卡一区二区| 国产成人一区在线| 在线精品视频一区二区三四| 在线综合亚洲欧美在线视频| 日韩欧美国产一区二区三区| 久久久久9999亚洲精品| 亚洲欧美偷拍三级| 男女男精品网站| 不卡区在线中文字幕| 欧美影片第一页| 久久综合久色欧美综合狠狠| 国产精品成人在线观看| 日韩精品视频网| 成人av午夜电影| 91超碰这里只有精品国产| 久久久亚洲午夜电影| 一区二区三区四区亚洲| 久久电影网电视剧免费观看| 成人免费看片app下载| 欧美午夜精品一区二区蜜桃| 久久先锋影音av| 亚洲成人资源网| 成人av影院在线| 欧美一级片在线| 一区二区成人在线| 国产精品一二三四区| 欧美色中文字幕| 最新久久zyz资源站| 久久se这里有精品| 欧美视频一二三区| 国产精品乱码一区二三区小蝌蚪| 日韩成人免费看| 日本久久一区二区| 国产精品人成在线观看免费| 蜜臀精品久久久久久蜜臀| 91精品国产综合久久精品app| 国产精品久久三区| 国产久卡久卡久卡久卡视频精品| 欧美卡1卡2卡| 亚洲美女偷拍久久| 成人看片黄a免费看在线| 欧美一区日本一区韩国一区| 亚洲精品第1页| 97精品国产露脸对白| 国产无一区二区| 精品伊人久久久久7777人| 91精品国产入口| 亚洲成人你懂的| 91国偷自产一区二区开放时间 | 秋霞影院一区二区| 欧美亚洲国产一区二区三区 | 日本美女视频一区二区| 欧美浪妇xxxx高跟鞋交| 亚洲午夜av在线| 在线观看日韩一区| 亚洲乱码国产乱码精品精可以看| 国产成人在线视频免费播放| 久久奇米777| 国产精品99久久久久久有的能看| www国产成人| 国产最新精品免费| 精品国产亚洲在线| 国产美女精品一区二区三区| 精品国产髙清在线看国产毛片| 久久99精品视频|