# Lab 1.3 – Introduktion til nano
> **Ressource:** `nano.pdf` – GNU nano manual version 8.7.1, tilgængelig i jeres grupperum på Canvas
> **Formål:** Lære at bruge nano som teksteditor til daglig redigering af konfigurationsfiler i Linux.
> **Dokumentation:** Alle opgaver dokumenteres i jeres **lab-journal** med screenshots og uploades til grupperummet.
---
## Hvad er nano, og hvornår bruger man det?
nano er en lille og brugervenlig teksteditor til terminalen. I modsætning til Vim har nano **ingen tilstande** – du kan altid skrive tekst direkte. Det gør nano til det naturlige førstevalg når du hurtigt skal redigere en konfigurationsfil på en server eller router.
>[!brain] 💡 **Huskeregel:**
nano til hurtige redigeringer, Vim til tunge redigeringsopgaver.
>[!eaaa] 📖 **Læs:** `nano.pdf`
Find den i Canvas
kapitel 1 *"Introduction"* (side 1) og kapitel 3 *"Editor Basics"* (side 3–5) inden du begynder.
---
## Skærmlayout i nano
Når du åbner nano ser skærmen sådan ud:
```
┌─────────────────────────────────────────┐
│ GNU nano 8.7.1 filnavn.txt │ ← Titellinje
│ │
│ [din tekst her] │ ← Redigeringsvindue
│ │
│ │
├─────────────────────────────────────────┤
│ Statuslinje (beskeder og fejl) │ ← Statuslinje
│ ^G Hjælp ^O Gem ^X Afslut ... │ ← Genvejslinjer
└─────────────────────────────────────────┘
```
> 📖 Se *"Screen Layout"* (kapitel 3.1, side 3) for fuld beskrivelse af de fire områder.
>[!opgave] **Spørgsmål til lab-journal:**
>- Hvad viser titellinjens venstre, midterste og højre sektion?
>- Hvad betyder det når der vises `Modified` øverst til højre?
---
## Vigtige genveje – overblik
I nano skrives genveje med `^` (Ctrl) og `M-` (Alt/Meta):
| Genvej | Funktion |
|--------|----------|
| `^G` | Hjælp (Help) |
| `^O` | Gem fil (Write Out) |
| `^X` | Afslut nano |
| `^K` | Klip linje (Cut) |
| `^U` | Sæt ind (Paste/Uncut) |
| `^F` eller `^W` | Søg fremad |
| `^B` | Søg bagud |
| `^Z` | Fortryd (Undo) |
| `^Y` | Page Up |
| `^V` | Page Down |
| `^C` | Vis cursor-position |
| `M-N` | Slå linjenumre til/fra |
> 📖 Se *"Commands"* (kapitel 3.3, side 3–4) for forklaring på `^` og `M-` notation.
---
## Opgave 1 – Åbn nano og lær skærmlayoutet
### 1.1 – Start nano og opret en fil
Åbn en terminal og kør:
```bash
nano ~/nano-oevelse.txt
```
Filen eksisterer ikke endnu – nano opretter den automatisk første gang du gemmer.
**Spørgsmål til lab-journal:**
- Hvad viser nano i titellinjens midterste sektion når filen endnu ikke er navngivet eller gemt?
- Hvad viser statuslinjen når du åbner en ny fil?
> 📸 **Screenshot:** Tag et screenshot af det tomme nano-vindue.
---
### 1.2 – Åbn den indbyggede hjælp
Tryk `^G` (Ctrl+G) for at åbne hjælpeviseren.
Naviger med:
- `^V` – rul ned (Page Down)
- `^Y` – rul op (Page Up)
- `^X` – luk hjælp og gå tilbage til editoren
**Spørgsmål til lab-journal:**
- Hvilke sektioner kan du se i hjælpeviseren?
- Hvilken genvej bruges til at afslutte hjælpeviseren?
> 📖 Se kapitel 4 *"The Help Viewer"* (side 6)
> 📸 **Screenshot:** Tag et screenshot af hjælpeviseren åben.
---
## Opgave 2 – Skriv og rediger tekst
### 2.1 – Skriv indhold i filen
Du er allerede i nano med din tomme fil. Skriv følgende tekst direkte (nano er modeless – du kan bare skrive!):
```
=== Mine nano-noter ===
Dato: [dato]
Gruppe: [gruppenummer]
Navn: [dit navn]
nano er en modeless editor.
Det betyder at jeg kan skrive tekst med det samme.
Nyttige kommandoer jeg har lært:
- Ctrl+O : Gem filen
- Ctrl+X : Afslut
- Ctrl+K : Klip en linje
- Ctrl+U : Sæt ind (paste)
- Ctrl+F : Søg fremad
Denne fil er oprettet som en del af Lab 1.3
```
**Spørgsmål til lab-journal:**
- Hvad er den største forskel fra Vim når du skal skrive tekst?
- Hvad vises øverst til højre i titellinjen efter du har skrevet noget?
> 📸 **Screenshot:** Tag et screenshot af nano med teksten indtastet.
---
### 2.2 – Slå linjenumre til
Tryk `M-N` (Alt+N) for at slå linjenumre til.
```
M-N → slå linjenumre til/fra
```
> 📖 Se *"Feature Toggles"* (kapitel 7, side 16) – under *"Line Numbers"*
**Spørgsmål til lab-journal:**
- Hvad sker der i venstre side af skærmen?
- Hvornår kan linjenumre være særligt nyttige?
> 📸 **Screenshot:** Tag et screenshot med linjenumre aktiveret.
---
## Opgave 3 – Gem filen
> 📖 Se *"The Cutbuffer"* og kommandooversigten i `nano.pdf`
### 3.1 – Gem med Write Out
Tryk `^O` (Ctrl+O) for at gemme:
1. Statuslinjen spørger: `File Name to Write:`
2. Filnavnet er allerede udfyldt (`nano-oevelse.txt`)
3. Tryk `Enter` for at bekræfte
**Spørgsmål til lab-journal:**
- Hvad vises på statuslinjen efter filen er gemt?
- Forsvinder `Modified`-markøren fra titellinjen efter du gemmer?
> 📸 **Screenshot:** Tag et screenshot af statuslinjen under/efter gemning.
---
### 3.2 – Bekræft filen fra terminalen
Afslut nano med `^X` og verificer filen:
```bash
cat ~/nano-oevelse.txt
ls -lh ~/nano-oevelse.txt
```
Åbn filen igen:
```bash
nano ~/nano-oevelse.txt
```
---
## Opgave 4 – Klip, kopiér og sæt ind
> 📖 Læs *"The Cutbuffer"* (kapitel 3.4, side 4) og *"The Mark"* (kapitel 3.5, side 4)
### 4.1 – Klip og sæt ind en linje
Nano bruger et **cutbuffer** (klipboard) til at flytte tekst:
| Genvej | Funktion |
|--------|----------|
| `^K` | Klip hele linjen (Cut) – gemmes i cutbuffer |
| `^U` | Sæt ind fra cutbuffer (Paste/Uncut) |
| `M-6` | Kopiér linjen UDEN at slette den |
**Øvelse:**
1. Naviger til linjen med `- Ctrl+X : Afslut`
2. Tryk `^K` – linjen forsvinder (gemt i cutbuffer)
3. Naviger til toppen af filen (brug piletasterne)
4. Tryk `^U` – linjen indsættes ved cursorens position
**Spørgsmål til lab-journal:**
- Hvad sker der hvis du trykker `^K` tre gange i træk?
- Hvad er forskellen på `^K` og `M-6`?
> 📖 Se: *"Consecutive strokes of ^K add each cut line to this buffer"* (kapitel 3.4)
> 📸 **Screenshot:** Tag et screenshot efter du har flyttet en linje.
---
### 4.2 – Markér og kopiér en tekstblok
Du kan markere tekst med `^6` (Ctrl+6) eller `M-A` (Alt+A):
1. Flyt cursoren til starten af en tekstblok
2. Tryk `^6` for at sætte markeringen (marken)
3. Flyt cursoren til slutningen af blokken – teksten fremhæves
4. Tryk `M-6` for at kopiere den markerede blok
5. Naviger til et nyt sted og tryk `^U` for at indsætte
> 📖 Se *"The Mark"* (kapitel 3.5, side 4)
**Spørgsmål til lab-journal:**
- Hvad sker der med markeringen efter du har kopieret teksten?
- Kan du bruge Shift + piletaster til at markere tekst i nano?
> 📸 **Screenshot:** Tag et screenshot med markeret tekst fremhævet.
---
## Opgave 5 – Søg og erstat
> 📖 Læs *"Search and Replace"* (kapitel 3.6, side 4–5)
### 5.1 – Søg fremad i filen
```
^F → søg fremad (ny søgning)
^W → søg fremad (alternativ genvej)
M-F → find næste forekomst fremad
M-B → find næste forekomst bagud
```
**Øvelse:**
1. Tryk `^F` – statuslinjen viser `Search:`
2. Skriv `nano` og tryk `Enter`
3. Cursoren hopper til første forekomst
4. Tryk `M-F` for at finde næste forekomst
> 📸 **Screenshot:** Tag et screenshot med søgeresultat markeret.
---
### 5.2 – Erstat tekst
```
M-R eller ^\ → søg og erstat
```
**Øvelse:**
1. Tryk `^\` (Ctrl+\)
2. Skriv søgeteksten: `Ctrl+O` og tryk `Enter`
3. Skriv erstatningsteksten: `^O (Ctrl+O)` og tryk `Enter`
4. Nano spørger for hver forekomst: `Y` (yes), `N` (no), `A` (all), eller `Cancel`
> 📖 Se: nano spørger for hver forekomst om du vil erstatte med *Yes*, *No*, *All* eller *Cancel* (kapitel 3.6, side 4–5)
**Spørgsmål til lab-journal:**
- Hvad gør `A` (All) i erstat-dialogen?
- Kan du begrænse søg-og-erstat til kun en markeret tekstblok?
> 📸 **Screenshot:** Tag et screenshot af erstat-dialogen.
---
## Opgave 6 – Fortryd og gentag
### 6.1 – Undo og Redo
nano understøtter fuld undo/redo:
```
^Z → fortryd (Undo)
M-E → gentag (Redo)
```
> 💡 **Bemærk:** I nano er undo `^Z` – i modsætning til Vim hvor det er `u`.
**Øvelse:**
1. Slet 3 linjer med `^K` tre gange
2. Tryk `^Z` tre gange for at genoprette linjerne
3. Brug `M-E` for at fortryde din fortrydelse (redo)
**Spørgsmål til lab-journal:**
- Hvad er undo-kommandoen i nano versus Vim?
- Hvad sker der på statuslinjen når du bruger undo?
> 📸 **Screenshot:** Tag et screenshot efter undo-operationer.
---
## Opgave 7 – Nyttige nano-indstillinger (bonus)
> 📖 Læs kapitel 8 *"Nanorc Files"* (side 17) – nano kan konfigureres via `~/.nanorc`
### 7.1 – Opret en personlig nano-konfiguration
```bash
nano ~/.nanorc
```
Tilføj følgende indstillinger:
```
## Vis linjenumre som standard
set linenumbers
## Slå auto-indentere til
set autoindent
## Vis en scrollbar i højre side
set indicator
## Blød linjebryning (lange linjer vises over flere rækker)
set softwrap
## Gem markørposition mellem sessioner
set positionlog
```
Gem med `^O` og afslut med `^X`.
Åbn nu din øvelsesfil igen og se om indstillingerne er aktive:
```bash
nano ~/nano-oevelse.txt
```
**Spørgsmål til lab-journal:**
- Hvilke af dine nye indstillinger kan du se er aktive?
- Hvad gør `set positionlog`?
> 📖 Se *"Settings"* (kapitel 8.1, side 17–24) for fuld liste over mulige indstillinger
> 📸 **Screenshot:** Tag et screenshot af nano med dine nye indstillinger aktive.
---
## nano vs. Vim – hurtig sammenligning
| Funktion | nano | Vim |
|----------|------|-----|
| Tilstande | Ingen – skriv direkte | Normal / Insert / Visual |
| Gem | `^O` + Enter | `:w` + Enter |
| Afslut | `^X` | `:q` |
| Gem og afslut | `^X` (spørger hvis ændret) | `:wq` eller `ZZ` |
| Afslut uden at gemme | `^X` → `N` | `:q!` |
| Klip linje | `^K` | `dd` |
| Paste | `^U` | `p` |
| Søg | `^F` / `^W` | `/søgeord` |
| Undo | `^Z` | `u` |
| Hjælp | `^G` | `:help` |
| Indlæringskurve | Lav | Stejl |
---
## Aflevering – Lab-journal tjekliste
- [ ] Screenshot af tomt nano-vindue ved opstart
- [ ] Screenshot af hjælpeviseren (`^G`)
- [ ] Screenshot med tekst og linjenumre aktiveret
- [ ] Screenshot af nano under/efter gemning
- [ ] Screenshot efter klip og indsæt
- [ ] Screenshot med markeret tekstblok
- [ ] Screenshot af søgeresultat
- [ ] Screenshot af erstat-dialog
- [ ] Screenshot efter undo-operationer
- [ ] Screenshot af nano med `.nanorc`-indstillinger aktive (bonus)
- [ ] Svar på alle spørgsmål i hvert afsnit
---
## Næste trin
> **Lab 2.1 – VyOS Router – Grundlæggende konfiguration**
> Du vil nu anvende både nano og Vim til at redigere konfigurationsfiler på din VyOS router og give dit lab-miljø internetadgang.
---
*Lab udformet til brug med Lubuntu LXQt i Proxmox virtualiseret miljø.*
*Ressource: GNU nano manual v8.7.1 – Chris Allegretta (tilgængelig på Canvas)*