📄 ch30_04.htm
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 30] 30.4 Editing Multiple Files with vi </TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly & Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly & Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:45:21Z"><METANAME="DC.type"CONTENT="Text.Monograph"><METANAME="DC.format"CONTENT="text/html"SCHEME="MIME"><METANAME="DC.source"CONTENT="1-56592-260-3"SCHEME="ISBN"><METANAME="DC.language"CONTENT="en-US"><METANAME="generator"CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"><LINKREV="made"HREF="mailto:online-books@oreilly.com"TITLE="Online Books Comments"><LINKREL="up"HREF="ch30_01.htm"TITLE="30. vi Tips and Tricks"><LINKREL="prev"HREF="ch30_03.htm"TITLE="30.3 Mice vs. vi "><LINKREL="next"HREF="ch30_05.htm"TITLE="30.5 Edits Between Files "></HEAD><BODYBGCOLOR="#FFFFFF"TEXT="#000000"><DIVCLASS="htmlnav"><H1><IMGSRC="gifs/smbanner.gif"ALT="UNIX Power Tools"USEMAP="#srchmap"BORDER="0"></H1><MAPNAME="srchmap"><AREASHAPE="RECT"COORDS="0,0,466,58"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="467,0,514,18"HREF="jobjects/fsearch.htm"ALT="Search this book"></MAP><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch30_03.htm"TITLE="30.3 Mice vs. vi "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 30.3 Mice vs. vi "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 30<BR>vi Tips and Tricks</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch30_05.htm"TITLE="30.5 Edits Between Files "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 30.5 Edits Between Files "BORDER="0"></A></TD></TR></TABLE> <HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-6150">30.4 Editing Multiple Files with vi </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-32627"></A><ACLASS="indexterm"NAME="AUTOID-32630"></A><ACLASS="indexterm"NAME="AUTOID-32633"></A><ACLASS="indexterm"NAME="AUTOID-32636"></A><ACLASS="indexterm"NAME="AUTOID-32639"></A><ACLASS="indexterm"NAME="AUTOID-32642"></A><ACLASS="indexterm"NAME="AUTOID-32645"></A><ACLASS="indexterm"NAME="AUTOID-32649"></A><EMCLASS="emphasis">ex</EM> commands enable you to switch between multiple files.The advantage is speed. When you are sharing the system withother users, it takes time to exit and re-enter <EMCLASS="emphasis">vi</EM> for eachfile you want to edit. Staying in thesame editing session and traveling between files is not only fasterfor access, but you also save abbreviations and command sequences that you have defined,and you keep <SPANCLASS="link">yank buffers (<ACLASS="linkend"HREF="ch30_05.htm"TITLE="Edits Between Files ">30.5</A>)</SPAN>so that you can copy text from one file to another.</P><PCLASS="para">When you first invoke <EMCLASS="emphasis">vi</EM>, you can name more than one fileto edit, and then use <EMCLASS="emphasis">ex</EM> commands totravel between the files:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">% <CODECLASS="userinput"><B>vi file1 file2</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para">This edits <EMCLASS="emphasis">file1</EM> first. After you have finished editing thefirst file, the <EMCLASS="emphasis">ex</EM> command <CODECLASS="literal">:w</CODE> writes (saves) <EMCLASS="emphasis">file1</EM>and <CODECLASS="literal">:n</CODE> calls in the next file (<EMCLASS="emphasis">file2</EM>). You can evensay <CODECLASS="literal">vi *</CODE> to edit all the files in a directory. TypeCTRL-g or <CODECLASS="literal">:f</CODE> to get the name of your current file;<CODECLASS="literal">:args</CODE> lists all filenames from the command line and putsbrackets around the <CODECLASS="literal">[</CODE><CODECLASS="replaceable"><I>current</I></CODE><CODECLASS="literal">]</CODE> file.</P><PCLASS="para">You can also switch at any time to another file that you didn'tspecify on the command line with the <EMCLASS="emphasis">ex</EM> command <CODECLASS="literal">:e</CODE>. Ifyou want to edit another file within <EMCLASS="emphasis">vi</EM>, you first need to saveyour current file (<CODECLASS="literal">:w</CODE>), then you can type the following command:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen"><CODECLASS="userinput"><B>:e</B></CODE> <CODECLASS="replaceable"><I>filename</I></CODE></PRE></BLOCKQUOTE></P><PCLASS="para"><EMCLASS="emphasis">vi</EM> "remembers" two filenames at a time as the current andalternate filenames.These can be referred to by the symbols <CODECLASS="literal">%</CODE> (current filename)and <CODECLASS="literal">#</CODE> (alternate filename).</P><PCLASS="para"><CODECLASS="literal">#</CODE> is particularly useful with <CODECLASS="literal">:e</CODE>, since it allows you toswitch easily back and forth between two files.The command <CODECLASS="literal">:e#</CODE> is always "switch to the other one."(On some systems, the <EMCLASS="emphasis">vi</EM> command CTRL-<CODECLASS="literal">^</CODE>(control-caret) is a synonym for<CODECLASS="literal">:e#</CODE>.)</P><PCLASS="para">If you have not first saved the current file, <EMCLASS="emphasis">vi</EM> will not allowyou to switch files with <CODECLASS="literal">:e</CODE> or <CODECLASS="literal">:n</CODE> unless you tell itimperatively to do so by adding an exclamation point after the command.</P><PCLASS="para">The command:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen"><CODECLASS="userinput"><B>:e!</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para">is also useful.It discards your edits and returns to the last savedversion of the current file.</P><PCLASS="para">In contrast to the <CODECLASS="literal">#</CODE> symbol, <CODECLASS="literal">%</CODE> is useful mainly when writing out the contents of the current buffer to a new file.For example, you could save a secondversion of the file <EMCLASS="emphasis">letter</EM> with the command:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen"><CODECLASS="userinput"><B>:w %.new</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para"> instead of:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen"><CODECLASS="userinput"><B>:w letter.new</B></CODE></PRE></BLOCKQUOTE></P><DIVCLASS="sect1info"><PCLASS="SECT1INFO">- <SPANCLASS="authorinitials">LL</SPAN> <SPANCLASS="bibliomisc">from O'Reilly & Associates' <CITECLASS="citetitle">Learning the vi Editor</CITE>, Chapter 5</SPAN></P></DIV></DIV><DIVCLASS="htmlnav"><P></P><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch30_03.htm"TITLE="30.3 Mice vs. vi "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 30.3 Mice vs. vi "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="book"HREF="index.htm"TITLE="UNIX Power Tools"><IMGSRC="gifs/txthome.gif"SRC="gifs/txthome.gif"ALT="UNIX Power Tools"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch30_05.htm"TITLE="30.5 Edits Between Files "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 30.5 Edits Between Files "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">30.3 Mice vs. vi </TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="index"HREF="index/idx_0.htm"TITLE="Book Index"><IMGSRC="gifs/index.gif"SRC="gifs/index.gif"ALT="Book Index"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172">30.5 Edits Between Files </TD></TR></TABLE><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><IMGSRC="gifs/smnavbar.gif"SRC="gifs/smnavbar.gif"USEMAP="#map"BORDER="0"ALT="The UNIX CD Bookshelf Navigation"><MAPNAME="map"><AREASHAPE="RECT"COORDS="0,0,73,21"HREF="../index.htm"ALT="The UNIX CD Bookshelf"><AREASHAPE="RECT"COORDS="74,0,163,21"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="164,0,257,21"HREF="../unixnut/index.htm"ALT="UNIX in a Nutshell"><AREASHAPE="RECT"COORDS="258,0,321,21"HREF="../vi/index.htm"ALT="Learning the vi Editor"><AREASHAPE="RECT"COORDS="322,0,378,21"HREF="../sedawk/index.htm"ALT="sed & awk"><AREASHAPE="RECT"COORDS="379,0,438,21"HREF="../ksh/index.htm"ALT="Learning the Korn Shell"><AREASHAPE="RECT"COORDS="439,0,514,21"HREF="../lrnunix/index.htm"ALT="Learning the UNIX Operating System"></MAP></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -