[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
slackbook:vi [2012/09/12 21:49 (UTC)] – [The Different Modes of vi] Updated with original text and formatting mfillpotslackbook:vi [2012/09/16 15:11 (UTC)] (current) – [Sources] updated author list and tags mfillpot
Line 88: Line 88:
 ===== Opening, Saving, and Quitting ===== ===== Opening, Saving, and Quitting =====
  
-Ok, so you've decided that you want to learn how to use vi. The first thing to do is learn how to open and save files. Opening files is actually pretty easy. Simply type the filename as an argument on the command-line and vi will happily load it for you. For example, vi chapter_11.xml will open the file chapter_11.xml and load its content onto the screen, simple enough. But what if we've finished with one document and wish to save it? We can do that in command mode using the [:wcommand. When in command mode, pressing the : key temporarily positions the cursor on the very bottom line of the window and allows you to enter special commands. (This is technically known as ex-mode after the venerable ex application which we will not document here.) The command to save your current work is [:w]. Once this is done, vi will write your changes to the buffer back into the file. If you wish to open another document, simply use the [:e other_documentcommand and vi will happily open it for you. If you've made changes to the buffer but haven't saved it yet, [:ewill fail and print a warning message on the bottom line. You can bypass this with the [:e!command. Most ex-mode commands in vi can be "forced" by adding ! to them. This tells vi that you want to abandon any changes you've made to the buffer and open the other document immediately.+Ok, so you've decided that you want to learn how to use  
 +**//vi//**. The first thing to do is learn how to 
 +open and save files. Opening files is actually pretty easy. Simply type 
 +the filename as an argument on the command-line and  
 +**//vi//** will happily load it for you. For 
 +example, vi chapter_11.xml will open the file 
 +''chapter_11.xml'' and load its content onto the 
 +screen, simple enough. But what if we've finished with one document and 
 +wish to save it? We can do that in command mode using the //:w// 
 +command. When in command mode, pressing the <key>':'</key> key 
 +temporarily positions the cursor on the very bottom line of the window 
 +and allows you to enter special commands. (This is technically known as 
 +ex-mode after the venerable **//ex//** application 
 +which we will not document here.) The command to save your current work 
 +is //:w//. Once this is done, **//vi//** will 
 +write your changes to the buffer back into the file. If you wish to 
 +open another document, simply use the //:e other_document// 
 +command and **//vi//** will happily open it for you. 
 +If you've made changes to the buffer but haven't saved it yet, 
 +//:e// will fail and print a warning message on the bottom line. 
 +You can bypass this with the //:e!// command. Most ex-mode 
 +commands in **//vi//** can be //"forced"// by adding 
 +<key>'!'</key> to them. This tells **//vi//** 
 +that you want to abandon any changes you've made to the buffer and open 
 +the other document immediately.
  
-But what if I don't like my changes and want to quit or start over? That's easily done as well. Executing the [:e!] command without any arguments will re-open the current document from the beginning. Quitting vi is as simple as running the [:q] command if you haven't made any changes to the buffer, or [:q!] if you'd like to quit and abandon those changes. 
  
 +But what if I don't like my changes and want to quit or start over?
 +That's easily done as well. Executing the //:e!// command
 +without any arguments will re-open the current document from the
 +beginning. Quitting **//vi//** is as simple as
 +running the //:q// command if you haven't made any changes to
 +the buffer, or //:q!// if you'd like to quit and abandon those
 +changes.
 ===== Moving Around ===== ===== Moving Around =====
  
-Moving around in vi is perhaps the hardest thing for a new user to learn. vi does not traditionally use the directional arrow keys for cursor movement, although in Slackware Linux that is an option. Rather, movement is simply another command issued in command-mode. The reason for this is rather simple. vi actually predates the inclusion of directional arrow keys on keyboards. Thus, movement of the cursor had to be accomplished by using the few keys available, so the right-hand "home row" keys of h, j, k, and l were chosen. These keys will move the cursor about whenever vi is in command mode. Here's a short table to help you remember how they work.+Moving around in **//vi//** is perhaps the hardest 
 +thing for a new user to learn. **//vi//** does not 
 +traditionally use the directional arrow keys for cursor movement, 
 +although in Slackware Linux that is an option. Rather, movement is 
 +simply another command issued in command-mode. The reason for this is 
 +rather simple. **//vi//** actually predates the 
 +inclusion of directional arrow keys on keyboards. Thus, 
 +movement of the cursor had to be accomplished by using the few 
 +keys available, so the right-hand //"home row"// keys of 
 +<key>'h'</key><key>'j'</key><key>'k'</key>, and 
 +<key>'l'</key> were chosen. These keys will move the cursor about 
 +whenever **//vi//** is in command mode. Here's a 
 +short table to help you remember how they work.
  
 ^Command ^ Result ^ ^Command ^ Result ^
Line 102: Line 144:
 |l|Move the cursor one character right| |l|Move the cursor one character right|
  
-Moving around is a little more powerful than that though. Like many command keys, these movement keys accept numerical arguments. For example, 10j will move the cursor down 10 lines. You can also move to the end or beginning of the current line with $ and ^, respectively. +Moving around is a little more powerful than that though. Like many 
 +command keys, these movement keys accept numerical arguments. For 
 +example, **10j** will move the cursor down 10 lines. You 
 +can also move to the end or beginning of the current line with 
 +<key>'$'</key> and <key>'^'</key>, respectively.
 ===== Editing A Document ===== ===== Editing A Document =====
  
-Now that we're able to open and save documents, as well as move around in them, it's time to learn how to edit them. The primary means of editing is to enter insert mode using either the i or a command keys. These either insert text at the cursor's current location, or append it after the cursor's current location. Once into insert mode, you can type any text normally and it will be placed into your document. You can return to command mode in order to save your changes by pressing the ESC key. +Now that we're able to open and save documents, as well as move around 
 +in them, it's time to learn how to edit them. The primary means of 
 +editing is to enter insert mode using either the <key>'i'</key> or 
 +<key>'a'</key> command keys.  These either insert text at the 
 +cursor's current location, or append it after the cursor's current 
 +location. Once into insert mode, you can type any text normally and it 
 +will be placed into your document.  You can return to command mode in 
 +order to save your changes by pressing the <key>'ESC'</key> key.
 ===== Vi Cheat Sheet ===== ===== Vi Cheat Sheet =====
  
-Since vi can be difficult to learn, I've prepared a short cheat sheat that should help you with the basics until you begin to feel comfortable.+Since **//vi//** can be difficult to learn, I've 
 +prepared a short cheat sheat that should help you with the basics until 
 +you begin to feel comfortable.
  
 ^ Command ^ Result ^ ^ Command ^ Result ^
Line 142: Line 195:
 |:w file|Save the current document as 'file'| |:w file|Save the current document as 'file'|
 |:x|Save and quit| |:x|Save and quit|
- 
 ====== Chapter Navigation ====== ====== Chapter Navigation ======
  
Line 148: Line 200:
  
 **Next Chapter: [[slackbook:emacs|Emacs]]** **Next Chapter: [[slackbook:emacs|Emacs]]**
-======Sources======+====== Sources ====== 
 +<!-- If you copy information from another source, then specify that source --> 
 +  * Original source: [[http://www.slackbook.org/beta]] \\ 
 +<!-- Authors are allowed to give credit to themselves! --> 
 +  * Originally written by Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson 
 +<!-- * Contrbutions by [[wiki:user:yyy | User Y]] -->
  
-  * Original source: http://slackbook.org/beta/#id331567 (authors: Alan Hicks, Chris Lumens, David Cantrell, Logan Johnson)+<!-- Please do not modify anything below, except adding new tags.--> 
 +<!-- You must also remove the tag-word "template" below. Otherwise your page will not show up in the Table of Contents --> 
 +{{tag>slackbook vi text_editor}}
 slackbook:vi ()