⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 move3.c

📁 操作系统源代码
💻 C
字号:
/* move3.c *//* Author: *	Steve Kirkendall *	14407 SW Teal Blvd. #C *	Beaverton, OR 97005 *	kirkenda@cs.pdx.edu *//* This file contains movement functions that perform character searches */#include "config.h"#include "vi.h"#ifndef NO_CHARSEARCHstatic MARK	(*prevfwdfn)();	/* function to search in same direction */static MARK	(*prevrevfn)();	/* function to search in opposite direction */static char	prev_key;	/* sought cvhar from previous [fFtT] */MARK	m__ch(m, cnt, cmd)	MARK	m;	/* current position */	long	cnt;	char	cmd;	/* command: either ',' or ';' */{	MARK	(*tmp)();	if (!prevfwdfn)	{		msg("No previous f, F, t, or T command");		return MARK_UNSET;	}	if (cmd == ',')	{		m =  (*prevrevfn)(m, cnt, prev_key);		/* Oops! we didn't want to change the prev*fn vars! */		tmp = prevfwdfn;		prevfwdfn = prevrevfn;		prevrevfn = tmp;		return m;	}	else	{		return (*prevfwdfn)(m, cnt, prev_key);	}}/* move forward within this line to next occurrence of key */MARK	m_fch(m, cnt, key)	MARK	m;	/* where to search from */	long	cnt;	char	key;	/* what to search for */{	REG char	*text;	DEFAULT(1);	prevfwdfn = m_fch;	prevrevfn = m_Fch;	prev_key = key;	pfetch(markline(m));	text = ptext + markidx(m);	while (cnt-- > 0)	{		do		{			m++;			text++;		} while (*text && *text != key);	}	if (!*text)	{		return MARK_UNSET;	}	return m;}/* move backward within this line to previous occurrence of key */MARK	m_Fch(m, cnt, key)	MARK	m;	/* where to search from */	long	cnt;	char	key;	/* what to search for */{	REG char	*text;	DEFAULT(1);	prevfwdfn = m_Fch;	prevrevfn = m_fch;	prev_key = key;	pfetch(markline(m));	text = ptext + markidx(m);	while (cnt-- > 0)	{		do		{			m--;			text--;		} while (text >= ptext && *text != key);	}	if (text < ptext)	{		return MARK_UNSET;	}	return m;}/* move forward within this line almost to next occurrence of key */MARK	m_tch(m, cnt, key)	MARK	m;	/* where to search from */	long	cnt;	char	key;	/* what to search for */{	/* skip the adjacent char */	pfetch(markline(m));	if (plen <= markidx(m))	{		return MARK_UNSET;	}	m++;	m = m_fch(m, cnt, key);	if (m == MARK_UNSET)	{		return MARK_UNSET;	}	prevfwdfn = m_tch;	prevrevfn = m_Tch;	return m - 1;}/* move backward within this line almost to previous occurrence of key */MARK	m_Tch(m, cnt, key)	MARK	m;	/* where to search from */	long	cnt;	char	key;	/* what to search for */{	/* skip the adjacent char */	if (markidx(m) == 0)	{		return MARK_UNSET;	}	m--;	m = m_Fch(m, cnt, key);	if (m == MARK_UNSET)	{		return MARK_UNSET;	}	prevfwdfn = m_Tch;	prevrevfn = m_tch;	return m + 1;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -