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

📄 ch31_16.htm

📁 the unix power tools
💻 HTM
字号:
<HTML><!--Distributed by F --><HEAD><TITLE>[Chapter 31] 31.16 vi Macro for Splitting Long Lines </TITLE><METANAME="DC.title"CONTENT="UNIX Power Tools"><METANAME="DC.creator"CONTENT="Jerry Peek, Tim O'Reilly &amp; Mike Loukides"><METANAME="DC.publisher"CONTENT="O'Reilly &amp; Associates, Inc."><METANAME="DC.date"CONTENT="1998-08-04T21:46:29Z"><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="ch31_01.htm"TITLE="31. Creating Custom Commands in vi"><LINKREL="prev"HREF="ch31_15.htm"TITLE="31.15 Fooling vi into Allowing Complex Macros "><LINKREL="next"HREF="ch32_01.htm"TITLE="32. GNU Emacs"></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="ch31_15.htm"TITLE="31.15 Fooling vi into Allowing Complex Macros "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 31.15 Fooling vi into Allowing Complex Macros "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1">Chapter 31<BR>Creating Custom Commands in vi</FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="CHAPTER"HREF="ch32_01.htm"TITLE="32. GNU Emacs"><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 32. GNU Emacs"BORDER="0"></A></TD></TR></TABLE>&nbsp;<HRALIGN="LEFT"WIDTH="515"TITLE="footer"></DIV><DIVCLASS="SECT1"><H2CLASS="sect1"><ACLASS="title"NAME="UPT-ART-0436">31.16 vi Macro for Splitting Long Lines </A></H2><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-35758"></A>When you add text to the start of a line and make the line longer than yourscreen's width, <EMCLASS="emphasis">vi</EM> won't break (&quot;wrap&quot;) the line unless yourcursor crosses the <EMCLASS="emphasis">wrapmargin</EM> point near the right-hand edge ofthe screen.You can get lines that are too long.</P><TABLECLASS="para.programreference"BORDER="1"><TR><THVALIGN="TOP"><ACLASS="programreference"HREF="examples/index.htm"TITLE="exrc">exrc</A><BR></TH><TDVALIGN="TOP">Here are two macros that cut (Kut) the current line:&#13;</TD></TR></TABLE><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">map K 78^V|lBhr^Mmap K 078lF r^M</PRE></BLOCKQUOTE></P><PCLASS="para">The first macro doesn't seem to work on some versions of <EMCLASS="emphasis">vi</EM>.It's the better one though, because it uses the <CODECLASS="literal">|</CODE> (vertical bar)command to move to column 78, even if there are TABs in the line.Then it moves one more character to the right (if it can), moves back to the start of the word, moves back one more character onto the blank or tabbefore the word, and replaces that character with a RETURN.</P><PCLASS="para">The second macro counts TABs as single characters, but it works on everyversion of <EMCLASS="emphasis">vi</EM> I've tried.It moves to the left edge, then to the 79th character, then back to theprevious space.Finally, it replaces that space with a carriage return.</P><PCLASS="para">You might try adding a <CODECLASS="literal">J</CODE> to the start of either macro.That'll join the next line to the current one before cutting; it might make anicer &quot;wrap.&quot;Another way to do this is with a <SPANCLASS="link">filter-through (<ACLASS="linkend"HREF="ch30_22.htm"TITLE="Filtering Text Through a UNIX Command ">30.22</A>)</SPAN>and the<SPANCLASS="link"><EMCLASS="emphasis">fmt</EM> (<ACLASS="linkend"HREF="ch30_37.htm"TITLE="Neatening Lines ">30.37</A>)</SPAN>command:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen"><CODECLASS="userinput"><B>!!fmt</B></CODE></PRE></BLOCKQUOTE></P><PCLASS="para">That will break the current line at the 72nd column or before, though it alsomight change the spacing after periods (<CODECLASS="literal">.</CODE>) or replace leading TABs with spaces.<ACLASS="indexterm"NAME="AUTOID-35782"></A><ACLASS="indexterm"NAME="AUTOID-35783"></A><ACLASS="indexterm"NAME="AUTOID-35784"></A><ACLASS="indexterm"NAME="AUTOID-35785"></A></P><DIVCLASS="sect1info"><PCLASS="SECT1INFO">- <SPANCLASS="authorinitials">JP</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="ch31_15.htm"TITLE="31.15 Fooling vi into Allowing Complex Macros "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 31.15 Fooling vi into Allowing Complex Macros "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="CHAPTER"HREF="ch32_01.htm"TITLE="32. GNU Emacs"><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 32. GNU Emacs"BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">31.15 Fooling vi into Allowing Complex Macros </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">32. GNU Emacs</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 &amp; 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 + -