1@(#)FAQ 8.13 (Berkeley) 10/14/96 2 3Q: How can I get vi to display my character set? 4A: 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 29Q: My map won't work! 30A: 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 38Q: I'm using ksh or csh as my vi edit option shell value, and file 39 expansions don't work right! 40A: 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 47Q: How does the iclower edit option differ from the ignorecase (i.e. ic) 48 edit option? 49A: 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 56Q: When I edit binary files, vi appends a <newline> to the last line! 57A: 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 62Q: My cursor keys don't work when I'm in text input mode! 63A: 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 70Q: When I edit some files, vi seems to hang forever, and I have to kill it. 71A: 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 77Q: When I compile vi I get lots of warnings about pointer assignments 78 being incompatible! 79A: 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 84Q: I get jumpy scrolling behavior in the screen! 85A: 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 100Q: The entire screen repaints on every keystroke! 101A: 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 108Q: When I use vi on a Sun console (terminal type sun-34) the screen 109 is occasionally trashed, usually when exiting vi! 110A: 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 115Q: I don't have a version of ctags (or I have ctags, but it doesn't tag 116 nearly enough things)! 117A: There's a version of ctags available on the 4.4BSD-Lite distributions, 118 as well as the OpenBSD, FreeBSD, NetBSD, Linux and GNU distributions. 119 Or, you 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 147Q: 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! 149A: Your system's implementation of mmap(2) has a bug; you will have to 150 exit vi and re-execute it. 151 152Q: Where can I get cscope? 153A: 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. 161