Merge from vendor branch LIBARCHIVE:
[dragonfly.git] / contrib / nvi / FAQ
1 @(#)FAQ 8.13 (Berkeley) 10/14/96
2
3 Q: How can I get vi to display my character set?
4 A: Vi uses the C library routine isprint(3) to determine if a character
5    is printable, or should be displayed as an octal or hexadecimal value
6    on the screen.  Generally, if vi is displaying printable characters
7    in octal/hexadecimal forms, your environment is not configured correctly.
8    Try looking at the man pages that allow you to configure your locale.
9    For example, to configure an ISO 8859-1 locale under Solaris using csh,
10    you would do:
11
12         setenv LANG C
13         setenv LC_CTYPE iso_8859_1
14
15    Other LC_CTYPE systems/values that I'm told work:
16
17    System       Value
18    ======       =====
19    FreeBSD      lt_LN.ISO_8859-1
20    HP-UX  9.X   american.iso88591
21    HP-UX 10.X   en_US.iso88591
22    SunOS  4.X   iso_8859_1
23    SunOS  5.X   iso_8859_1
24
25    If there's no other solution, you can use the print and noprint edit
26    options of vi to specify that a specific character is printable or not
27    printable.
28         
29 Q: My map won't work!
30 A: One thing that you should immediately check if a vi map doesn't work
31    is if depends on the final cursor position after a P or p command.
32    Historic vi's were inconsistent as to the final position of the cursor,
33    and, to make matter worse, the final cursor position also depended on
34    whether the put text came from a named or unnamed buffer!  Vi follows
35    the POSIX 1003.2 standard on this one, and makes this consistent, always
36    placing the cursor on the first character.
37
38 Q: I'm using ksh or csh as my vi edit option shell value, and file
39    expansions don't work right!
40 A: The problem may be in your ksh or csh startup files, e.g., .cshrc.  Vi
41    executes the shell to do name expansion, and the shell generally reads
42    its startup files.  If the startup files are not correctly configured
43    for non-interactive use, e.g., they always echo a prompt to the screen,
44    vi will be unable to parse the output and things will not work
45    correctly.
46
47 Q: How does the iclower edit option differ from the ignorecase (i.e. ic)
48    edit option?
49 A: The difference is that the ignorecase edit option always ignores the
50    case of letters in the Regular Expression (RE), and the iclower edit
51    option only ignores the case if there are no upper-case letters in the
52    RE.  If any upper-case letters appear in the Regular Expression, then
53    it will be treated case-sensitively, as if the ignorecase edit option
54    was not set.
55
56 Q: When I edit binary files, vi appends a <newline> to the last line!
57 A: This is historic practice for vi, and further, it's required by the
58    POSIX 1003.2 standard.  My intent is to provide a command line and/or
59    edit option to turn this behavior off when I switch to version 2.0 of
60    the Berkeley DB package.
61
62 Q: My cursor keys don't work when I'm in text input mode!
63 A: A common problem over slow links is that the set of characters sent by
64    the cursor keys don't arrive close enough together for vi to understand
65    that they are a single keystroke, and not separate keystrokes.  Try
66    increasing the value of the escapetime edit option, which will cause
67    vi to wait longer before deciding that the <escape> character that
68    starts cursor key sequences doesn't have any characters following it.
69
70 Q: When I edit some files, vi seems to hang forever, and I have to kill it.
71 A: Vi uses flock(2) and fcntl(2) to do file locking.  When it attempts to
72    acquired a lock for a file on an NFS mounted filesystem, it can hang
73    for a very long (perhaps infinite) period of time.  Turning off the
74    "lock" edit option will keep vi from attempting to acquire any locks
75    on the files you edit.
76
77 Q: When I compile vi I get lots of warnings about pointer assignments
78    being incompatible!
79 A: Vi is partially written to support wide characters.  When this code
80    interfaces with the code that doesn't yet support wide characters,
81    the pointer types clash.  This will hopefully be fixed in the near
82    future, but I've been saying that for awhile, now.
83
84 Q: I get jumpy scrolling behavior in the screen!
85 A: This is almost certainly a problem with the system's terminfo or
86    termcap information for your terminal.  If the terminfo/termcap entry
87    doesn't have the settable scrolling region capabilities, or the more
88    powerful scrolling commands, these behaviors can result.  Historic
89    implementations of vi, and some of the vi clones, don't suffer from
90    this problem because they wrote their own screen support instead of
91    using the curses library.
92
93    The solution is to find a good terminfo or termcap entry for your
94    terminal, which will fix the problem for all of the applications on
95    your system, not just vi.  Eric Raymond maintains the freely
96    redistributable termcap/terminfo entries.  They can be downloaded
97    from http://www.ccil.org/~esr/ncurses.html, or you can contact him
98    at esr@snark.thyrsus.com.
99
100 Q: The entire screen repaints on every keystroke!
101 A: Your system's curses implementation is broken.  You should use the
102    curses implementation provided with vi or a curses replacement such
103    as ncurses.  Eric Raymond is one of the maintainers of the freely
104    redistributable ncurses package.  You can download ncurses from
105    http://www.ccil.org/~esr/ncurses.html, or you can contact him at
106    esr@snark.thyrsus.com.
107
108 Q: When I use vi on a Sun console (terminal type sun-34) the screen
109    is occasionally trashed, usually when exiting vi!
110 A: The Sun console can't handle the 'al' capability of the termcap
111    entry (the il1 capability of terminfo entries).  If you delete that
112    entry from your terminfo/termcap information everything should work
113    correctly.
114
115 Q: I don't have a version of ctags (or I have ctags, but it doesn't tag
116    nearly enough things)!
117 A: There's a version of ctags available on the 4.4BSD-Lite distributions,
118    as well as the FreeBSD, NetBSD, Linux and GNU distributions.  Or, you
119    might want to try Exuberant Ctags:
120
121         Title:          Exuberant Ctags
122         Version:        1.3
123         Entered-date:   16JUN96
124         Description:
125             A better ctags which generates tags for all possible tag types:
126             macro definitions, enumerated values (values inside enum{...}),
127             function and method definitions, enum/struct/union tags, external
128             function prototypes (optional), typedefs, and variable
129             declarations. It is far less easily fooled by code containing #if
130             preprocessor conditional constructs, using a conditional path
131             selection algorithm to resolve complicated choices, and a
132             fall-back algorithm when this one fails. Can also be used to print
133             out a list of selected objects found in source files.
134         Keywords:       ctags, tags, exuberant
135         Author:         darren@sirsi.com (Darren Hiebert)
136                         darren@hiwaay.net (Darren Hiebert)
137         Maintained-by:  darren@sirsi.com (Darren Hiebert)
138                         darren@hiwaay.net (Darren Hiebert)
139         Primary-site:   sunsite.unc.edu /pub/Linux/devel/lang/c
140                         27kB ctags-1.3.tar.gz
141         Alternate-site: ftp.halcyon.com /local/gvr
142                         27kB ctags-1.3.tar.gz
143         Original-site:
144         Platforms:      UNIX, MSDOS, WindowsNT, Windows95, OS/2, Amiga
145         Copying-policy: Public domain
146
147 Q: When I update a file I already have open, and use :e to reread it, I
148    get nul's for the rest of the file!
149 A: Your system's implementation of mmap(2) has a bug; you will have to
150    exit vi and re-execute it.
151
152 Q: Where can I get cscope?
153 A: Cscope is available on UNIXWare System V Release 4.0 variants such as
154    Sun Solaris 2.x (/opt/SUNWspro/bin) and UNIXWare System V Release 4.1.
155
156    You can buy version 13.3 source with an unrestricted license for $400
157    from AT&T Software Solutions by calling +1-800-462-8146.  Binary
158    redistribution of cscope is an additional $1500, one-time flat fee.
159
160    For more information, see http://www.unipress.com/att/new/cscope.html.