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
m (Tweak page sorting)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Tutorials]]<nowiki />
+
[[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}}<nowiki />
+
{{DISPLAYTITLE:vim - vi Improved (Text Editor)}}<nowiki />
 
{{Syllabus Introduction to Linux}}<nowiki />
 
{{Syllabus Introduction to Linux}}<nowiki />
 
__TOC__
 
__TOC__
Line 13: Line 13:
  
 
=== 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  
 
{{hidden begin  
Line 50: Line 65:
 
{
 
{
 
|type="()"}
 
|type="()"}
- press <code>:q!</code> keys
+
- press <code>:q!</code> keys and <code>enter</code>
 
||  
 
||  
+ press <code>:wq</code> or <code>:X</code> or <code>ZZ</code> keys
+
+ 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.
 
|| 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
 
- press <code>Ctrl-x Ctrl-s</code> keys
Line 73: Line 88:
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{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  
 
{{hidden begin  
Line 80: Line 111:
 
{
 
{
 
|type="()"}
 
|type="()"}
+ press <code>:s%/foo/bar/g</code> keys
+
+ 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.
 
|| 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
+
- press <code>:s%/foo/bar/</code> keys and <code>enter</code>
 
||  
 
||  
- press <code>:sed%/foo/bar/</code> keys
+
- press <code>:sed%/foo/bar/</code> keys and <code>enter</code>
 
||  
 
||  
 
</quiz>
 
</quiz>
Line 100: Line 131:
 
||
 
||
 
+ <code>$ vim -R filename</code>
 
+ <code>$ vim -R filename</code>
|| Explanation: the <code>-R</code> opens the file read-only. This can be overriden by pressing <code>:w!</code> or <code>:set noro</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>
 
- <code>$ vim -n filename</code>
 
||  
 
||  
Line 109: 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 (slide 100) === <!--T:5-->   
+
=== Exercises in Terminal === <!--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.  
+
  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
 +
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 121: 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.
 
     |}
 
     |}
  

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 >>