{"id":97,"date":"2020-08-14T18:15:52","date_gmt":"2020-08-14T23:15:52","guid":{"rendered":"https:\/\/www.brezeale.com\/?p=97"},"modified":"2023-10-05T17:56:12","modified_gmt":"2023-10-05T22:56:12","slug":"vi-vim-notes","status":"publish","type":"post","link":"https:\/\/www.brezeale.com\/?p=97","title":{"rendered":"vi\/vim notes"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">I first created and posted these notes online on May 28, 2002.  They may be the most useful thing I ever do.  I collected most of these over the years from several sources, but I can&#8217;t give proper credit since those links are all dead now.<\/p>\r\n\r\n\r\n\r\n<p><strong>Changing Text<\/strong><\/p>\r\n<figure class=\"wp-block-table\"><table border=\"0\"><tbody>    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">cc<\/span><\/td>\r\n      <td width=\"616\">change a line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">C<\/span><\/td>\r\n      <td width=\"616\">change from current cursor position to the end-of-line <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">cw<\/span><\/td>\r\n      <td width=\"616\">change from current cursor position to the end of the word<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\">\r\n      <td><span class=\"exambox\">J<\/span><\/td>\r\n      <td>joins the next line to the current line (inserts a space between the two) <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">gJ<\/span><\/td>\r\n      <td width=\"616\">joins the next line to the current line (without a space) <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:12,24j<\/span><\/td>\r\n      <td width=\"616\">join lines 12 thru 24, leaving a space between each line.      <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">~<\/span><\/td>\r\n      <td width=\"616\">switch lower and upper cases<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">r<\/span><\/td>\r\n      <td width=\"616\">replace the current character with the next character typed<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">4rx<\/span><\/td>\r\n      <td width=\"616\"> replace next four characters with &#8220;x&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">R<\/span><\/td>\r\n      <td width=\"616\">overwrite until &lt;esc&gt;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">s<\/span><\/td>\r\n      <td width=\"616\">substitute the current character and go into insert mode. \r\n        Same as &#8220;<span class=\"exambox\">rxi &lt;ESC&gt;<\/span>&#8220;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">S<\/span><\/td>\r\n      <td width=\"616\">substitute the current line, erase it, and go into insert \r\n        mode, starting at the indentation of the line. Same as &#8220;cc&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&gt;&gt;<\/span><\/td>\r\n      <td width=\"616\">shift current line forward<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">3&gt;&gt;<\/span><\/td>\r\n      <td width=\"616\">shift three lines forward<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&gt;%<\/span><\/td>\r\n      <td width=\"616\">shift all lines until a matching brace or parenthesis<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&gt;}<\/span><\/td>\r\n      <td width=\"616\">shift to the end of the paragraph<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&gt;&#8217;m<\/span><\/td>\r\n      <td width=\"616\">shift to the marked line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&lt;&lt;<\/span><\/td>\r\n      <td width=\"616\">shift current line backward<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\">vEU<\/td>\r\n      <td width=\"616\">change from here to end of word to uppercase<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\">vEu<\/td>\r\n      <td width=\"616\">change from here to end of word to lowercase<\/td>\r\n    <\/tr>\r\n<\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p><strong>Copying and Pasting<\/strong><\/p>\r\n<figure class=\"wp-block-table\"><table border = 0><tbody><\/tbody>   <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">yl<\/span><\/td>\r\n      <td width=\"79%\">yank (copy) current character<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">yn<\/span><\/td>\r\n      <td width=\"79%\">yank n characters<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">yw<\/span><\/td>\r\n      <td width=\"79%\">yank the current word<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">yy<\/span><\/td>\r\n      <td width=\"79%\">yank the current line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\">Y<\/td>\r\n      <td width=\"79%\"> yank a line, same as &#8220;yy&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">nyy<\/span><\/td>\r\n      <td width=\"79%\">yank n lines of text<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">y$<\/span><\/td>\r\n      <td width=\"79%\">yank to end of line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">y)<\/span><\/td>\r\n      <td width=\"79%\">yank to the end of the sentence<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">y&#8217;x<\/span><\/td>\r\n      <td width=\"79%\">yank from current line to the mark <span class=\"exambox\">x<\/span> \r\n        (use <span class=\"exambox\">mx<\/span> to mark as <span class=\"exambox\">x<\/span>)<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">y\/word<\/span><\/td>\r\n      <td width=\"79%\">yank from current position to &quot;word&quot;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&#8220;ay&#8217;m<\/span><\/td>\r\n      <td width=\"79%\"> yank from here to the mark. Place this into the named buffer \r\n        &#8220;a&#8221;. This will also allow one to switch files using the &#8220;:e fn&#8221; or &#8220;:n \r\n        fn&#8221; command and then place the buffer back.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&#8220;ayy<\/span><\/td>\r\n      <td width=\"79%\"> yank current line into buffer a. <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&#8220;a3Y<\/span><\/td>\r\n      <td width=\"79%\"> yank three lines, place into buffer &#8220;a&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"> <span class=\"exambox\">&#8220;A3Y<\/span><\/td>\r\n      <td width=\"79%\"> append 3 lines, place into &#8220;a&#8221;. This allows one to build \r\n        up a buffer.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&#8220;ap<\/span><\/td>\r\n      <td width=\"79%\"> paste the contents of &#8220;a&#8221; back, below current line.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\">\r\n      <td height=\"41\"><span class=\"exambox\">&quot;zyy<br>\r\n        @z<\/span> <\/td>\r\n      <td height=\"41\"><p><span class=\"exambox\">&quot;zyy<\/span> places the highlighted text into buffer <span class=\"exambox\">z<\/span>; <span class=\"exambox\">@z<\/span> will run the contents of buffer <span class=\"exambox\">z<\/span>. This allows a search pattern to be written in the document and then reused.<\/p><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">p<\/span><\/td>\r\n      <td width=\"79%\">paste to the right of the cursor<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">P<\/span><\/td>\r\n      <td width=\"79%\">paste to the left of the cursor<\/td>\r\n    <\/tr>\r\n<\/table><\/figure>\r\n\r\n\r\n\r\n<p><strong>Deleting<\/strong><\/p>\r\n<figure class=\"wp-block-table\"><table><tbody>   <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">x<\/span><\/td>\r\n      <td width=\"485\">delete the character under the cursor<span class=\"exambox\"><\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">dd<\/span><\/td>\r\n      <td width=\"485\">delete the current line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">d^<\/span><\/td>\r\n      <td width=\"485\">delete from current cursor position to the beginning of \r\n        the line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">d$<\/span><\/td>\r\n      <td width=\"485\">delete from current cursor position to the end of the line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">dw<\/span><\/td>\r\n      <td width=\"485\">delete from current cursor position to the end of the word<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\">d3w<\/td>\r\n      <td width=\"485\"> delete three words<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\">\r\n      <td><span class=\"exambox\">3dd<\/span><\/td>\r\n      <td>delete three lines<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">d\/word<\/span><\/td>\r\n      <td width=\"485\">delete until you find <span class=\"exambox\">word<\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">dfx<\/span><\/td>\r\n      <td width=\"485\">delete from here until the character &#8220;x&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">D<\/span><\/td>\r\n      <td width=\"485\">delete everything to the end of the current line (same as <span class=\"exambox\">d$<\/span>) <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\">\r\n      <td><span class=\"exambox\">3dd<\/span><\/td>\r\n      <td>delete everything to the end of the current line and the following 2 lines <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">u<\/span><\/td>\r\n      <td width=\"485\">undo deletion<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\">U<\/td>\r\n      <td width=\"485\">undo the line you just changed<\/td>\r\n    <\/tr>\r\n<\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p><strong>Inserting<\/strong><\/p>\r\n<figure class=\"wp-block-table\"><table><tbody>    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">i<\/span><\/td>\r\n      <td width=\"469\">insert at the current character<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">I<\/span><\/td>\r\n      <td width=\"469\">insert at the beginning of the current line<span class=\"exambox\"><\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">20I &lt;ESC&gt;<\/span><\/td>\r\n      <td width=\"469\"> insert 20 dashes (-) at the beginning of the line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">a<\/span><\/td>\r\n      <td width=\"469\">append to the right of the current character<span class=\"exambox\"><\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">A<\/span><\/td>\r\n      <td width=\"469\">append at the end of the current line<span class=\"exambox\"><\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">o<\/span><\/td>\r\n      <td width=\"469\">insert a new line immediately following the current line<span class=\"exambox\"><\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">O<\/span><\/td>\r\n      <td width=\"469\">insert a new line immediately before the current line<\/td>\r\n    <\/tr>\r\n<\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p><strong>Moving<\/strong><\/p>\r\n<figure class=\"wp-block-table\"><table><tbody>   <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">h<\/span><\/td>\r\n      <td width=\"484\">move the cursor one character to the left<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">j<\/span><\/td>\r\n      <td width=\"484\">move the cursor one character down<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">k<\/span><\/td>\r\n      <td width=\"484\">move the cursor one character up<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">l<\/span><\/td>\r\n      <td width=\"484\">move the cursor one character to the right<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">0<\/span><\/td>\r\n      <td width=\"484\">move cursor to the beginning of the current line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">$<\/span><\/td>\r\n      <td width=\"484\">move cursor to the end of the current line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">w<\/span><\/td>\r\n      <td width=\"484\">move cursor forward a word<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">3w<\/span><\/td>\r\n      <td width=\"484\">move cursor forward three words<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">W<\/span><\/td>\r\n      <td width=\"484\"> move cursor forward, ignoring punctuation <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">b<\/span><\/td>\r\n      <td width=\"484\">move cursor back a word<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">B<\/span><\/td>\r\n      <td width=\"484\">move cursor back a word, ignoring punctuation<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">e<\/span><\/td>\r\n      <td width=\"484\">move cursor to the end of the word<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">E<\/span><\/td>\r\n      <td width=\"484\">move cursor to the end of the word, ignoring punctuation<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">G<\/span><\/td>\r\n      <td width=\"484\">move cursor to the last line of the file<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">nG<\/span><\/td>\r\n      <td width=\"484\">move cursor to the beginning of line n<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">1G<\/span><\/td>\r\n      <td width=\"484\">move to the first line of a file<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">n|<\/span><\/td>\r\n      <td width=\"484\">moves the cursor to the beginning of column n<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">f<\/span><\/td>\r\n      <td width=\"484\">find a character in the line, forward <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">fa<\/span><\/td>\r\n      <td width=\"484\">find the character &#8220;a&#8221; in the line, forward <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">2fa<\/span><\/td>\r\n      <td width=\"484\">find the second occurrence of &#8220;a&#8221; in the line, forward <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">F<\/span><\/td>\r\n      <td width=\"484\">find a character in the line, backward <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">Fz<\/span><\/td>\r\n      <td width=\"484\">find the character &#8220;z&#8221; in the line, backward<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">t<\/span><\/td>\r\n      <td width=\"484\">find up to a character in the line, forward <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">)<\/span><\/td>\r\n      <td width=\"484\">jump to the next sentence<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">}<\/span><\/td>\r\n      <td width=\"484\">jump to the next paragraph<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">]<\/span><\/td>\r\n      <td width=\"484\">jump to the next section<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">%<\/span><\/td>\r\n      <td width=\"76%\">find matching brace or parenthesis<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">^b<\/span><\/td>\r\n      <td width=\"484\">scroll backwards one page. A count scrolls that many pages \r\n      <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">^f<\/span><\/td>\r\n      <td width=\"484\">scroll forwards one page. A count scrolls that many pages<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">^u<\/span><\/td>\r\n      <td width=\"484\">scroll up half a screen<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">^d<\/span><\/td>\r\n      <td width=\"484\">scroll down half a screen<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">z &lt;enter&gt;<\/span><\/td>\r\n      <td width=\"484\">put current line at top of screen<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">z.<\/span><\/td>\r\n      <td width=\"484\">put current line at middle of screen<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">z-<\/span><\/td>\r\n      <td width=\"484\">put current line at bottom of screen<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"23\"><span class=\"exambox\">m<\/span><\/td>\r\n      <td width=\"484\" height=\"23\">start a mark, the next character is the name, \r\n        any character from a-z<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">ma<\/span><\/td>\r\n      <td width=\"484\">mark this spot with the character &#8220;a&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&#8216;a<\/span><\/td>\r\n      <td width=\"484\">return to the line marked &#8220;a&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">`a<\/span><\/td>\r\n      <td width=\"484\">return to the character marked &#8220;a&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&#8221;<\/span><\/td>\r\n      <td width=\"484\">return to previous line (auto-mark)<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&#8220;<\/span><\/td>\r\n      <td width=\"484\">return to previous character (auto-mark)<\/td>\r\n    <\/tr>\r\n<\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p><strong>Search and Replace<\/strong><\/p><figure class=\"wp-block-table\"><table><tbody>    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"23\"><span class=\"exambox\">\/word<\/span><\/td>\r\n      <td width=\"77%\" height=\"23\">search forward for <span class=\"example\">word<\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\">\r\n      <td><span class=\"exambox\">?word<\/span><\/td>\r\n      <td>search backward for <span class=\"example\">word<\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">?word?z.<\/span><\/td>\r\n      <td width=\"77%\"><pre>search forward for <span class=\"example\">word<\/span>, put line at the middle of screen<\/pre><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">n<\/span><\/td>\r\n      <td width=\"77%\">jump forward to next occurance of word<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">N<\/span><\/td>\r\n      <td width=\"77%\">jump backward to next occurance of word<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"23\"><span class=\"exambox\">*<\/span><\/td>\r\n      <td width=\"77%\" height=\"23\">search forward for word under cursor <b>(vim)<\/b><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">#<\/span><\/td>\r\n      <td width=\"77%\">search backward for word under cursor <b>(vim)<\/b><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">g*<\/span><\/td>\r\n      <td width=\"77%\">search forward for word under cursor (partial match) <b>(vim) \r\n        <\/b><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">g#<\/span><\/td>\r\n      <td width=\"77%\">search backward for word under cursor (partial match) <b>(vim) \r\n        <\/b><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:noh<\/span><\/td>\r\n      <td width=\"77%\">stop highlighting the word that was searched for<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:s\/old\/new\/<\/span><\/td>\r\n      <td width=\"77%\"> replaces first occurence of <span class=\"example\">old<\/span> with <span class=\"example\">new<\/span> on current \r\n        line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:s\/old\/new\/g<\/span><\/td>\r\n      <td width=\"77%\">globally replaces <span class=\"example\">old<\/span> with <span class=\"example\">new<\/span> on current line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%s\/old\/new\/g<\/span><\/td>\r\n      <td width=\"77%\">globally replaces <span class=\"example\">old<\/span> with <span class=\"example\">new<\/span> on all lines<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:s\/old\/new\/gc<\/span><\/td>\r\n      <td width=\"77%\">confirms replacements<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%s\/^V^M\/\/g<\/span><\/td>\r\n      <td width=\"77%\">globally remove DOS carriage returns<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%s\/,\/^V^M\/g<\/span> \r\n        <p><\/p>      <\/td>\r\n      <td width=\"77%\">globally replace commas with newlines (yes, I know this \r\n        looks like it would insert DOS carriage returns, but it only inserts the newlines on Unix)<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%s\/\\s*$\/\/<\/span><\/td>\r\n      <td width=\"77%\">strip blanks from end of lines<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%s\/^.\\{30}\/\/<\/span><\/td>\r\n      <td width=\"77%\">remove the first 30 characters from each line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%s\/[ ^I]*$\/!d<\/span><\/td>\r\n      <td width=\"77%\">remove trailing whitespace (where <span class=\"exambox\">^I<\/span> \r\n        is produced by pressing the tab key)<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%s\/.*\/\\L&#038;\/ <\/span><\/td>\r\n      <td width=\"77%\">convert the entire file to lowercase. <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:s\/.*\/\\u&#038;\/<\/span><\/td>\r\n      <td width=\"77%\">convert the first character of line to uppercase. <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"104\"><span class=\"exambox\">:%s\/\\&lt;.\/\\u&amp;\/g \r\n        <\/span><\/td>\r\n      <td width=\"77%\" height=\"104\"> \r\n        <p>convert the first character of each word to uppercase<\/p>\r\n        <blockquote> \r\n          <p><span class=\"exambox\">\\&lt;<\/span> matches the start of a word;<br>\r\n            <span class=\"exambox\">.<\/span> therefore matches the first character of a word;<br>\r\n            <span class=\"exambox\">\\u<\/span> tells Vi(m) to uppercase the next character in the substitution \r\n            string;<br>\r\n            <span class=\"exambox\">&amp;<\/span> means substitute whatever was matched on the lhs;<\/p>\r\n        <\/blockquote>      <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:s\/book{.\/\\L&amp;\/<\/span><\/td>\r\n      <td width=\"77%\">convert the first character after the { to lowercase.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:&#8217;x,.s\/\\([a-z]\\)=\/\\1 \r\n        =\/<\/span><\/td>\r\n      <td width=\"77%\">replace any lowercase character in the alphabet followed \r\n        by an equal sign with the same character followed by a space and an equal \r\n        sign, e.g., book= &gt;&gt; book =<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\">:<span class=\"exambox\">:%s\/\\(That\\) or \r\n        \\(this\\)\/\\2 or \\1\/<\/span><\/td>\r\n      <td width=\"77%\">change &quot;that or this&quot; to &quot;this or that&quot;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\">:<span class=\"exambox\">:%s\/\\(^\\\\foilhead{\\(.*\\)}\\)\/<br>\r\n        %\\1^M\\\\section{\\2}\/<\/span><\/td>\r\n      <td width=\"77%\">comment out each line beginning with &#8216;\\foilhead&#8217; and replace \r\n        with a line beginning with &#8216;\\section&#8217;; note the nested backreferences \r\n        for keeping the rest of the line the same<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\">:<span class=\"exambox\">:%s\/\\(.*\\)\/&lt;a \r\n        href=&quot;\\1&quot;&gt;\\1&lt;\\\/a&gt;\/<\/span><\/td>\r\n      <td width=\"77%\">add HTML tags for references to files<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:s\/ \\(\\d\\{1,2}\\)\\.\\(\\d\\{1,2}\\)\\(.*\\)\/&lt;a \r\n        href=&quot;\\1-\\2.sh&quot;&gt;\\1.\\2\\3&lt;\\\/a&gt; <\/span> <\/td>\r\n      <td width=\"77%\"> \r\n        <p>change a line of the form<br>\r\n          <span class=\"exambox\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1 \r\n          Accessing Substring<\/span><br>\r\n          to<br>\r\n          <span class=\"exambox\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a \r\n          href=&quot;1-1.sh&quot;&gt;1.1 Accessing Substrings&lt;\/a&gt; <\/span>        <\/p>      <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><p class=\"exambox\">:&#8217;x,.s:^\\([^ ]\\+\\) \\(.*\\):<br>&lt;\\1&gt;\\1 \\2&lt;\\\/\\1&gt;&lt;br&gt;:<\/p>      <\/td>\r\n      <td width=\"77%\"> \r\n        <p>change a line of the form<br>\r\n          <span class=\"exambox\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KBD used for text to be typed by the user<\/span><br>\r\n          to<br>\r\n        <span class=\"exambox\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;KBD&gt;KBD used for text to be typed by the user&lt;\/KBD&gt;&lt;br&gt;<\/span><\/p>\r\n        <p>Colons are used here instead of the usual slashes for separating the &#8216;find&#8217; and &#8216;replace&#8217; parts. The part <span class=\"exambox\">^\\([^ ]\\+\\)<\/span> finds all of the characters up to the first space and saves them for use in the &#8216;replace&#8217; part as <span class=\"exambox\">\\1<\/span>.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:&#8217;x,.s\/^\/#\/<\/span><\/td>\r\n      <td width=\"77%\">insert a pound sign (#) at the beginning of the line from \r\n        the line marked with mx to the current line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%s\/word1\\nword2\/\/<\/span><\/td>\r\n      <td width=\"77%\">remove <span class=\"exambox\">word1<\/span> from the end of a line and <span class=\"exambox\">word2<\/span> from the beginning of the next line; <span class=\"exambox\">\\n<\/span> represents the newline between the two     <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:&amp;<\/span><\/td>\r\n      <td width=\"77%\">repeat previous substitution<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:&lt;up arrow&gt;<\/span><\/td>\r\n      <td width=\"77%\">recall : history<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:g\/string\/d<\/span><\/td>\r\n      <td width=\"77%\">deletes every line that contains <span class=\"example\">string<\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:g\/\\.c\/+|s\/^\/\\.cc\/<\/span><\/td>\r\n      <td width=\"77%\">look for all &#8220;.c&#8221; commands, jump to next line, substitute \r\n        the beginning of line with &#8220;.cc&#8221;.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:g\/^\\..*\/|s\/\/\\U&#038;\/<\/span><\/td>\r\n      <td width=\"77%\">convert all characters at beginning of line that start with \r\n        a &#8220;.&#8221; to upper case.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:v\/string\/d<\/span><\/td>\r\n      <td width=\"77%\">deletes every line that does not contain <span class=\"example\">string<\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"44\"> \r\n        <p><span class=\"exambox\">:g\/.*\/m0<\/span><\/p>      <\/td>\r\n      <td width=\"77%\" height=\"44\">This will reverse the order of the lines in \r\n        the current file. m0 is the ex command to move the line to line 0. <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"23\"> \r\n        <p><span class=\"exambox\">:v\/.\/d or :g\/^$\/d <\/span><\/p>      <\/td>\r\n      <td width=\"77%\" height=\"23\">Remove all blank lines. <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:g\/^\\s*$\/d<\/span><\/td>\r\n      <td width=\"77%\">Removes all lines that only have whitespace.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:v\/.\/.,\/.\/-1join \r\n        <\/span><\/td>\r\n      <td width=\"77%\">Replaces multiple blank lines with just one blank line.      <\/td>\r\n    <\/tr>\r\n<\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p><strong>Options<\/strong><\/p><figure class=\"wp-block-table\"><table><tbody>   <tr valign=\"top\"> \r\n      <td width=\"20%\" valign=\"top\"><span class=\"exambox\">:se \r\n        ai<\/span><\/td>\r\n      <td width=\"58%\" valign=\"top\">autoindent (unset with <span class=\"exambox\">:se \r\n        noai<\/span>)<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" valign=\"top\"><a href=\"http:\/\/www.vi-improved.org\/wiki\/index.php\/FileFormat\"><span class=\"exambox\">:se ff=unix<\/span><\/a><\/td>\r\n      <td width=\"67%\" valign=\"top\">set fileformat to unix<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" valign=\"top\"><span class=\"exambox\">set fileencoding=utf-8 <\/span><\/td>\r\n      <td width=\"67%\" valign=\"top\">change from Unicode to ASCII<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" valign=\"top\"><span class=\"exambox\">:se ic <\/span><\/td>\r\n      <td width=\"67%\" valign=\"top\">ignore case when searching<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"26\"><span class=\"exambox\">:se \r\n        list <\/span><\/td>\r\n      <td width=\"76%\" height=\"26\">display tabs and carriage returns<\/td>\r\n    <\/tr>\r\n    <tr> \r\n      <td valign=\"top\" width=\"20%\"><span class=\"exambox\">:se \r\n        nu <\/span><\/td>\r\n      <td valign=\"top\">display line numbers in the file. They are not actually \r\n        in the file. (unset with <span class=\"exambox\">:se nonu<\/span>)<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" valign=\"top\"><span class=\"exambox\">:se \r\n        sm<\/span><\/td>\r\n      <td width=\"58%\" valign=\"top\"> show matching brace or parenthesis while inserting \r\n      <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" valign=\"top\"><span class=\"exambox\">:se \r\n        smd<\/span><\/td>\r\n      <td width=\"58%\" valign=\"top\">display the mode<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" valign=\"top\"><span class=\"exambox\">:se \r\n        sw=2 <\/span><\/td>\r\n      <td width=\"67%\" valign=\"top\">set shifting to 2 spaces <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" valign=\"top\"><span class=\"exambox\">:se \r\n        tabstop=4<\/span><\/td>\r\n      <td width=\"67%\" valign=\"top\">set tabs to 4 spaces <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"26\"><span class=\"exambox\">^^D<\/span><\/td>\r\n      <td width=\"76%\" height=\"26\">turn off autoindent for current line, resume \r\n        same place for the next line (up carrot and control-D)<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"23\"><span class=\"exambox\">0^D<\/span><\/td>\r\n      <td width=\"76%\" height=\"23\">reset the autoindent, start at the left margin<\/td>\r\n    <\/tr>\r\n<\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p><strong>Using External Programs<\/strong><\/p><figure class=\"wp-block-table\"><table><tbody>   <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!cmd<\/span><\/td>\r\n      <td width=\"75%\">execute an external program called cmd<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!!cmd<\/span><\/td>\r\n      <td width=\"75%\">execute an external program, replacing the output with the \r\n        results <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!$<\/span><\/td>\r\n      <td width=\"75%\">send from here to the end-of-line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!L<\/span><\/td>\r\n      <td width=\"75%\">send from here to the last line of screen<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!23G<\/span><\/td>\r\n      <td width=\"75%\">send from here to line 23<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!\/word<\/span><\/td>\r\n      <td width=\"75%\">send from here until you find &#8220;word&#8221;<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!)<\/span><\/td>\r\n      <td width=\"75%\">send from here until the next sentence <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!}<\/span><\/td>\r\n      <td width=\"75%\">send from here until the next paragraph <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!!date<\/span><\/td>\r\n      <td width=\"75%\">adds the date<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!!cut -c41-<\/span><\/td>\r\n      <td width=\"79%\">cut the first 40 characters from a file<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">3!!sort <\/span><\/td>\r\n      <td width=\"75%\">send three lines to <span class=\"exambox\">sort<\/span>, \r\n        and return the output<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!Grev <\/span><\/td>\r\n      <td width=\"75%\">send from here to the end of file to the &#8220;<span class=\"exambox\">rev<\/span>&#8221; \r\n        command; the results will reverse the characters in each line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">!}sort<\/span><\/td>\r\n      <td width=\"75%\">sends from the current line until the first blank line to \r\n        <span class=\"exambox\">sort<\/span> <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:&#8217;x,.!sort<\/span><\/td>\r\n      <td width=\"75%\">will sort from the line marked with mx to the current line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:r !ll<\/span><\/td>\r\n      <td width=\"75%\">read the output of an &#8220;<span class=\"exambox\">ll<\/span>&#8221; command, and put it after the \r\n        current line. <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:&#8217;t,&#8217;b !spell<\/span><\/td>\r\n      <td width=\"75%\">check spelling from mark <span class=\"exambox\">t<\/span> to mark <span class=\"exambox\">b<\/span> <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\"> :&#8217;t,. !awk &#8216;{print \r\n        $3 &#8221; &#8221; $2 &#8221; &#8221; $1}&#8217;<\/span><\/td>\r\n      <td width=\"75%\">reverse the order of three columns<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:%! sed G <\/span><\/td>\r\n      <td width=\"75%\">double space the entire file.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:1,5! sed G<\/span><\/td>\r\n      <td width=\"75%\">double space the lines from 1-5<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:&#8217;x,.!sed &#8216;\/^$\/d&#8217;<\/span><\/td>\r\n      <td width=\"75%\">remove the blank lines from mark <span class=\"exambox\">x<\/span> to the current line<\/td>\r\n    <\/tr>\r\n<\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<p><strong>Miscellaneous<\/strong><\/p><figure class=\"wp-block-table\"><table><tbody>   <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">^g<\/span><\/td>\r\n      <td width=\"77%\">give file name, status, current line number and relative \r\n        position<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">^l<\/span><\/td>\r\n      <td width=\"77%\">refresh the screen (sometimes `<span class=\"example\">^P<\/span>&#8216; or `<span class=\"example\">^R<\/span>&#8216;)<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">^v<\/span><\/td>\r\n      <td width=\"77%\">visual mode. in Windows, <span class=\"example\">Ctrl-v<\/span> is mapped to paste text. Use <span class=\"example\">Ctrl-q<\/span> instead \r\n        <b>(vim)<\/b><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">.<\/span><\/td>\r\n      <td width=\"77%\">repeat latest command<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">&amp;<\/span><\/td>\r\n      <td width=\"77%\">repeat latest `ex&#8217; substitute command, e.g. <span class=\"example\">:s\/wrong\/good\/<\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:ab lg longer<\/span><\/td>\r\n      <td width=\"77%\">create an abbreviation.  Whenever <span class=\"exambox\">lg<\/span> is typed, it will be replaced with <span class=\"exambox\">longer<\/span>.<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">vi +\/string filename<\/span><\/td>\r\n      <td width=\"77%\">start vi, jumping to the first occurrence of <span class=\"example\">string<\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">vi -r filename<\/span><\/td>\r\n      <td width=\"77%\">recovers an open file after a crash<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">vi `cat somefile`<\/span><\/td>\r\n      <td width=\"77%\">open a list of files that are in the file <span class=\"exambox\">somefile<\/span><\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:r filename<\/span><\/td>\r\n      <td width=\"77%\">insert file <span class=\"exambox\">filename<\/span>, \r\n        placing its contents after current line<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:1,4w filename<\/span><\/td>\r\n      <td width=\"77%\">write lines 1 through 4 to filename<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:e filename<\/span><\/td>\r\n      <td width=\"77%\">edit filename<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:f filename<\/span><\/td>\r\n      <td width=\"77%\">change current file name to filename<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:n<\/span><\/td>\r\n      <td width=\"77%\">edit next file<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:sh<\/span><\/td>\r\n      <td width=\"77%\">call up the shell, run commands until a ^d (CONTROL-d), \r\n        then return to editing<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:vi<\/span><\/td>\r\n      <td width=\"77%\">VI MODE. Used if &#8220;Q&#8221; is pressed, or called up ex, and now \r\n        wish to use the visual mode<\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\" height=\"13\">&nbsp;<\/td>\r\n      <td width=\"77%\" height=\"13\">In Insert mode, press the <span class=\"example\">Ctrl-p<\/span> or <span class=\"example\">Ctrl-n<\/span> key to complete \r\n        part of a word that has been typed. This is useful for entering function names. <\/td>\r\n    <\/tr>\r\n    <tr valign=\"top\"> \r\n      <td width=\"20%\"><span class=\"exambox\">:&lt;up arrow&gt;<\/span><\/td>\r\n      <td width=\"77%\">recall : history<\/td>\r\n    <\/tr>\r\n<\/tbody><\/table><\/figure>\r\n","protected":false},"excerpt":{"rendered":"<p>I first created and posted these notes online on May 28, 2002. They may be the most useful thing I ever do. I collected most of these over the years from several sources, but I can&#8217;t give proper credit since those links are all dead now. Changing Text cc change a line C change from current cursor position to the end-of-line cw change from current cursor position to the end of the word J joins the next line to the&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.brezeale.com\/?p=97\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[7],"tags":[],"class_list":["post-97","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/www.brezeale.com\/index.php?rest_route=\/wp\/v2\/posts\/97","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.brezeale.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.brezeale.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.brezeale.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.brezeale.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=97"}],"version-history":[{"count":10,"href":"https:\/\/www.brezeale.com\/index.php?rest_route=\/wp\/v2\/posts\/97\/revisions"}],"predecessor-version":[{"id":833,"href":"https:\/\/www.brezeale.com\/index.php?rest_route=\/wp\/v2\/posts\/97\/revisions\/833"}],"wp:attachment":[{"href":"https:\/\/www.brezeale.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=97"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.brezeale.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=97"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.brezeale.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}