[BACK]Return to FAQ CVS log [TXT][DIR] Up to [local] / src / usr.bin / vi

Annotation of src/usr.bin/vi/FAQ, Revision 1.4

1.4     ! downsj      1: @(#)FAQ        8.13 (Berkeley) 10/14/96
1.1       deraadt     2:
1.2       michaels    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
1.1       deraadt     5:    is printable, or should be displayed as an octal or hexadecimal value
1.2       michaels    6:    on the screen.  Generally, if vi is displaying printable characters
1.1       deraadt     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
1.3       michaels   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.
1.1       deraadt    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
1.2       michaels   34:    whether the put text came from a named or unnamed buffer!  Vi follows
1.1       deraadt    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:
1.2       michaels   56: Q: When I edit binary files, vi appends a <newline> to the last line!
1.1       deraadt    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:
1.2       michaels   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
1.1       deraadt    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
1.2       michaels   74:    "lock" edit option will keep vi from attempting to acquire any locks
1.1       deraadt    75:    on the files you edit.
1.2       michaels   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
1.3       michaels  102:    curses implementation provided with vi or a curses replacement such
                    103:    as ncurses.  Eric Raymond is one of the maintainers of the freely
1.2       michaels  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.
1.4     ! downsj    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.