diff --git a/emacs-init.el b/emacs-init.el index a9e45c0..8d6e223 100644 --- a/emacs-init.el +++ b/emacs-init.el @@ -1,42 +1,53 @@ -;; no splash screen -(setq inhibit-splash-screen t) +;; we can require features +(require 'cl) +(require 'package) -;; show matching parenthesis -(show-paren-mode t) - -;; answer with y/n -(fset 'yes-or-no-p 'y-or-n-p) - -;; stop blinking cursor -(blink-cursor-mode 0) - -;; overwrite marked text -(delete-selection-mode t) - -;; show column number in mode-line -(column-number-mode t) +;; add mirrors for list-packages +(add-to-list 'package-archives + '("melpa" . "http://melpa.milkbox.net/packages/")) ;; needed to use things downloaded with the package manager (package-initialize) -;; add mirrors for list-packages -(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") - ("marmalade" . "http://marmalade-repo.org/packages/") - ("melpa" . "http://melpa.milkbox.net/packages/"))) +;; install some packages if missing +(let* ((packages '(auto-complete + ido-vertical-mode + monokai-theme + multiple-cursors + undo-tree + ;; if you want more packages, add them here + )) + (packages (remove-if 'package-installed-p packages))) + (when packages + (package-refresh-contents) + (mapc 'package-install packages))) -;; choose a color-theme -(load-theme 'wombat t) +;; no splash screen +(setq inhibit-splash-screen t) -;; get the default config for auto-complete (downloaded with -;; package-manager) -(require 'auto-complete-config) +;; show matching parenthesis +(show-paren-mode 1) -;; load the default config of auto-complete -(ac-config-default) +;; show column number in mode-line +(column-number-mode 1) -;; enable ido-mode, this changes the way files are selected in the -;; minibuffer -(ido-mode t) +;; overwrite marked text +(delete-selection-mode 1) + +;; changes selection in the minibuffer +(ido-mode 1) + +;; use ido everywhere +(ido-everywhere 1) + +;; show vertically +(ido-vertical-mode 1) + +;; use undo-tree-mode globally +(global-undo-tree-mode 1) + +;; stop blinking cursor +(blink-cursor-mode 0) ;; no menubar (menu-bar-mode 0) @@ -51,12 +62,25 @@ ;; with 1 to enable this feature (global-linum-mode 0) +;; answer with y/n +(fset 'yes-or-no-p 'y-or-n-p) + +;; choose a color-theme +(load-theme 'monokai t) + +;; get the default config for auto-complete (downloaded with +;; package-manager) +(require 'auto-complete-config) + +;; load the default config of auto-complete +(ac-config-default) + ;; kills the active buffer, not asking what buffer to kill. (global-set-key (kbd "C-x k") 'kill-this-buffer) ;; adds all autosave-files (i.e #test.txt#, test.txt~) in one ;; directory, avoid clutter in filesystem. -(defvar emacs-autosave-directory "~/.emacs.d/autosaves/") +(defvar emacs-autosave-directory (concat user-emacs-directory "autosaves/")) (setq backup-directory-alist `((".*" . ,emacs-autosave-directory)) auto-save-file-name-transforms @@ -65,14 +89,12 @@ ;; defining a function that sets more accessible keyboard-bindings to ;; hiding/showing code-blocs (defun hideshow-on () + (interactive) + (local-set-key (kbd "") 'hs-toggle-hiding) (local-set-key (kbd "C-c ") 'hs-show-block) - (local-set-key (kbd "C-c C-") 'hs-show-block) (local-set-key (kbd "C-c ") 'hs-hide-block) - (local-set-key (kbd "C-c C-") 'hs-hide-block) (local-set-key (kbd "C-c ") 'hs-hide-all) - (local-set-key (kbd "C-c C-") 'hs-hide-all) (local-set-key (kbd "C-c ") 'hs-show-all) - (local-set-key (kbd "C-c C-") 'hs-show-all) (hs-minor-mode t)) ;; now we have to tell emacs where to load these functions. Showing @@ -110,10 +132,10 @@ "Ident, untabify and unwhitespacify current buffer, or region if active." (interactive) (let ((beg (if (region-active-p) (region-beginning) (point-min))) - (end (if (region-active-p) (region-end) (point-max)))) + (end (if (region-active-p) (region-end) (point-max)))) (whitespace-cleanup) (indent-region beg end nil) - (untabify beg end))) + (untabify beg end))) ;; bindes the tidy-function to C-TAB (global-set-key (kbd "") 'tidy) diff --git a/emacs-init.el.html b/emacs-init.el.html deleted file mode 100644 index 14174e5..0000000 --- a/emacs-init.el.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - emacs-init.el - - - - - - - -
;; no splash screen
-(setq inhibit-splash-screen t)
-
-;; show matching parenthesis
-(show-paren-mode t)
-
-;; answer with y/n
-(fset 'yes-or-no-p 'y-or-n-p)
-
-;; stop blinking cursor
-(blink-cursor-mode 0)
-
-;; overwrite marked text
-(delete-selection-mode t)
-
-;; show column number in mode-line
-(column-number-mode t)
-
-;; needed to use things downloaded with the package manager
-(package-initialize)
-
-;; add mirrors for list-packages
-(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
-			 ("marmalade" . "http://marmalade-repo.org/packages/")
-			 ("melpa" . "http://melpa.milkbox.net/packages/")))
-
-;; choose a color-theme 
-(load-theme 'wombat t)
-
-;; get the default config for auto-complete (downloaded with
-;; package-manager)
-(require 'auto-complete-config)
-
-;; load the default config of auto-complete
-(ac-config-default)
-
-;; enable ido-mode, this changes the way files are selected in the
-;; minibuffer
-(ido-mode t)
-
-;; no menubar
-(menu-bar-mode 0)
-
-;; no toolbar either
-(tool-bar-mode 0)
-
-;; scrollbar? no
-(scroll-bar-mode 0)
-
-;; global-linum-mode shows line numbers in all buffers, exchange 0
-;; with 1 to enable this feature
-(global-linum-mode 0)
-
-;; kills the active buffer, not asking what buffer to kill.
-(global-set-key (kbd "C-x k") 'kill-this-buffer)
-
-;; adds all autosave-files (i.e #test.txt#, test.txt~) in one
-;; directory, avoid clutter in filesystem.
-(defvar emacs-autosave-directory "~/.emacs.d/autosaves/")
-(setq backup-directory-alist
-      `((".*" . ,emacs-autosave-directory))
-      auto-save-file-name-transforms
-      `((".*" ,emacs-autosave-directory t)))
-
-;; defining a function that sets more accessible keyboard-bindings to
-;; hiding/showing code-blocs
-(defun hideshow-on ()
-  (local-set-key (kbd "C-c <right>") 'hs-show-block)
-  (local-set-key (kbd "C-c C-<right>") 'hs-show-block)
-  (local-set-key (kbd "C-c <left>")  'hs-hide-block)
-  (local-set-key (kbd "C-c C-<left>")  'hs-hide-block)
-  (local-set-key (kbd "C-c <up>")    'hs-hide-all)
-  (local-set-key (kbd "C-c C-<up>")    'hs-hide-all)
-  (local-set-key (kbd "C-c <down>")  'hs-show-all)
-  (local-set-key (kbd "C-c C-<down>")  'hs-show-all)
-  (hs-minor-mode t))
-
-;; now we have to tell emacs where to load these functions. Showing
-;; and hiding codeblocks could be useful for all c-like programming
-;; (java is c-like) languages, so we add it to the c-mode-common-hook.
-(add-hook 'c-mode-common-hook 'hideshow-on)
-
-;; adding shortcuts to java-mode, writing the shortcut folowed by a
-;; non-word character will cause an expansion.
-(defun java-shortcuts ()
-  (define-abbrev-table 'java-mode-abbrev-table
-    '(("psv" "public static void main(String[] args) {" nil 0)
-      ("sop" "System.out.printf" nil 0)
-      ("sopl" "System.out.println" nil 0)))
-  (abbrev-mode t))
-
-;; the shortcuts are only useful in java-mode so we'll load them to
-;; java-mode-hook.
-(add-hook 'java-mode-hook 'java-shortcuts)
-
-;; defining a function that guesses a compile command and bindes the
-;; compile-function to C-c C-c
-(defun java-setup ()
-  (set (make-variable-buffer-local 'compile-command)
-       (concat "javac " (buffer-name)))
-  (local-set-key (kbd "C-c C-c") 'compile))
-
-;; this is a java-spesific function, so we only load it when entering
-;; java-mode
-(add-hook 'java-mode-hook 'java-setup)
-
-;; defining a function that sets the right indentation to the marked
-;; text, or the entire buffer if no text is selected.
-(defun tidy ()
-  "Ident, untabify and unwhitespacify current buffer, or region if active."
-  (interactive)
-  (let ((beg (if (region-active-p) (region-beginning) (point-min)))
-	(end (if (region-active-p) (region-end)       (point-max))))
-    (whitespace-cleanup)
-    (indent-region beg end nil)
-    (untabify beg end)))
-
-;; bindes the tidy-function to C-TAB
-(global-set-key (kbd "<C-tab>") 'tidy)
-
- - - diff --git a/emacskurs-init-comments.el b/emacskurs-init-comments.el index 0ae8c37..60d2d38 100644 --- a/emacskurs-init-comments.el +++ b/emacskurs-init-comments.el @@ -1,39 +1,42 @@ +;; we can require features + + + +;; add mirrors for list-packages + + +;; needed to use downloaded packages + + +;; install some packages if missing +;; (auto-complete ido-vertical-mode monokai-theme multiple-cursors undo-tree) + + ;; no splash screen ;; show matching parenthesis -;; answer with y/n - - -;; stop blinking cursor +;; show column number in mode-line ;; overwrite marked text -;; show column number in mode-line +;; enable ido-mode, changes the way files are selected in the minibuffer -;; needed to use things downloaded with the package manager +;; use ido everywhere -;; add mirrors for list-packages +;; show vertically -;; choose a color-theme (downloaded with package-manager) +;; use undo-tree-mode globally -;; get the default config for auto-complete (downloaded with -;; package-manager) - - -;; load the default config of auto-complete - - -;; enable ido-mode, this changes the way files are selected in the -;; minibuffer +;; stop blinking cursor ;; no menubar @@ -49,6 +52,19 @@ ;; with 1 to enable this feature +;; answer with y/n + + +;; choose a color-theme + + +;; get the default config for auto-complete (downloaded with +;; package-manager) + + +;; load the default config of auto-complete + + ;; kills the active buffer, not asking what buffer to kill. @@ -56,6 +72,7 @@ ;; directory, avoid clutter in filesystem. + ;; defining a function that sets more accessible keyboard-bindings to ;; hiding/showing code-blocs @@ -86,3 +103,4 @@ ;; bindes the tidy-function to C-TAB + diff --git a/emacskurs.html b/emacskurs.html index ffa7f63..3774d7d 100644 --- a/emacskurs.html +++ b/emacskurs.html @@ -1,763 +1,706 @@ - - - + + + -emacskurs - - - - - - - - - - - - - - - - - - + +Emacskurs + + + + + + +
+
+
+

Emacskurs

+

Lars Tveito

+

larstvei@ifi.uio.no

+

+
+

Table of Contents

+
-
+
+
-
+

Intro

+ +
-
-
-
- - -
- -
-
-

emacskurs

-

Lars Tveito

-

2013-08-01

-
-

emacskurs

- - -
-

Table of Contents

-
-
-
-
-

1 Emacskurs

-
+
+
- -
- -
-

1.1 Intro

-
- - -
- -
-

1.1.1 Hva er Emacs?

-
- - -
    -
  • Teksteditor +

    Hva er Emacs?

    +
      +
    • Teksteditor
    • -
    • Utvidbar (Elisp) +
    • Utvidbar (Emacs Lisp)
    • -
    • Over 30 år gammel +
    • Over 30 Ã¥r gammel
    • -
    • Over 2500 innebygde kommandoer +
    • Over 2500 innebygde kommandoer
    • -
    • Fri programvare +
    • Fri programvare
    + +
    -
- -
- -
-

1.1.2 Buffere, vinduer og rammer

-
- - -
    -
  • Tekst vises i buffere +

    Rammer, vinduer og buffere

    +
      +
    • Emacs Ã¥pnes i en ramme
    • -
    • Du kan ha så mange åpene buffere du vil +
    • Man kan ha flere vinduer i samme ramme
    • -
    • En fil åpnes i et nytt buffer +
    • Tekst vises i buffere
    • -
    • Minibufferet (nederste linje), brukes til å skrive inn filnavn, - buffernavn, etc… - +
    • Du kan ha sÃ¥ mange Ã¥pne buffere du vil
    • -
    • Emacs åpnes i en ramme +
    • En fil Ã¥pnes i et nytt buffer
    • -
    • En kan ha flere vinduer i samme ramme +
    • Minibufferet (nederste linje), brukes til Ã¥ skrive inn filnavn, buffernavn, etc…
    + +
    -
- -
- -
-

1.1.3 Modes

-
- - -
    -
  • Major modes -
      -
    • hvert buffer har kun én aktiv major mode +

      Modes

      +
        +
      • Major modes
        +
          +
        • hvert buffer har kun én aktiv major mode
        • -
        • en major mode gir deg funksjonalitet for en bestemt type - tekstredigering +
        • en major mode gir deg funksjonalitet for en bestemt type
          +tekstredigering
          +
        • +
        • de fleste programmeringssprÃ¥k har sin egen major mode
          +
        • +
      • -
      • de fleste programmeringsspråk har sin egen major mode +
      • Minor modes
        +
          +
        • du kan ha sÃ¥ mange aktive minor modes du ønsker
          +
        • +
        • en minor mode tilbyr tilleggsfunksjonalitet
          +
        • +
        +
      • + +
      • Modes tilføyer ofte egne tastekombinasjoner!
      -
    • -
    • Minor modes -
        -
      • du kan ha så mange aktive minor modes du ønsker -
      • -
      • en minor mode tilbyr tilleggsfunksjonalitet + +
        + +

        Tips

        +
          +
        • Emacs er annerledes Ã¥ bruke enn mange andre programmer, sÃ¥ det krever tilvenning.
        +
          +
        • i begynnelsen:
          +
            +
          • les og gjør «learn-by-doing tutorial» (C-h t)
            +
          • +
          • tving deg selv til Ã¥ bruke de kommandoene du lærer til de sitter i fingrene
            +
          • +
          • unngÃ¥ «pek og klikk»
            +
          • +
          +
        • + +
        • etter hvert (for spesielt interesserte):
          +
            +
          • skriv din egen config-fil
            +
          • +
          • lær litt Emacs lisp, og skriv dine egne funksjoner
            +
          • +
          +
        • + +
        • annet:
          +
            +
          • gjør CAPS-LOCK om til en ekstra Control (Ctrl)
            +
          • +
          +
        • +
        +
        + + +
        +
        + +

        Taster

        +
        +
        + +

        Terminologi for taster

        +
          +
        • C-<any>
          + Control
          +
        • + +
        • M-<any>
          + Meta er Alt på de fleste maskiner (alternativt ESC)
          +
        • + +
        • <any> betyr et vilkÃ¥rlig tegn (eller tastekombinasjon)
        +
        +
        -

        - Modes tilføyer ofte egne tastekombinasjoner! -

        -
- -
- -
-

1.1.4 Tips

-
- - -

- Emacs er annerledes å bruke enn mange andre programmer, så det - krever tilvenning. -

-
    -
  • i begynnelsen -
      -
    • les og gjør «learn-by-doing tutorial» (C-h t) +

      Prefikstaster

      +
        +
      • C-x <any>
        + prefiks for globale kommandoer
      • -
      • tving deg selv til å bruke de kommandoene du lærer til de - sitter i fingrene -
      • -
      • unngå «pek og klikk» +
      • C-c <any>
        +prefiks for lokale kommandoer
        +(har ikke alltid samme funksjon!)
        +
      • + +
      • C-h <any>
        + prefiks for hjelp
        +
      • + +
      • Alle tastekombinasjoner som ikke er en prefiks er bundet til en kommando!
      -
    • -
    • etter hvert (for spesielt interesserte) -
        -
      • skriv din egen configfil -
      • -
      • lær litt elisp, og skriv dine egne funksjoner + +
        +

        Komme seg ut

        +
          +
        • C-x C-c
          + avslutt Emacs
          +
        • + +
        • C-g
          +avbryt
          +(bruk hvis du ikke skjønner hva Emacs holder på med!)
          +
        • + +
        • ESC ESC ESC
          + (bruk hvis C-g ikke hjalp)
          +
        • + +
        • C-<prefix> C-g
          +er udefinert
          +(Dvs. C-g kan brukes til å avbryte prefiks)
        +
        +
        + +

        Tekstredigering

        +
          +
        • C-f, C-b
          + flytt markøren ett tegn frem/tilbake
        • -
        • annet -
            -
          • gjør CAPS-LOCK om til en ekstra Control (Ctrl) + +
          • M-f, M-b
            + flytt markøren ett ord frem/tilbake
            +
          • + +
          • C-a, C-e
            + flytt markøren til begynnelsen/slutten av linja
            +
          • + +
          • C-p, C-n
            + flytt markøren til forrige/neste linje
          +
        +
        + +

        Bla rundt

        +
          +
        • C-v, M-v
          + scroll ned/opp en side
          +
        • + +
        • M-<, M->
          + gå til begynnelsen/slutten av bufferet
          +
        • + +
        • C-l
          + vis slik at markøren er i senter/toppen/bunnen
        +
        +
        -
-
- -
- -
-

1.2 Taster

-
- - -
- -
-

1.2.1 Terminologi for taster

-
- - -
    -
  • C-<any> - Control - +

    Kill og yank

    +
      +
    • C-w
      + kill, tilsvarer cut
    • -
    • M-<any> - Meta er Alt på de fleste maskiner (alternativt ESC) + +
    • C-y
      + yank, tilsvarer paste
      +
    • + +
    • M-w
      + lagre til kill-ring, tilsvarer copy
      +
    • + +
    • C-k
      + kill, drepe resten av en linje
      +
    • + +
    • M-y, mÃ¥ etterfølges av C-y
      + yank-pop, går lenger tilbake på kill-ring
    + +
    -

    - <any> betyr et vilkårlig tegn (eller tastekombinasjon) -

    -
- -
- -
-

1.2.2 Prefikstaster

-
- - -
    -
  • C-x <any> - prefiks for globale kommandoer - +

    Feiloppretting

    +
      +
    • C-d, M-d
      + fjern neste bokstav/ord
    • -
    • C-c <any> - prefiks for lokale kommandoer - (har ikke alltid samme funksjon!) +
    • C-_, C-/, C-x u
      + undo!
    • -
    • C-h <any> - prefiks for hjelp + +
    • C-t, M-t
      + bytt om to bokstaver/ord
      +
    • + +
    • C-x C-t
      + bytt om to linjer
      +
    • + +
    • M-q
      + plasserer om tekst i en paragraf slik at linjene ikke overstiger 70 tegn (den ødelegger ikke syntaks i programmeringmodes)
      +
    • + +
    • M-u, M-l, M-c
      + gjør neste ord til UPPERCASE/lowercase/Capital-Case
    + +
    -

    - Alle tastekombinasjon som ikke er en prefiks er bundet til en - kommando! -

    -
-
- -
- -
-

1.3 Komme seg ut

-
- - -
    -
  • C-x C-c - avslutt emacs - +

    Markering av tekst

    +
      +
    • C-SPC
      + markerer tekst
    • -
    • C-g - avbryt - (bruk hvis du ikke skjønner hva emacs holder på med!) +
    • C-x h
      + markerer all tekst
    • -
    • ESC ESC ESC - (bruk hvis C-g ikke hjalp) +
    • M-h
      + markerer en paragraf
    • -
    • C-<prefix> C-g - er udefinert - (Dvs. C-g kan brukes til å avbryte prefiks) + +
    • Bruk i kombinasjon med M-w, C-w og TAB
      +
    • +
    + + + +
    +
    + +

    Filer, vinduer og buffere

    +
    +
    + +

    Filer

    +
      +
    • C-x C-f
      +Ã¥pne fil
      +(hvis den ikke finnes fra før åpnes et tomt buffer med det nye filnavnet)
      +
    • + +
    • C-x C-s
      + lagre buffer
      +
    • + +
    • C-x C-w
      + skrive til fil (tilsvarende «lagre som…»)
    +
    +
    -
- -
- -
-

1.4 Tekstredigering

-
- - -
- -
-

1.4.1 Flytte markør

-
- - -
    -
  • C-f, C-b - flytt markøren ett tegn frem/tilbake - +

    Vinduer

    +
      +
    • C-x 2, C-x 3
      + splitt et vindu horisontalt/vertikalt
    • -
    • M-f, M-b - flytt markøren ett ord frem/tilbake +
    • C-x 1
      + gjør det aktive vinduet til det eneste vinduet
    • -
    • C-a, C-e - flytt markøren til begynnelsen/slutten av linja +
    • C-x 0
      + lukk det aktive vinduet
    • -
    • C-p, C-n - flytt markøren til forrige/neste linje + +
    • C-x o
      + bytt fokus til et annet vindu
    + +
    -
- -
- -
-

1.4.2 Bla rundt

-
- - -
    -
  • C-v, M-v - scroll ned/opp en side - +

    Buffere

    +
      +
    • C-x b RET
      +bytt buffer
      +(siste besøkte buffer er default)
    • -
    • M-<, M-> - gå til begynnelsen/slutten av bufferet +
    • C-x k RET
      +drep (kill) buffer
      +(det aktive bufferet er default)
    • -
    • C-l - vis slik at markøren er i senter/toppen/bunnen + +
    • C-x left, C-x right
      + en annen måte å bytter buffer på
      +
    • +
    + + + +
    +
    + +

    Kommandoer

    +
      +
    • M-x function RET
      + lar deg kalle en vilkårlig kommando med navn
      +
    • + +
    • M-x replace-string RET erstatt RET med RET
      + tilsvarer «search and replace»
      +
    • + +
    • M-x query-replace RET erstatt RET med RETy/n
      + samme som replace-string, men du kan velge hva som skal erstattes (kan også kjøres med M-%!)
      +
    • + +
    • Bruk TAB for autocomplete!
      +
    • +
    +
    + +
    +
    +
    + +

    Søking

    +
      +
    • C-s
      + søk fremover i bufferet
      +
    • + +
    • C-r
      + søk bakover i bufferet
      +
    • + +
    • Dette er en svært effektiv mÃ¥te Ã¥ flytte markøren pÃ¥!
      +
    • +
    +
    + +
    +
    +
    + +

    Hjelp til selvhjelp

    +
      +
    • C-h k
      + bruk hvis du lurer på hva en tastekombinasjon gjør
      +
    • + +
    • C-h f
      + bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør
      +
    • + +
    • C-h m
      + gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden)
      +
    • + +
    • C-h a
      + apropos, lar deg søke i hjelpen
      +
    • + +
    • C-h C-h (eller: C-h ?)
      +gir deg hjelp om hjelpen
      +
    • +
    +
    + +
    +
    +
    + +

    Programmering

    +
      +
    • TAB
      + indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!)
      +
    • + +
    • M-;
      + kommenterer ut et markert område
      +
    • + +
    • M-x compile RET compile-command RET
      +lar deg kompilere i Emacs
      +(gir trykkbare linker til der feil oppstod)
      +
    • + +
    • M-g g <nr> RET
      + flytter markøren til linjenummer <nr>
      +
    • +
    +
    + +
    +
    +
    + +

    Makroer

    +
      +
    • Makroer er en mÃ¥te Ã¥ "ta opp" en rekke kommandoer pÃ¥
      +
    • + +
    • C-x (
      + definer en makro
      +
    • + +
    • <f3>
      + definer en makro eller sett inn løpenummer
      +
    • + +
    • C-x ), <f4>
      + ferdigstill makroen
      +
    • + +
    • C-x e
      + utfør makroen
      +
    • + +
    • e
      + gjenta makroen
      +
    • +
    +
    + +
    +
    +
    + +

    Pakker

    +
      +
    • Emacs 24 kommer med innebygd pakkebehandler
      +
    • + +
    • det finnes tusenvis av pakker
      +
    • + +
    • M-x list-packages
      + bla gjennom pakker
      + +
        +
      • i installere
        +
      • + +
      • U oppgrader alle
        +
      • + +
      • d slett
        +
      • + +
      • x utfør installering/oppgradering/sletting
        +
      • +
    +
    +
    -
- -
- -
-

1.4.3 Kill og yank

-
- - -
- -
- -
-

1.4.4 Feiloppretting

-
- - -
    -
  • C-d, M-d - fjern neste bokstav/ord - +

    Spørsmål?

    +
      +
    • Noen spørsmÃ¥l nÃ¥?
    • -
    • C-_ - undo! - +
    • Kom ned i pausen hvis dere har spørsmÃ¥l eller ønske for neste time!
    • -
    • C-t, M-t - bytt om to bokstaver/ord - -
    • -
    • C-x C-t - bytt om to linjer - -
    • -
    • M-q - plasserer om tekst i en paragraf slik at linjene ikke overstiger - 70 tegn (den ødelegger ikke syntaks i programmeringsmodes) - -
    • -
    • M-u, M-l, M-c - gjør neste ord til UPPERCASE/lowercase/Capital-Case +
    • Gjerne send mail til larstvei@ifi.uio.no!
    - - -
- -
- -
-

1.4.5 Markering av tekst

-
- - -
    -
  • C-SPC - marker tekst - -
  • -
  • C-x h - marker all tekst -
  • -
- - -

- Bruk i kombinasjon med M-w, C-w og TAB -

+ +
-
+ + -
-

1.5 Filer, vinduer og buffere

-
+ diff --git a/emacskurs.org b/emacskurs.org index 9978157..f73c502 100644 --- a/emacskurs.org +++ b/emacskurs.org @@ -1,268 +1,368 @@ -* Emacskurs -** Intro -*** Hva er Emacs? - - - Teksteditor - - Utvidbar (Elisp) - - Over 30 år gammel - - Over 2500 innebygde kommandoer - - Fri programvare +#+Title: Emacskurs +#+Email: larstvei@ifi.uio.no -*** Buffere, vinduer og rammer +#+OPTIONS: toc:1 num:nil \n:1 +#+REVEAL_TRANS: linear +#+REVEAL_THEME: night +#+REVEAL_THEME: moon +#+REVEAL_SPEED: fast +#+REVEAL_HLEVEL: 1 - - Tekst vises i buffere - - Du kan ha så mange åpene buffere du vil - - En fil åpnes i et nytt buffer - - Minibufferet (nederste linje), brukes til å skrive inn filnavn, - buffernavn, etc... +* Intro +** Plan for kurset + #+ATTR_REVEAL: :frag roll-in + - Før pause: + - Innføring i Emacs + - Nyttige kommander - - Emacs åpnes i en ramme - - En kan ha flere vinduer i samme ramme + - Etter pause: + - Sette opp Emacs pÃ¥ Ifi's maskiner + - Skrive en enkel konfigurasjonsfil + - Bruke det vi lærte før pause -*** Modes +** Hva er Emacs? + #+ATTR_REVEAL: :frag roll-in + - Teksteditor + - Utvidbar (Emacs Lisp) + - Over 30 Ã¥r gammel + - Over 2500 innebygde kommandoer + - Fri programvare - - Major modes - - hvert buffer har kun én aktiv major mode - - en major mode gir deg funksjonalitet for en bestemt type - tekstredigering - - de fleste programmeringsspråk har sin egen major mode +** Rammer, vinduer og buffere - - Minor modes - - du kan ha så mange aktive minor modes du ønsker - - en minor mode tilbyr tilleggsfunksjonalitet + #+ATTR_REVEAL: :frag roll-in + - Emacs Ã¥pnes i en ramme + - Man kan ha flere vinduer i samme ramme + - Tekst vises i buffere + - Du kan ha sÃ¥ mange Ã¥pne buffere du vil + - En fil Ã¥pnes i et nytt buffer + - Minibufferet (nederste linje), brukes til Ã¥ skrive inn filnavn, buffernavn, etc... - Modes tilføyer ofte egne tastekombinasjoner! +** Modes -*** Tips + #+ATTR_REVEAL: :frag roll-in + - Major modes + - hvert buffer har kun én aktiv major mode + - en major mode gir deg funksjonalitet for en bestemt type + tekstredigering + - de fleste programmeringssprÃ¥k har sin egen major mode - Emacs er annerledes å bruke enn mange andre programmer, så det - krever tilvenning. + - Minor modes + - du kan ha sÃ¥ mange aktive minor modes du ønsker + - en minor mode tilbyr tilleggsfunksjonalitet - - i begynnelsen - - les og gjør «learn-by-doing tutorial» (C-h t) - - tving deg selv til å bruke de kommandoene du lærer til de - sitter i fingrene - - unngå «pek og klikk» + - Modes tilføyer ofte egne tastekombinasjoner! - - etter hvert (for spesielt interesserte) - - skriv din egen configfil - - lær litt elisp, og skriv dine egne funksjoner +** Tips - - annet - - gjør CAPS-LOCK om til en ekstra Control (Ctrl) + - Emacs er annerledes Ã¥ bruke enn mange andre programmer, sÃ¥ det krever tilvenning. -** Taster -*** Terminologi for taster + #+ATTR_REVEAL: :frag roll-in + - i begynnelsen: + - les og gjør «learn-by-doing tutorial» (=C-h t=) + - tving deg selv til Ã¥ bruke de kommandoene du lærer til de sitter i fingrene + - unngÃ¥ «pek og klikk» - - C- - Control + - etter hvert (for spesielt interesserte): + - skriv din egen config-fil + - lær litt Emacs lisp, og skriv dine egne funksjoner - - M- - Meta er Alt på de fleste maskiner (alternativt ESC) + - annet: + - gjør =CAPS-LOCK= om til en ekstra Control (=Ctrl=) - betyr et vilkårlig tegn (eller tastekombinasjon) +* Taster +** Terminologi for taster -*** Prefikstaster + #+ATTR_REVEAL: :frag roll-in + - =C-= + Control - - C-x - prefiks for globale kommandoer + - =M-= + Meta er =Alt= pÃ¥ de fleste maskiner (alternativt =ESC=) - - C-c - prefiks for lokale kommandoer - (har ikke alltid samme funksjon!) + - == betyr et vilkÃ¥rlig tegn (eller tastekombinasjon) - - C-h - prefiks for hjelp +** Prefikstaster - Alle tastekombinasjon som ikke er en prefiks er bundet til en - kommando! + #+ATTR_REVEAL: :frag roll-in + - =C-x = + prefiks for globale kommandoer + + - =C-c = + prefiks for lokale kommandoer + (har ikke alltid samme funksjon!) + + - =C-h = + prefiks for hjelp + + - Alle tastekombinasjoner som ikke er en prefiks er bundet til en kommando! ** Komme seg ut - - C-x C-c - avslutt emacs + #+ATTR_REVEAL: :frag roll-in + - =C-x C-c= + avslutt Emacs - - C-g - avbryt - (bruk hvis du ikke skjønner hva emacs holder på med!) + - =C-g= + avbryt + (bruk hvis du ikke skjønner hva Emacs holder pÃ¥ med!) - - ESC ESC ESC - (bruk hvis C-g ikke hjalp) + - =ESC ESC ESC= + (bruk hvis =C-g= ikke hjalp) - - C- C-g - er udefinert - (Dvs. C-g kan brukes til å avbryte prefiks) + - =C- C-g= + er udefinert + (Dvs. =C-g= kan brukes til Ã¥ avbryte prefiks) ** Tekstredigering -*** Flytte markør - - C-f, C-b - flytt markøren ett tegn frem/tilbake + #+ATTR_REVEAL: :frag roll-in + - =C-f=, =C-b= + flytt markøren ett tegn frem/tilbake - - M-f, M-b - flytt markøren ett ord frem/tilbake + - =M-f=, =M-b= + flytt markøren ett ord frem/tilbake - - C-a, C-e - flytt markøren til begynnelsen/slutten av linja + - =C-a=, =C-e= + flytt markøren til begynnelsen/slutten av linja - - C-p, C-n - flytt markøren til forrige/neste linje + - =C-p=, =C-n= + flytt markøren til forrige/neste linje -*** Bla rundt +** Bla rundt - - C-v, M-v - scroll ned/opp en side + #+ATTR_REVEAL: :frag roll-in + - =C-v=, =M-v= + scroll ned/opp en side - - M-<, M-> - gå til begynnelsen/slutten av bufferet + - =M-<=, =M->= + gÃ¥ til begynnelsen/slutten av bufferet - - C-l - vis slik at markøren er i senter/toppen/bunnen + - =C-l= + vis slik at markøren er i senter/toppen/bunnen -*** Kill og yank +** Kill og yank - - C-w - kill, tilsvarer cut - - - C-y - yank, tilsvarer paste + #+ATTR_REVEAL: :frag roll-in + - =C-w= + kill, tilsvarer cut - - M-w - lagre til kill-ring, tilsvarer copy + - =C-y= + yank, tilsvarer paste - - C-k - kill, drepe resten av en linje + - =M-w= + lagre til kill-ring, tilsvarer copy - - M-y, må etterfølges av C-y - yank-pop, går lenger tilbake på kill-ring + - =C-k= + kill, drepe resten av en linje -*** Feiloppretting + - =M-y=, mÃ¥ etterfølges av =C-y= + yank-pop, gÃ¥r lenger tilbake pÃ¥ kill-ring - - C-d, M-d - fjern neste bokstav/ord +** Feiloppretting - - C-_ - undo! + #+ATTR_REVEAL: :frag roll-in + - =C-d=, =M-d= + fjern neste bokstav/ord - - C-t, M-t - bytt om to bokstaver/ord + - =C-_=, =C-/=, =C-x u= + undo! - - C-x C-t - bytt om to linjer + - =C-t=, =M-t= + bytt om to bokstaver/ord - - M-q - plasserer om tekst i en paragraf slik at linjene ikke overstiger - 70 tegn (den ødelegger ikke syntaks i programmeringsmodes) + - =C-x C-t= + bytt om to linjer - - M-u, M-l, M-c - gjør neste ord til UPPERCASE/lowercase/Capital-Case - -*** Markering av tekst + - =M-q= + plasserer om tekst i en paragraf slik at linjene ikke overstiger 70 tegn (den ødelegger ikke syntaks i programmeringmodes) - - C-SPC - marker tekst + - =M-u=, =M-l=, =M-c= + gjør neste ord til UPPERCASE/lowercase/Capital-Case - - C-x h - marker all tekst +** Markering av tekst - Bruk i kombinasjon med M-w, C-w og TAB + #+ATTR_REVEAL: :frag roll-in + - =C-SPC= + markerer tekst -** Filer, vinduer og buffere -*** Filer + - =C-x h= + markerer all tekst + + - =M-h= + markerer en paragraf + + - Bruk i kombinasjon med =M-w=, =C-w= og =TAB= + +* Filer, vinduer og buffere +** Filer + + #+ATTR_REVEAL: :frag roll-in + - =C-x C-f= + Ã¥pne fil + (hvis den ikke finnes fra før Ã¥pnes et tomt buffer med det nye filnavnet) + + - =C-x C-s= + lagre buffer + + - =C-x C-w= + skrive til fil (tilsvarende «lagre som...») + +** Vinduer + + #+ATTR_REVEAL: :frag roll-in + - =C-x 2=, =C-x 3= + splitt et vindu horisontalt/vertikalt + + - =C-x 1= + gjør det aktive vinduet til det eneste vinduet + + - =C-x 0= + lukk det aktive vinduet + + - =C-x o= + bytt fokus til et annet vindu + +** Buffere + + #+ATTR_REVEAL: :frag roll-in + - =C-x b RET= + bytt buffer + (siste besøkte buffer er default) + + - =C-x k RET= + drep (kill) buffer + (det aktive bufferet er default) + + - =C-x left=, =C-x right= + en annen mÃ¥te Ã¥ bytter buffer pÃ¥ + +* Kommandoer + + #+ATTR_REVEAL: :frag roll-in + - =M-x function RET= + lar deg kalle en vilkÃ¥rlig kommando med navn + + - =M-x replace-string RET erstatt RET med RET= + tilsvarer «search and replace» + + - =M-x query-replace RET erstatt RET med RET= ... =y/n= + samme som replace-string, men du kan velge hva som skal erstattes (kan ogsÃ¥ kjøres med =M-%=!) + + - Bruk =TAB= for autocomplete! + +* Søking + + #+ATTR_REVEAL: :frag roll-in + - =C-s= + søk fremover i bufferet + + - =C-r= + søk bakover i bufferet + + - Dette er en /svært/ effektiv mÃ¥te Ã¥ flytte markøren pÃ¥! + +* Hjelp til selvhjelp + + #+ATTR_REVEAL: :frag roll-in + - =C-h k= + bruk hvis du lurer pÃ¥ hva en tastekombinasjon gjør + + - =C-h f= + bruk hvis du kjenner navnet pÃ¥ en funksjon, men ikke vet hva den gjør + + - =C-h m= + gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden) + + - =C-h a= + apropos, lar deg søke i hjelpen + + - =C-h C-h= (eller: =C-h ?=) + gir deg hjelp om hjelpen + +* Programmering + + #+ATTR_REVEAL: :frag roll-in + - =TAB= + indenterer riktig (dersom indenteringen er gal er det et tegn pÃ¥ at det er noe galt i koden!) + + - =M-;= + kommenterer ut et markert omrÃ¥de + + - =M-x compile RET compile-command RET= + lar deg kompilere i Emacs + (gir trykkbare linker til der feil oppstod) + + - =M-g g RET= + flytter markøren til linjenummer == + +* Makroer + + #+ATTR_REVEAL: :frag roll-in + - Makroer er en mÃ¥te Ã¥ "ta opp" en rekke kommandoer pÃ¥ + + - =C-x (= + definer en makro - - C-x C-f - åpne fil - (hvis den ikke finnes fra før opprettes den) + - == + definer en makro /eller/ sett inn løpenummer - - C-x C-s - lagre buffer + - =C-x )=, == + ferdigstill makroen - - C-x C-w - skrive til fil (tilsvarende «lagre som...») + - =C-x e= + utfør makroen -*** Vinduer + - =e= + gjenta makroen - - C-x 2, C-x 3 - splitt et vindu vertikalt/horisontalt +* Pakker - - C-x 1 - gjør det aktive vinduet til det eneste vinduet + #+ATTR_REVEAL: :frag roll-in + - Emacs 24 kommer med innebygd pakkebehandler - - C-x 0 - lukk det aktive vinduet + - det finnes tusenvis av pakker - - C-x o - bytt fokus til et annet vindu + - =M-x list-packages= + bla gjennom pakker -*** Buffere + - =i= installere + + - =U= oppgrader alle + + - =d= slett + + - =x= utfør installering/oppgradering/sletting - - C-x b RET - bytt buffer - (siste besøkte buffer er default) +** Anbefalinger - - C-x k RET - drep (kill) buffer - (det aktive bufferet er default) + #+ATTR_REVEAL: :frag roll-in - - C-x left, C-x right - en annen måte å bytter buffer - -** Kommandoer - - - M-x function RET - lar deg kalle en hvilken som helst kommando med navn - - - M-x replace-string RET erstatt RET med RET - tilsvarer «search and replace» - - - M-x query-replace RET erstatt RET med RET ... y/n - samme som replace-string, men du kan velge hva som skal - erstattes - - Bruk TAB for autocomplete! + - [[https://github.com/auto-complete/auto-complete][Auto-Complete]] + viser mulige fullføringer -** Søking + - [[https://github.com/emacsmirror/undo-tree][Undo-Tree]] + et mer standard undo-system, med trestruktur + + - [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]]) + lar deg kontrollere flere markører samtidig! - - C-s - søk fremover i bufferet + - [[https://github.com/oneKelvinSmith/monokai-emacs][Monokai]] + et fargetema (hentet fra Sublime) - - C-r - søk bakover i bufferet +* Til slutt - Dette er en effektiv måte å flytte markøren! +** Nyttige lenker + #+ATTR_REVEAL: :frag roll-in + - [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs manualen]] + - [[http://termvakt.ifi.uio.no/Emacs][Termvaktens guide til Emacs]] + - [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]] + - [[http://www.ic.unicamp.br/%7Ehelio/disciplinas/MC102/Emacs_Reference_Card.pdf][En cheat-sheet for Emacs]] + - [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]] -** Hjelp til selvhjelp - - - C-h k - bruk hvis du lurer på hva en tastekombinasjon gjør - - - C-h f - bruk hvis du kjenner navnet på en funksjon, men ikke vet hva hva - den gjør - - - C-h m - gir deg informasjon om moden du er i - (bl.a tastekombinasjoner som er spesielle for moden) - - - C-h a - apropos, lar deg søke i hjelpen - - - C-h C-h, C-h ? - gir deg hjelp om hjelpen - -** Programmering - - - TAB indenterer riktig - (dersom indenteringen er gal er det et tegn på at det er noe galt - i koden!) - - - M-; - kommenterer ut et markert område - - - M-x compile RET compile-command RET - lar deg kompilere i Emacs - (gir trykkbare linker til der feil oppstod) - - - M-g g RET - flytter markøren til linjenummer +** SpørsmÃ¥l? + #+ATTR_REVEAL: :frag roll-in + - Noen spørsmÃ¥l nÃ¥? + - Kom ned i pausen hvis dere har spørsmÃ¥l eller ønske for neste time! + - Gjerne send mail til [[mailto:larstvei@ifi.uio.no][larstvei@ifi.uio.no]]!