VI ¿¡µðÅÍ 120% »ç¿ëÇϱâ
ÀÛ¼ºÀÏ: 1998³â 4¿ù 26ÀÏ ÀÛ¼ºÀÚ: ¾Èâ¼±(csan@coresw.co.kr, http://genesis.yonsei.ac.kr/~kabin) Âü°í¼Àû: O'Reilly Learning the vi Editor Usenet net.unix O'Reilly Unix Power Tools
1. ÇÑ ÆÄÀÏÀÇ ÀϺκÐÀ» ´Ù¸¥ ÆÄÀÏ·Î º¹»çÇϱ⠸í·É ¼³¸í
----------------------------------------------------------------
"f4yy ÇöÀç¶óÀκÎÅÍ 4¶óÀÎÀ» 'f'¶ó´Â À̸§ÀÇ ¹öÆÛ¿¡ º¹»çÇÑ´Ù.
:w ÆíÁýÁßÀÎ ÆÄÀÏÀ» ÀúÀåÇÑ´Ù.
:e newfile »õ·Î¿î ÆÄÀÏÀ» ·ÎµåÇÑ´Ù.
"fp »õ·Î¿î ÆÄÀÏÀÇ ÇöÀç ¶óÀÎÀ§Ä¡¿¡ 'f'¶õ´Â À̸§À¸·Î ÀúÀåÇØ
µÎ¾ú´ø ³»¿ëÀ» º¹»çÇÑ´Ù.
----------------------------------------------------------------
2. VI°¡ ±â¾ïÇÏ´Â µÎ°¡Áö ÆÄÀϸí(%, #) vi¿¡µðÅÍ¿¡¼ ÆÄÀÏ ÆíÁýÀ» ÇÒ¶§ »ç¿ëÇÏ´Â µÎ°¡Áö ex ¸í·ÉÀÌ ÀÖ´Ù.
´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ.. :e file1 file2 À§ÀÇ ¸í·ÉÀ» ½ÇÇàÇϸé file1À» ÆíÁýÇϰí ÀÖ´Â »óŰ¡ µÇ°Ô µÈ´Ù.
ÀÌ »óÅ¿¡¼ :n À» ÀÔ·ÂÇϸé file2¸¦ ÆíÁýÇÏ°Ô µÈ´Ù. À̶§ ´ÙÀ½À» ÀÔ·ÂÇØº¸ÀÚ :e# ÀÌ ¸í·ÉÀ» ÀÔ·ÂÇϸé VI´Â ´Ù½Ã file1À» ÆíÁýÇÏ°Ô µÇ°í À̶§ ´Ù½Ã :e#¸¦
ÀÔ·ÂÇϸé file2¸¦ ÆíÁýÇÏ°Ô µÈ´Ù. ¸¸¾à À̶§ ¶Ç ´Ù½Ã :e#¸¦ ÀÔ·ÂÇÏ°Ô µÇ¸é
file1À» ÆíÁýÇÏ°Ô µÈ´Ù. Áï #ÀÇ ¶æÀº '¼±ÅÃÀûÀÎ ´Ù¸¥ ÇϳªÀÇ ÆÄÀÏ'À»
¶æÇÏ°Ô µÈ´Ù´Â °ÍÀÌ´Ù. ¶ÇÇÑ %ÀÇ ¶æÀ» ¾Ë¾Æº¸ÀÚ. %´Â ÇöÀçÀÇ ÆÄÀϸíÀ» ¶æÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½À» ÀÔ·ÂÇØ
º¸ÀÚ. :w %.new ÀÌ ¸í·ÉÀ» ÇöÀç ÆíÁýÁßÀÎ ÆÄÀÏÀ» ±× ÆÄÀÏ¿¡ .new¸¦ ´õÇÑ À̸§À¸·Î ÆÄÀÏÀ»
´Ù½Ã ÀúÀåÇÏ°Ô µÈ´Ù. Áï À§ÀÇ ¸í·ÉÀ» ÀÔ·ÂÇÒ¶§ ÆíÁýÁßÀÌ´ø ÆÄÀϸíÀÌ filename
À̾ú´Ù¸é À§ÀÇ ¸í·ÉÀ¸·Î ÀúÀåµÇ´Â ÆÄÀÏÀº filename.new ¶ó´Â ÆÄÀÏÀÌ µÈ´Ù.
3. ã±â ÆÐÅϰú ±Û·Î¹ú ¸í·É * ã±â ÆÐÅÏ ¸í·É ¼³¸í
-----------------------------------------------------------
:/pattern/d patternÀ» Æ÷ÇÔÇÑ ´ÙÀ½ ¶óÀÎÀ» »èÁ¦
:/pattern/+d patternÀ» Æ÷ÇÔÇÑ ¶óÀÎÀÇ ±× ´ÙÀ½ ¶óÀÎÀ» »èÁ¦
(+d ´ë½Å +1À» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.)
:/pattern1/,/pattern2/d pattern1À» ãÀº °÷ºÎÅÍ pattern2°¡ ÀÖ´Â
À§Ä¡ ±îÁö¸¦ »èÁ¦
:.,/pattern/m23 ÇöÀç¶óÀκÎÅÍ patternÀÌ ÀÖ´Â °÷±îÁö¸¦
23¶óÀÎ ´ÙÀ½À¸·Î ¿Å±ä´Ù.
-------------------------------------------------------------
À§¿¡¼ ÁÖÀÇÇÒ Á¡ÀÌ ÀÖ´Ù. Áï VI¸í·É°ú EX¸í·É¿¡¼ ¾à°£ ´Ù¸£°Ô
ÀÛµ¿µÇ´Â ¸éÀÌ ÀÖ´Ù´Â °ÍÀÌ´Ù. Áï
d/while °ú :.,/while/d °¡ Ʋ¸®°Ô ÀÛµ¿µÈ´Ù´Â °ÍÀ̵¥ ÀüÀÚ´Â whileÀÌ Àִ°÷
Àü ¶óÀαîÁö »èÁ¦µÇ°í ÈÄÀÚ´Â whileÀÌ ¹ß»ýµÈ ¶óÀαîÁö »èÁ¦°¡ µÈ´Ù. * ±Û·Î¹ú ¸í·É ¸í·É ¼³¸í
------------------------------------------------------------------
:g/pattern/ ÆÄÀÏ¿¡¼ patternÀÌ Ã£¾ÆÁö´Â ¸¶Áö¸· À§Ä¡·Î À̵¿
:g/pattern/p ÆÄÀÏ¿¡¼ patternÀ» ã¾Æ ȸ鿡 printÇØÁØ´Ù.
:g!/pattern/nu ÆÄÀÏ¿¡¼ patternÀÌ ¾ø´Â ¶óÀÎÀ» ã¾Æ ¶óÀÎ ¹øÈ£¸¦
printÇØ ÁØ´Ù. À̰ÍÀ» ÀÌ¿ëÇØ patternÀÌ ³ªÅ¸³ª´Â
Ƚ¼ö¸¦ Ä«¿îÆÃ ÇÒ ¼ö ÀÖ´Ù.
:60,124g/pattern/p 60¿¡¼ 124¶óÀαîÁö patternÀ» ã¾Æ printÇØÁØ´Ù.
-------------------------------------------------------------------
¶ÇÇÑ ±Û·Î¹ú ¸í·ÉÀº ´ÙÀ½°ú °°ÀÌ ´ëÄ¡ ¸í·É°ú °°ÀÌ ¾²Àϼö ÀÖ´Ù. :g/^WARNING:/s/\<not\>/NOT/ À§ÀÇ ¸í·ÉÀº ¶óÀÎÀÇ Ã³À½¿¡ WARNING: À¸·Î ½ÃÀÛÇÏ´Â ¶óÀÎÀ» ã¾Æ¼ ±× ¶óÀο¡
ÇϳªÀÇ ´Ü¾î(¾çÂÊ¿¡ °ø¹éÀ¸·Î Á¸ÀçÇϰųª ¾çÂÊ¿¡ TABÀ̳ª newlineµîÀÌ ÀÖ´Â)·Î
Á¸ÀçÇÏ´Â notÀÌ ÀÖÀ» °æ¿ì¿¡ À̰ÍÀ» NOTÀ¸·Î ±³Ã¼ Ç϶ó´Â ¸í·ÉÀÌ´Ù.
4. ÆÄÀÏÀÇ ÀϺκи¸ ÀúÀå ¸í·É ¼³¸í
------------------------------------------------------------------
:230,$w newfile 230¶óÀκÎÅÍ ³¡±îÁö newfile·Î ÀúÀå
:.,600w newfile ÇöÀç¶óÀκÎÅÍ 600¶óÀαîÁö newfile·Î ÀúÀå
------------------------------------------------------------------
5. ÆÐÅϸí·ÉÀ» ÅëÇØ ºí·°À» ¿Å±â±â :g/SYNTAX/,/DESCRIPTION/-1 mo /PARAMETERS/-1 À§ ¸í·ÉÀº SYNTAX°¡ óÀ½ ¹ß°ßµÇ´Â À§Ä¡ºÎÅÍ DESCRIPTIONÀÌ ¹ß°ßµÇ´Â À§Ä¡ÀÇ
¹Ù·Î Àü¶óÀαîÁö¸¦ PARAMETERS°¡ ¹ß°ßµÇ´Â ¹Ù·Î Àü¶óÀÎÀ¸·Î ¿Å±ä´Ù´Â ¶æÀÌ´Ù.
6. À§Ä¡ ÁöÁ¤ÇØ ³õ±â. ¸í·É ¼³¸í
------------------------------------------------------------------
mx : ÇöÀçÀÇ À§Ä¡¸¦ x¶ó°í ÁöÁ¤ÇØ ³õ´Â´Ù.(x ´Â ¼ýÀÚÀÌ¸é ¾ÈµÈ´Ù.)
'x x·Î ÁöÁ¤ÇÑ À§Ä¡ÀÇ ¶óÀÎÀ¸·Î ÇöÀçÀÇ À§Ä¡¸¦ ¿Å±ä´Ù.
`x x·Î ÁöÁ¤ÇÑ À§Ä¡ÀÇ ¶óÀÎ,¿·Î ÇöÀçÀÇ À§Ä¡¸¦ ¿Å±ä´Ù.
`` À§Ä¡¸¦ ¿Å±ä ÈÄ¿¡ ¹Ù·Î Àü¿¡ ÁöÁ¤ÇÑ À§Ä¡³ª contextÀÇ Á¤È®ÇÑ
À§Ä¡·Î µ¹¾Æ°¨
'' ¹Ù·Î Àü¿¡ ÁöÁ¤ÇÑ À§Ä¡³ª context ¶óÀÎÀÇ ½ÃÀÛÀ¸·Î µ¹¾Æ°¨.
------------------------------------------------------------------
7. ÅØ½ºÆ®¸¦ À¯´Ð½º ¸í·ÉÀ¸·Î ÇÊÅ͸µ ÇÏ±â ÆíÁýÁßÀÎ ³»¿ëÀ» À¯´Ð½º ¸í·ÉÀ¸·Î ÇÊÅ͸µ ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î 1¶óÀκÎÅÍ
10¶óÀαîÁö¸¦ À¯´Ð½º ¸í·ÉÀÎ sort¸¦ ÅëÇØ sortÇÒ ¼öµµ ÀÖ°í Æ¯Á¤ ºí·°À»
ƯÁ¤»ç¶÷¿¡°Ô ¸ÞÀÏ·Î º¸³¾ ¼öµµ ÀÖ´Ù. ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î »ç¿ëµÈ´Ù. ¸í·É ¼³¸í
-------------------------------------------------------------------
:1,99!sort 1¶óÀκÎÅÍ 99¶óÀαîÁö¸¦ À¯´Ð½ºÀÇ sort¸í·É¿¡°Ô º¸³»
±Û °á°ú °ªÀ¸·Î ´ëÄ¡ÇÑ´Ù.
!)command Àüü¶óÀÎÀ» command¿¡°Ô º¸³» ±× °á°ú °ªÀ¸·Î ´ëÄ¡ÇÑ´Ù.
!!command ÇöÀç¶óÀÎÀ» command¿¡°Ô º¸³»°í ±× °á°ú °ªÀ¸·Î ´ëÄ¡ÇÑ´Ù.
4!!command ÇöÀç¶óÀκÎÅÍ 4¶óÀÎÀ» command¿¡°Ô º¸³» ±Û °á°ú·Î ´ëÄ¡ÇÑ´Ù.
---------------------------------------------------------------------
8. ´ÜÃàŰ »ç¿ë ¸í·É ¼³¸í
--------------------------------------------------------------------
:ab abbr phrase abbrÀ» phrase¿¡ ´ëÇÑ ´ÜÃàŰ·Î »ç¿ë
:unab abbr abbr¿¡ ´ëÇÑ ´ÜÃàŰ ¼³Á¤À» ÇØÁ¦
--------------------------------------------------------------------
¸í·ÉÀ¸·Î ´ÜÃàŰ »ç¿ë ¸í·É ¼³¸í
---------------------------------------------------------------------
:ab aW w! /tmp/fly.tmp.a
:ab aR r /tmp/fly.tmp.a
:ab bW w! /tmp/fly.temp.b
:ab bR r /tmp/fly.temp.b
---------------------------------------------------------------------
À§ ó·³ ¼³Á¤À» ÇØ ³õÀº ´ÙÀ½¿¡ :.,+45 aW ÀÌ·¸°Ô ¸í·ÉÀ» ³»¸®¸é
ÇöÀç¶óÀκÎÅÍ 45¶óÀαîÁö¸¦ /tmp/fly.tmp.a ÆÄÀÏ·Î ÀúÀåÇÏ°Ô µÇ´Â °ÍÀÌ´Ù.
9. º¹»ç »èÁ¦ ¹× ¶óÀθðµå, ¹®ÀÚ ¸ðµå ¸í·É ¸í·É ¼³¸í
---------------------------------------------------------------------
yy 1¶óÀÎ ¹öÆÛ¿¡ ÀúÀå
"fyy 1¶óÀÎÀ» ¹öÆÛ f¿¡ ÀúÀå
dd 1¶óÀÎ »èÁ¦(»èÁ¦µÈ ³»¿ëÀº ¹öÆÛ¿¡ ÀúÀåµÊ)
2dd 2¶óÀÎ »èÁ¦(»èÁ¦µÈ ³»¿ëÀº ¹öÆÛ¿¡ ÀúÀå)
d$ Çö À§Ä¡ºÎÅÍ ±× ¶óÀÎÀÇ ³¡±îÁö »èÁ¦
À̶§ $ÀÇ À§Ä¡¿¡´Â ¹®ÀÚ ¸ðµåÀÇ ¸í·ÉµéÀÌ ¸ðµÎ ¾²Àϼö ÀÖÀ½
¿¹¸¦ µé¾î, d^, dfa, dG µîµî
ddp ÇöÀç¶óÀÎÀ» »èÁ¦ÇÏ°í »èÁ¦µÇ¾î ¹öÆÛ¿¡ ÀúÀåµÈ ³»¿ëÀ» ÇöÀç¶óÀÌÀÇ
´ÙÀ½ ¶óÀο¡ º¹»ç(Áï, ÇöÀç¶óÀΰú ´ÙÀ½¶óÀÎÀ» ¹Ù²Þ)
D d$¿Í °°Àº¶æ
C c$¿Í °°Àº¶æ(ÇöÀçÀ§Ä¡ºÎÅÍ ¶óÀÎÀÇ ³¡±îÁö ¼öÁ¤)
Y yy¿Í °°Àº¶æ
d'a ÇöÀç¶óÀκÎÅÍ a·Î ÁöÁ¤ÇØ ³õÀº À§Ä¡ÀÇ ¶óÀαîÁö »èÁ¦
d`a ÇöÀç¶óÀκÎÅÍ a·Î ÁöÁ¤ÇØ ³õÀº À§Ä¡ÀÇ ¶óÀÎ,Ä÷³±îÁö »èÁ¦
c/pattern/ ÇöÀç¶óÀκÎÅÍ patternÀÌ ³ª¿À´Â À§Ä¡±îÁöÀÇ ¸ðµç ¹®ÀÚ¸¦
¼öÁ¤(¶óÀθðµå°¡ ¾Æ´Ô)
c?pattern? patternÀ» Æ÷ÇÔ
<G ÇöÀç¶óÀκÎÅÍ ÆíÁýÁßÀÎ ÆÄÀÏÀÇ ³¡±îÁö indent»èÁ¦(dedent)
----------------------------------------------------------------------
10. Àӽà ¿µ¿ªÀÌ ²ËÂû °æ¿ì ÀÀ±ÞÁ¶Ä¡ Àӽÿµ¿ªÀÌ ³ÑÃļ vi¿¡µðÅͰ¡ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â °æ¿ì°¡ ÀÖ´Ù.
À̶§´Â Àӽÿµ¿ªÀÇ À§Ä¡¸¦ ¹Ù²Ù¾î ÁÖ¸é Á¤»èÀûÀ¸·Î ÆíÁýÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù.
set¸í·ÉÀ¸·Î(½©¿¡¼) directoryº¯¼öÀÇ À§Ä¡¸¦ ¹Ù²Ù¾î ÀÌ ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù. $ set directory=/usr/fly/vitemp ¸¸¾à À§ÀÇ ¸í·ÉÀ» vi³»¿¡¼ ÇÏ±æ ¿øÇÑ´Ù¸é À§ÀÇ ¸í·ÉÀ» vi¿¡¼ »ç¿ëÇÑ ÈÄ¿¡
:e command¸¦ »ç¿ëÇÏ¸é ÆíÁýÁßÀÌ ¸ðµç ÆÄÀÏÀÇ Àӽõð·ºÅ丮°¡ ¹Ù²î¾îÁú°ÍÀÌ´Ù. ¶ÇÇÑ EXINITȯ°æº¯¼öÀÇ °ªÀ» ¹Ù²Ù¾î ÀÌ ÀÏÀ» ÇÒ ¼öµµ ÀÖ´Ù. setenv EXINIT 'set directory=/usr/fly/vitemp'