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

📄 stevie.mm

📁 STEVIE文本文件编缉器的C 语言源程序
💻 MM
📖 第 1 页 / 共 2 页
字号:
the '\\<' and '\\>' extensions.
The parameter "ignorecase" can be set to ignore case in all string searches.
.H 1 "Operators"
The vi operators (d, c, y, !, <, and >) work as true operators.
The tilde command may also be used as an operator if the parameter "tildeop"
has been set. By default, this parameter is not set.
.H 1 "Tags"
Tags are implemented and a fairly simple version of 'ctags' is supplied
with the editor. The current version of ctags will find functions and
macros following a specific (but common) form.  See 'ctags.doc' for a
complete discussion.
.H 1 "System-Specific Comments"
The following sections provide additional relevant information for the
systems to which STEVIE has been ported.
.H 2 "Atari ST"
.H 3 "TOS"
The editor has been tested in all three resolutions, although low and
high res. are less tested than medium. The 50-line high res. mode can
be used by setting the 'lines' parameter to 50. Alternatively, the
environment variable 'LINES' can be set. The editor doesn't actively
set the number of lines on the screen. It just operates using the number
of lines it was told.
.P
The arrow keys, as well as the <INSERT>, <HELP>, and <UNDO> keys are
all mapped appropriately.
.H 3 "Minix"
The editor is pretty much the same under Minix, but many of the
keyboard mappings aren't yet supported.
.H 2 "UNIX"
The editor has been ported to UNIX System V release 3 as well as 4.2 BSD.
This was done
mainly to get some profiling data so I haven't put much effort into
doing the UNIX version right.
While the termcap routines are supported, the editor is still fairly
picky about the capabilities it wants and makes little effort to
do clever things with less intelligent terminals.
.P
Job control is supported on BSD systems.
.H 2 "OS/2"
Make sure 'ansi' mode is on (using the 'ansi' command).
The OS/2 console driver doesn't support insert/delete line, so STEVIE
bypasses the driver and makes the appropriate system calls directly.
This is all done in the system-specific part of the editor so the kludge
is at least localized.
.P
The arrow keys, page up/down and home/end all do what
you'd expect. The function keys are hard-coded to some useful macros until
I can get true support for macros into the editor. The current mappings
are:
.DS 1
F1	:N <RETURN>
F2	:n <RETURN>
F3	:e # <RETURN>
F4	:rew <RETURN>
F5	[[
F6	]]
F7	Convert C declaration to pseudo-english (uses cdecl)
F8	Convert english-style declaration to C (uses cdecl)
F9	:x <RETURN>
F10	:help <RETURN>

S-F1	:N! <RETURN>
S-F2	:n! <RETURN>
.DE
.P
The macros for F7 and F8 assume that the "cdecl" program is available.
.H 2 "MSDOS"
STEVIE has been ported to MSDOS 3.3 using the Microsoft
C compiler, version 5.1.
The keyboard mappings are the same as for OS/2.
The only problem with the PC version is that the inefficiency of
the screen update code becomes painfully apparent on slower machines.
.P
The DOS version requires the use of an extended console driver
that can insert and delete lines.
The distributed code uses "nansi.sys" which seems to be widely
available.
.H 1 "Missing Features"
.AL
.LI
The ability to edit files larger than the available memory.
This isn't a problem on the machines I use, but it hits the
Minix-PC people pretty hard.
.LI
Named buffers.
.LI
Macros with support for function keys.
.LI
More "set" options.
.LI
Many others...
.LE
.H 1 "Known Bugs and Problems"
.AL
.LI
The yank buffer uses statically allocated memory, so large yanks
will fail. If a delete spans an area larger than the yank buffer,
the program asks
for confirmation before proceeding. That way, if you were moving text,
you don't get screwed by the limited yank buffer. You just have to move
smaller chunks at a time. All the internal buffers (yank, redo, etc.)
need to be reworked to allocate memory dynamically. The 'undo' buffer
is now dynamically allocated, so any change can be undone.
.LI
If you stay in insert mode for a long time, the insert buffer can overflow.
The editor will print a message and dump you back into command mode.
.LI
The current version of the substitute and global commands
(i.e. ":s/foo/bar" or ":g/foo/d") can't
be undone.
This is due to the current design of the undo code.
To undo these
commands would generally involve unreasonable amounts of memory.
.LI
Several other less bothersome glitches...
.LE
.SK
.H 1 "Conclusion"
The editor has reached a pretty stable state, and performs well on
the systems I use it on, so I'm pretty much in maintenance mode now.
There's still plenty to be done; the screen update code is still pretty
inefficient and the yank/put code is still primitive.
I'm still interested in bug reports, and I do still add a new feature
from time to time, but the rate of change is way down now.
.P
I'd like to thank Tim Thompson for writing the original version of the
editor. His program was well structured and quite readable. Thanks for
giving me a good base to work with.
Thanks also to many users of STEVIE who have sent in their changes.
Many of the changes I've received aren't portable to all the systems
I support, but I'm working to get portable implementations integrated
into the editor where possible.
.P
If you're reading this file, but didn't get the source code for STEVIE,
it can be had by sending a disk with return postage to the address given
below. I can write disks for the Atari ST (SS or DS) or MSDOS (360K or
1.2M). Please be sure to include the return postage. I don't intend to
make money from this program, but I don't want to lose any either.
.DS 1
Tony Andrews		UUCP: uunet!dunike!onecom!raid5!tony
5902E Gunbarrel Ave.
Boulder, CO 80301
.DE
.SK
.HU "Character Function Summary"
The following list describes the meaning of each character that's used
by the editor. In some cases characters have meaning in both command and
insert mode; these are all described.
.SP 2
.VL 8
.LI ^@
The null character. Not used in any mode. This character may not
be present in the file, as is the case with vi.
.LI ^B
Backward one screen.
.LI ^D
Scroll the window down one half screen.
.LI ^E
Scroll the screen up one line.
.LI ^F
Forward one screen.
.LI ^G
Same as ":f" command. Displays file information.
.LI ^H
(Backspace) Moves cursor left one space in command mode.
In insert mode, erases the last character typed.
.LI ^J
Move the cursor down one line.
.LI ^L
Clear and redraw the screen.
.LI ^M
(Carriage return) Move to the first non-white character
in the next line. In insert mode, a carriage return opens a new
line for input.
.LI ^N
Move the cursor down a line.
.LI ^P
Move the cursor up a line.
.LI ^U
Scroll the window up one half screen.
.LI ^Y
Scroll the screen down one line.
.LI ^[
Escape cancels a pending command in command mode, and is used to
terminate insert mode.
.LI ^]
Moves to the tag whose name is given by the word in which the cursor
resides.
.LI ^`
Same as ":e #" if supported (system-dependent).
.LI SPACE
Move the cursor right on column.
.LI !
The filter operator always operates on a range of lines, passing the
lines as input to a program, and replacing them with the output of the
program. The shorthand command "!!" can be used to filter a number of
lines (specified by a preceding count). The command "!" is replaced
by the last command used, so "!!!<RETURN>" runs the given number of
lines through the last specified command.
.LI $
Move to the end of the current line.
.LI %
If the cursor rests on a paren '()', brace '{}', or bracket '[]',
move to the matching one.
.LI \'
Used to move the cursor to a previously marked position, as
in 'a or 'b. The cursor moves to the start of the marked line. The
special mark '' refers to the "previous context".
.LI +
Same as carriage return, in command mode.
.LI ,
Reverse of the last t, T, f, or F command.
.LI -
Move to the first non-white character in the previous line.
.LI .
Repeat the last edit command.
.LI /
Start of a forward string search command. String searches may be
optionally terminated with a closing slash. To search for a slash
use '\\/' in the search string.
.LI 0
Move to the start of the current line. Also used within counts.
.LI 1-9
Used to add 'count' prefixes to commands.
.LI :
Prefix character for "ex" commands.
.LI ;
Repeat last t, T, f, or F command.
.LI <
The 'left shift' operator.
.LI >
The 'right shift' operator.
.LI ?
Same as '/', but search backward.
.LI A
Append at the end of the current line.
.LI B
Backward one blank-delimited word.
.LI C
Change the rest of the current line.
.LI D
Delete the rest of the current line.
.LI E
End of the end of a blank-delimited word.
.LI F
Find a character backward on the current line.
.LI G
Go to the given line number (end of file, by default).
.LI H
Move to the first non-white char. on the top screen line.
.LI I
Insert before the first non-white char. on the current line.
.LI J
Join two lines.
.LI L
Move to the first non-white char. on the bottom screen line.
.LI M
Move to the first non-white char. on the middle screen line.
.LI N
Reverse the last string search.
.LI O
Open a new line above the current line, and start inserting.
.LI P
Put the yank/delete buffer before the current cursor position.
.LI R
Replace characters until an "escape" character is received.
Similar to insert mode, but replaces instead of inserting.
Typing a newline in replace mode is the same as in insert mode,
but replacing continues on the new line.
.LI T
Reverse search 'upto' the given character.
.LI U
Restore the current line to its state before you started changing it.
.LI W
Move forward one blank-delimited word.
.LI X
Delete one character before the cursor.
.LI Y
Yank the current line. Same as 'yy'.
.LI ZZ
Exit from the editor, saving changes if necessary.
.LI [[
Move backward one C function.
.LI ]]
Move forward one C function.
.LI ^
Move to the first non-white on the current line.
.LI `
Move to the given mark, as with '. The distinction between the two
commands is important when used with operators. I support the
difference correctly. If you don't know what I'm talking about,
don't worry, it won't matter to you.
.LI a
Append text after the cursor.
.LI b
Back one word.
.LI c
The change operator.
.LI d
The delete operator.
.LI e
Move to the end of a word.
.LI f
Find a character on the current line.
.LI h
Move left one column.
.LI i
Insert text before the cursor.
.LI j
Move down one line.
.LI k
Move up one line.
.LI l
Move right one column.
.LI m
Set a mark at the current position (e.g. ma or mb).
.LI n
Repeat the last string search.
.LI o
Open a new line and start inserting text.
.LI p
Put the yank/delete buffer after the cursor.
.LI r
Replace a character.
.LI s
Replace characters.
.LI t
Move forward 'upto' the given character on the current line.
.LI u
Undo the last edit.
.LI w
Move forward one word.
.LI x
Delete the character under the cursor.
.LI y
The yank operator.
.LI z
Redraw the screen with the current line at the top (zRETURN),
the middle (z.), or the bottom (z-).
.LI |
Move to the column given by the preceding count.
.LI ~
Invert the case of the current character (if alpha) and move to the right.
If the parameter "tildeop" is set, this command functions as an operator.
.LE

⌨️ 快捷键说明

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