Difference between revisions of "Introduction to Linux in HPC/The vim text editor"

From HPC Wiki
Introduction to Linux in HPC/The vim text editor
Jump to navigation Jump to search
m (Tweak page sorting)
 
(20 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Tutorials]]
+
[[Category:Tutorials|vim - vi Improved (Text Editor)]]<nowiki />
{{DISPLAYTITLE:<span style="position:absolute; top:-9999px;">Introduction to Linux in HPC/</span>The vim text editor}}
+
{{DISPLAYTITLE:vim - vi Improved (Text Editor)}}<nowiki />
 
+
{{Syllabus Introduction to Linux}}<nowiki />
 
__TOC__
 
__TOC__
  
{{Infobox_linux_introduction}}
+
This part of the Linux tutorials introduces the vim text editor and describes its main features and use cases. A short explanation of the most important commands paired with examples on how to use them allow the user to delve right in. The tutorial demonstrates the basics, like opening/writing files or moving within the text as well as the most often employed tasks like search&replace or copy&paste which makes it interesting to both complete beginners and more intermediate users. The vim text editor's main advantage is that it's present in most unix operational systems, futhermore it's highly configurable and provides an extensive plugin system.
 
 
  
 
=== Video === <!--T:5-->
 
=== Video === <!--T:5-->
  
<youtube width="600" height="400" right>QPWdUkgGd3I</youtube>
+
<youtube width="600" height="340" right>QPWdUkgGd3I</youtube>
  
 +
([[Media:HPC.NRW_Introduction_to_Linux_in_HPC_08_The_vim_Text_Editor.pdf | Slides as pdf]])
  
 
=== Quiz === <!--T:5-->   
 
=== Quiz === <!--T:5-->   
  
 +
{{hidden begin
 +
|title = How many windows does vim use?
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
-  it runs in the console and opens additional windows
 +
|| 
 +
-  it can start in the console but it requires the X window system and opens additional windows
 +
||
 +
+  it runs completely inside the console
 +
|| Explanation: <code>vim</code> doesn't require the X window system or any additional windows, it runs completely inside the console.
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = How many modes does vim have?
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
-  it has only one mode
 +
|| 
 +
-  it has two modes
 +
||
 +
+  it has at least three modes
 +
|| Explanation: <code>vi</code> has the modes normal, insert and command. In addition, <code>vim</code> hast the modes visual, select und ex-mode, not covered in this tutorial.
 +
</quiz>
 +
{{hidden end}}
  
 
{{hidden begin  
 
{{hidden begin  
|title = 1. How to enter the insert mode of <code>vim</code>?
+
|title = How to enter the insert mode of <code>vim</code>?
 
}}
 
}}
 
<quiz display=simple>
 
<quiz display=simple>
Line 26: Line 55:
 
|| Explanation: If you are not in the insert mode, the <code>i</code> key means insert and by pressing it you can enter the insert mode. On the other hand, the <code>Esc</code> key brings you out of the insert mode. The behavior of the enter key depends on in which mode of vim you are. If you are in the normal mode, you navigate to the next line. If you are in the insert mode already, you start a new line.
 
|| Explanation: If you are not in the insert mode, the <code>i</code> key means insert and by pressing it you can enter the insert mode. On the other hand, the <code>Esc</code> key brings you out of the insert mode. The behavior of the enter key depends on in which mode of vim you are. If you are in the normal mode, you navigate to the next line. If you are in the insert mode already, you start a new line.
 
- press <code>Esc</code> key
 
- press <code>Esc</code> key
 +
||
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = How to save a file and exit during normal mode?
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
- press <code>:q!</code> keys and <code>enter</code>
 +
||
 +
+ press <code>:wq</code> keys and <code>enter</code> or <code>:X</code> keys and <code>enter</code> or <code>ZZ</code> keys
 +
|| Explanation: Any of the pressed key combinations will trigger a save and exit when in normal mode. The sequence <code>:q!</code> would exit without writing the file.
 +
- press <code>Ctrl-x Ctrl-s</code> keys
 +
||
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = How to copy and paste <code>5</code> entire lines in normal mode?
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+ press <code>5yy</code> keys, move the cursor and press <code>p</code>
 +
|| Explanation: commands can be repeated by placing an integer value before them. In this case 5 lines are copied by pressing <code>5yy</code>. The paste command is executed by pressing <code>p</code>, pressing <code>5p</code> would have pasted 25 lines.
 +
- press <code>5yy</code> keys, move the cursor and press <code>5p</code>
 +
||
 +
- press <code>Ctrl-c Ctrl-v</code> keys
 +
||
 +
</quiz>
 +
{{hidden end}}
 +
 +
{{hidden begin
 +
|title = How to perform a forward search for the pattern <code>foo</code>, afterwards a backward search for the pattern <code>bar</code> in normal mode?
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
- press <code>/foo</code> and <code>enter</code>, afterwards <code>//bar</code> and <code>enter</code>
 +
||
 +
+ press <code>/foo</code> and <code>enter</code>, afterwards <code>?bar</code> and <code>enter</code>
 +
|| Explanation: the described commands will perform a search for a regex pattern, either forward (<code>/</code>) or backward (<code>?</code>), depending on the prefix
 +
- press <code>:f/foo/</code> and <code>enter</code>, afterwards <code>:r/bar/</code> and <code>enter</code>
 +
||
 +
</quiz>
 +
{{hidden end}}
 +
 +
 +
{{hidden begin
 +
|title = How to search and replace all occurences of the pattern <code>foo</code> with <code>bar</code> in normal mode?
 +
}}
 +
<quiz display=simple>
 +
{
 +
|type="()"}
 +
+ press <code>:s%/foo/bar/g</code> keys and <code>enter</code>
 +
|| Explanation: the command <code>:s%/foo/bar/g</code> will search and replace the pattern in the entire file. Without the <code>g</code> modifier, it would search the entire file as well but only the first occurence in each line would be replaced. The <code>c</code> modifier asks for a confirmation each time.
 +
- press <code>:s%/foo/bar/</code> keys and <code>enter</code>
 +
||
 +
- press <code>:sed%/foo/bar/</code> keys and <code>enter</code>
 
||  
 
||  
 
</quiz>
 
</quiz>
Line 32: Line 122:
  
 
{{hidden begin  
 
{{hidden begin  
|title = 2. How would you open a file in read-only mode using the <code>vim</code> editor? </br>
+
|title = How would you open a file in read-only mode using the <code>vim</code> editor? </br>
 
Hint: In terminal <code>man vim</code>  
 
Hint: In terminal <code>man vim</code>  
 
}}
 
}}
Line 38: Line 128:
 
{
 
{
 
|type="()"}
 
|type="()"}
+ Click and submit to see the answer
+
- <code>$ vim -r filename</code>
|| <code>$ vim -R filename</code>
+
||
 +
+ <code>$ vim -R filename</code>
 +
|| Explanation: the <code>-R</code> option opens the file read-only. This can be overriden by pressing <code>:w!</code> or <code>:set noro</code>
 +
- <code>$ vim -n filename</code>
 +
||
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
Line 46: Line 140:
 
{{Warning|mode=info|text= '''If you forget in which mode you are in while using vim, just keep pressing Esc.'''}}
 
{{Warning|mode=info|text= '''If you forget in which mode you are in while using vim, just keep pressing Esc.'''}}
  
 +
=== Exercises in Terminal === <!--T:5--> 
  
=== Exercises in Terminal (slide 100) === <!--T:5--> 
+
  1. Create a vim file and write some text in it with insert (pressing <code>i</code>) and than undo and redo the changes.  
 
+
2. Copy (yank) multiple lines and paste them
  1. Create a vim file and write some text in it with insert (pressing <code>i</code>) and than undo and redo the changes.  
+
3. Search for a certain pattern and replace it with another
 
   {| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 
   {| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 
     | <strong>Answer:</strong>
 
     | <strong>Answer:</strong>
Line 59: Line 154:
 
         - <code>u</code>: undo last change (can be repeated to undo preceding commands).
 
         - <code>u</code>: undo last change (can be repeated to undo preceding commands).
 
         - <code>Ctrl-r</code>: Redo changes which were undone (undo the undos).
 
         - <code>Ctrl-r</code>: Redo changes which were undone (undo the undos).
 +
      In order to copy a line press <code>yy</code>, for several lines preclude with the command with a number, e.g. <code>5yy</code>.
 +
      For pasting simply press <code>p</code>.
 +
      Search & Replace can be executed with the command <code>:s%/foo/bar/g</code>, it will search and replace the pattern <code>foo</code>
 +
      and replace it with <code>bar</code> in the entire file. Without the <code>g</code> modifier, it would search the entire file as well but only
 +
      the first occurence in each line would be replaced. The <code>c</code> modifier asks for a confirmation each time.
 
     |}
 
     |}
  
  
 
+
{{Tutorial Navigation
<div style='text-align: left;float:left;width:33%;'>{{Clickable button|[[Introduction_to_Linux_in_HPC/Processes_and_permissions | Previous Page]]|color=white}}</div>
+
| previous = [[Introduction_to_Linux_in_HPC/Processes | Processes ]]
<div style='text-align: center;float:left;width:33%;'>{{Clickable button|[[Introduction_to_Linux_in_HPC | Main Menu Page]]|color=white}}</div>
+
| main = [[Introduction_to_Linux_in_HPC | Overview ]]
<div style='text-align: right;float:left;width:33%;'>{{Clickable button|[[Introduction_to_Linux_in_HPC/Shell_scripting_environment_variables | Next Page]]|color=white}}</div>
+
| next = [[Introduction_to_Linux_in_HPC/Shell_scripting | Shell Scripting ]]
 +
}}

Latest revision as of 17:24, 4 December 2020

Tutorial
Title: Introduction to Linux in HPC
Provider: HPC.NRW

Contact: tutorials@hpc.nrw
Type: Multi-part video
Topic Area: HPC Platforms
License: CC-BY-SA
Syllabus

1. Background and History
2. The Command Line
3. Linux Directory Structure
4. Files
5. Text display and search
6. Users and permissions
7. Processes
8. The vim text editor
9. Shell scripting
10. Environment variables
11. System configuration
12. SSH Connections
13. SSH: Graphics and File Transfer
14. Various tips

This part of the Linux tutorials introduces the vim text editor and describes its main features and use cases. A short explanation of the most important commands paired with examples on how to use them allow the user to delve right in. The tutorial demonstrates the basics, like opening/writing files or moving within the text as well as the most often employed tasks like search&replace or copy&paste which makes it interesting to both complete beginners and more intermediate users. The vim text editor's main advantage is that it's present in most unix operational systems, futhermore it's highly configurable and provides an extensive plugin system.

Video

( Slides as pdf)

Quiz

How many windows does vim use?

it runs in the console and opens additional windows
it can start in the console but it requires the X window system and opens additional windows
it runs completely inside the console

How many modes does vim have?

it has only one mode
it has two modes
it has at least three modes

How to enter the insert mode of vim?

press enter key
press i key
press Esc key

How to save a file and exit during normal mode?

press :q! keys and enter
press :wq keys and enter or :X keys and enter or ZZ keys
press Ctrl-x Ctrl-s keys

How to copy and paste 5 entire lines in normal mode?

press 5yy keys, move the cursor and press p
press 5yy keys, move the cursor and press 5p
press Ctrl-c Ctrl-v keys

How to perform a forward search for the pattern foo, afterwards a backward search for the pattern bar in normal mode?

press /foo and enter, afterwards //bar and enter
press /foo and enter, afterwards ?bar and enter
press :f/foo/ and enter, afterwards :r/bar/ and enter


How to search and replace all occurences of the pattern foo with bar in normal mode?

press :s%/foo/bar/g keys and enter
press :s%/foo/bar/ keys and enter
press :sed%/foo/bar/ keys and enter


How would you open a file in read-only mode using the vim editor?
Hint: In terminal man vim

$ vim -r filename
$ vim -R filename
$ vim -n filename


Info:  If you forget in which mode you are in while using vim, just keep pressing Esc.

Exercises in Terminal

1. Create a vim file and write some text in it with insert (pressing i) and than undo and redo the changes. 
2. Copy (yank) multiple lines and paste them
3. Search for a certain pattern and replace it with another



<< Processes

Overview

Shell Scripting >>