Redigerare
Varför redigerare är viktiga
Som programmerare tillbringar vi större delen av tiden med att redigera vanliga textfiler. Det är värt att investera tid i att lära sig en redigerare som passar ens behov.
Hur lär man sig en ny redigerare? Man tvingar sig själv att använda den under en period, även om produktiviteten tillfälligt sjunker. Det lönar sig snart. Två veckor räcker för att lära sig grunderna.
Vi kommer att lära ut Vim, men vi uppmuntrar dig att testa andra redigerare. Det är ett mycket personligt val, och folk har starka åsikter.
Vi kan inte lära ut en kraftfull redigerare på 50 minuter, så vi fokuserar på grunderna, visar mer avancerad funktionalitet, och ger resurser för att bemästra verktyget. Vi undervisar i Vim-kontext, men de flesta idéer går att överföra till andra kraftfulla redigerare. Om de inte gör det bör du kanske inte använda den redigeraren.

Grafen över inlärningskurvor för redigerare är en myt. Att lära sig grunderna i en kraftfull redigerare är ganska enkelt, även om det kan ta år att bemästra allt.
Vilka redigerare är populära i dag? Se den här Stack Overflow-undersökningen (det kan finnas viss bias eftersom Stack Overflow-användare inte nödvändigtvis representerar programmerare i stort).
Kommandoradsredigerare
Även om du i slutändan väljer en GUI-redigerare, är det värt att kunna en kommandoradsredigerare för att enkelt redigera filer på fjärrmaskiner.
Nano
Nano är en enkel kommandoradsredigerare.
- Flytta med piltangenterna
- Alla andra kortkommandon (spara, avsluta) visas längst ner
Vim
Vi/Vim är en kraftfull textredigerare. Det är ett kommandoradsprogram som vanligtvis finns installerat överallt, vilket gör det praktiskt för redigering på fjärrmaskiner.
Vim har också grafiska versioner, som GVim och MacVim. De erbjuder extra funktioner, som 24-bitarsfärg, menyer och popup-fönster.
Vims filosofi
- När man programmerar lägger man mer tid på att läsa/redigera än på att skriva
- Vim är en modal redigerare: olika lägen för att infoga text respektive manipulera text
- Vim är programmerbar (med Vimscript och även språk som Python)
- Vims gränssnitt i sig fungerar som ett programmeringsspråk
- Tangenttryckningar (med minnesvänliga namn) är kommandon
- Kommandon är komponerbara
- Använd inte musen: för långsamt
- Redigeraren ska fungera i samma hastighet som du tänker
Introduktion till Vim
Lägen
Vim visar aktuellt läge längst ner till vänster.
- Normalläge: för att röra dig i en fil och redigera
- Tillbringa mesta tiden här
- Infogningsläge: för att skriva in text
- Visuellt läge (tecken-, rad- eller blockläge): för att markera textblock
Du byter läge genom att trycka <ESC> för att gå tillbaka till normalläge från vilket läge som helst.
Från normalläge går du till infogningsläge med i,
visuellt läge med v,
visuellt radläge med V,
och visuellt blockläge med <C-v>.
Du använder <ESC> mycket i Vim,
så överväg att mappa om Caps Lock till Escape.
Grunder
Vim ex-kommandon körs via :{command} i normalläge.
:qavsluta (stäng fönster):wspara:wqspara och avsluta:e {name of file}öppna fil för redigering:lsvisa öppna buffrar:help {topic}öppna hjälp:help :wöppnar hjälp för ex-kommandot:w:help wöppnar hjälp för rörelsenw
Förflyttning
Vim handlar om effektiv förflyttning. Navigera i filen i normalläge.
- Inaktivera piltangenterna för att undvika dåliga vanor
nnoremap <Left> :echoe "Use h"<CR> nnoremap <Right> :echoe "Use l"<CR> nnoremap <Up> :echoe "Use k"<CR> nnoremap <Down> :echoe "Use j"<CR> - Grundrörelser:
hjkl(vänster, ner, upp, höger) - Ord:
w(nästa ord),b(början av ord),e(slutet av ord) - Rader:
0(början av rad),^(första icke-blanktecken),$(slutet av rad) - Skärm:
H(överst),M(mitten),L(nederst) - Fil:
gg(början av fil),G(slutet av fil) - Radnummer:
:{number}<CR>eller{number}G(rad {number}) - Övrigt:
%(matchande objekt) - Sök i rad:
f{character},t{character},F{character},T{character}- hitta/till framåt/bakåt {character} på aktuell rad
- Upprepa N gånger:
{number}{movement}, t.ex.10jgår ner 10 rader - Sök:
/{regex},n/Nför att navigera träffar
Markering
Visuella lägen:
- Visual
- Visual Line
- Visual Block
Du kan använda förflyttningskommandon för att göra markeringar.
Manipulera text
Allt du tidigare gjorde med musen gör du nu med tangentbordet (och kraftfulla, komponerbara kommandon).
igå till infogningsläge- men för manipulation/radering vill du använda mer än backsteg
o/Oinfoga rad under / överd{motion}radera {motion}- t.ex.
dwraderar ord,d$raderar till radslut,d0raderar till radbörjan
- t.ex.
c{motion}ändra {motion}- t.ex.
cwändrar ord - motsvarar ungefär
d{motion}följt avi
- t.ex.
xradera tecken (motsvarardl)sersätt tecken (motsvararxi)- visuellt läge + manipulation
- markera text,
dför att radera ellercför att ändra
- markera text,
uför ångra,<C-r>för gör om- Mycket mer att lära: t.ex.
~växlar versalisering på ett tecken
Resurser
vimtutorär ett kommandoradsprogram som lär dig vim- Vim Adventures är ett spel för att lära sig Vim
Anpassa Vim
Vim anpassas via en textbaserad konfigurationsfil i ~/.vimrc
(som innehåller Vimscript-kommandon).
Det finns troligen många grundinställningar du vill slå på.
Titta på andras dotfiles på GitHub för inspiration, men undvik att kopiera hela konfigurationer rakt av. Läs, förstå, och ta det du behöver.
Några anpassningar att överväga:
- Syntaxmarkering:
syntax on - Färgscheman
- Radnummer:
set nu/set rnu - Backsteg genom allt:
set backspace=indent,eol,start
Avancerad Vim
Här är några exempel som visar redigerarens kraft. Vi kan inte lära ut alla sådana tekniker här, men du lär dig dem över tid. En bra tumregel är: när du tänker “det måste finnas ett bättre sätt att göra det här”, så finns det ofta det. Sök upp det.
Sök och ersätt
Kommandot :s (substitute) (dokumentation).
%s/foo/bar/g- ersätt foo med bar globalt i filen
%s/\[.*\](\(.*\))/\1/g- ersätt namngivna Markdown-länkar med rena URL:er
Flera fönster
sp/vspför att dela fönster- Du kan ha flera vyer av samma buffer.
Musstöd
set mouse+=a- du kan klicka, skrolla och markera
Makron
q{character}för att börja spela in ett makro i register{character}qför att stoppa inspelning@{character}spelar upp makrot- Makrokörning stoppar vid fel
{number}@{character}kör makrot {number} gånger- Makron kan vara rekursiva
- rensa först makrot med
q{character}q - spela in makrot och använd
@{character}för att anropa makrot rekursivt (det gör inget förrän inspelningen är klar)
- rensa först makrot med
- Exempel: konvertera xml till json (fil)
- Array av objekt med nycklarna “name” / “email”
- Använda ett Python-program?
- Använda sed / regex
g/people/d%s/<person>/{/g%s/<name>\(.*\)<\/name>/"name": "\1",/g- …
- Vim-kommandon / makron
Gdd,ggddraderar första och sista raden- Makro för att formatera ett enskilt element (register
e)- Gå till raden med
<name> qe^r"f>s": "<ESC>f<C"<ESC>q
- Gå till raden med
- Makro för att formatera en person
- Gå till raden med
<person> qpS{<ESC>j@eA,<ESC>j@ejS},<ESC>q
- Gå till raden med
- Makro för att formatera en person och gå till nästa person
- Gå till raden med
<person> qq@pjq
- Gå till raden med
- Kör makrot till filslut
999@q
- Ta manuellt bort sista
,och lägg till avgränsarna[och]
Bygg ut Vim
Det finns massor av insticksmoduler för att bygga ut Vim.
Börja med en hanterare för insticksmoduler som vim-plug, Vundle, eller pathogen.vim.
Några insticksmoduler att överväga:
- ctrlp.vim: fuzzy filsökare
- vim-fugitive: git-integration
- vim-surround: manipulera “omgivning”-tecken
- gundo.vim: navigera i ångra-trädet
- nerdtree: filutforskare
- syntastic: syntaxkontroll
- vim-easymotion: smarta rörelser
- vim-over: förhandsvisning av ersättning
Listor med insticksmoduler:
Vim-läge i andra program
För många populära redigerare (t.ex. vim och emacs) finns emuleringsstöd i andra verktyg.
- Skal
- bash:
set -o vi - zsh:
bindkey -v export EDITOR=vim(miljövariabel som används av program somgit)
- bash:
~/.inputrcset editing-mode vi
Det finns till och med tillägg med vim-tangentbindningar för webbläsare. Några populära är Vimium för Google Chrome och Tridactyl för Firefox.
Resurser
- Vim Tips Wiki
- Vim Advent Calendar: olika Vim-tips
- Neovim är en modern omimplementation av Vim med mer aktiv utveckling.
- Vim Golf: olika Vim-utmaningar
Övningar
-
Experimentera med några redigerare. Prova minst en kommandoradsredigerare (t.ex. Vim) och minst en GUI-redigerare (t.ex. Atom). Lär via handledningar som
vimtutor(eller motsvarande för andra redigerare). För att verkligen få känsla för en ny redigerare, använd den exklusivt i ett par dagar i ditt vanliga arbete. -
Anpassa din redigerare. Titta på tips och tricks på nätet, och gå igenom andras konfigurationer (de är ofta väldokumenterade).
-
Experimentera med insticksmoduler för din redigerare.
-
Bestäm dig för att använda en kraftfull redigerare i minst ett par veckor. Då bör du börja se fördelarna. Vid någon punkt bör redigeraren kunna arbeta i samma hastighet som du tänker.
-
Installera en linter (t.ex. pyflakes för python), koppla den till din redigerare, och testa att den fungerar.
Licensed under CC BY-NC-SA.