GNU/Emacs-ist
Sisukord:
1 Kiirklahvid
Siin olen ära toonud ainult põhilisemad kiirklahvid. Rohkem spikkreid ja kiirklahve leiad /usr/share/emacs/23.2/etc/refcards kataloogist… vähemalt Debiani süsteemist.
1.1 Emacsi spikker
Üldised kiirklahvid C-x C-f Faili avamine C-x C-s (C-x C-w) Salvesta puhver faili (Salvesta nimega). C-_ (C-g) Undo - või kasutada ka C-x u (Tühista käsk) M-x print-buffer Saada puhver printerisse C-x C-c Välju Emacsist Navigeerimise käsud C-f (C-b) Edasi (tagasi) üks tähemärk M-f (M-b) Edasi (tagasi) üks sõna C-n (C-p) Järgmine (eelmine) rida C-a (C-e) Rea algusesse (lõppu) C-v (M-v) Leht alla (üless) M-< (M->) Puhvri algusesse (lõppu) C-l Joonista uuesti (aktiivne rida keskele) Vormindamine M-q (C-M-\) vorminda tekst paragrahvideks (reindent-i kood) Otsimine C-s (C-r) Otsi (otsi tagurpidi) M-% (M-x replace-string) Asenda (Asenda kõik) M-g g Mine teatud reale Killimine (kustutamine) ja yankimise (asetamine) käsud C-SPACE (C-x C-x) Määra asukoht (määra asukoht ja kursor) C-w (M-w) Killi ala (kopeeri) C-d (M-d) (C-k) Kustuta tähemärk (Killi sõna) (Killi rida) C-y (M-y) Yank (ketra kill ringi) Abistamine käsud c-h ? (C-h m) (C-c ?) Abistamise põhimenüü (abi mode) (aktiivne mode) C-h i (C-h a) (C-h b) Info manuaalid (käsu abi) (kiirklahvi abi) C-M-v Keri abi akent Puhvrite käsud C-x k Sulge aktiivne puhver C-x b <buffer name> Vaheta nimelisse puhvrisse C-x 2 (C-x 5) Horisontaalne split (vertikaalne) C-x 1 (C-x 0) Kuva aktiivne puhver (peida aktiivne puhver) Ristküliku käsud C-x r k (C-x r y) Killi ristkülik (yank-i ristkülik) C-x r d (C-x r c) kustuta ristkülik (puhasta) C-x r t (C-x r o) asenda ristkülik sõnaga (space) C-g tähendab CTRL ja g klahv. M-x tähendab ALT ja x klahv.
1.2 Juhuslikud kiirklahvid
Siia plaanin koguda erinevaid GNU/Emacs-i kiirklahve, mis millegipärast tunduva mulle piisavalt huvitavad :P
- Suurenda fondi suurust
C-x C-=
- Vähenda fondi suurust
C-x C--
- Mine teatud reale
M-x goto-line või M-g g
- Killi rida, kui oled rea lõpus (S = shift)
C-S-backspace
- Vaheta kaks viimast tähemärki
C-t
- Vaheta kaks viimast sõna
M-t
2 .emacs või .emacs.d
GNU Emacsi seadistusfail on tavaliselt .emacs fail kasutaja kodukataloogis. Kui aga kasutaja teeb rohkelt muudatusi, siis muutub .emacs fail raksesti loetavaks… kuna seal on lihtsalt palju elisp koodi sees. Sellistel juhtudel ongi hea kasutada ära .emacs.d/ kataloogi ja jätta .emacs üldse mängust välja. Vaikimisi loomulikult seal kataloogis midagi pole - kõik tuleb ise luua.
Esimese asjana tuleks luua .emacs.d/init.el fail, sest just seda faili loeb Emacs, kui .emacs fail puudub. Et init.el samuti raskesti loetavaks ei muutuks, tuleks iga mooduli jaoks teha veel eraldi fail. Näiteks kasutan tarkvara tõlkimisel po-mode-i, seega on mu .emacs.d kataloogis fail po-seaded.el. Et po-seaded.el käivitamisel sisse loetaks, peab sellest failist init.el-le teada andma. Selleks tuleb viimasesse lisada rida:
(require 'po-seaded)
Minu täielik init.el fail, mis küll ajas muutub, aga ehk on kellegile abiks:
; Beginning of init.el file (same functionality as .emacs) ;; Emacs Load Path. (add-to-list 'load-path (expand-file-name "~/.emacs.d")) (add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp")) ;;; This was installed by package-install.el. This provides support ;;; for the package system and interfacing with ELPA, the package ;;; archive. Move this code earlier if you want to reference packages ;;; in your .emacs. ;; (when (load (expand-file-name "~/.emacs.d/elpa/package.el")) ;; (package-initialize)) ;; Load-Library some useful files (require 'seaded) (require 'po-seaded) (require 'org-seaded) (require 'bbdb-seaded) (setq gnus-init-file "gnus-seaded.el") (put 'upcase-region 'disabled nil) (put 'downcase-region 'disabled nil) ;; Default window size (add-to-list 'default-frame-alist '(height . 50)) (add-to-list 'default-frame-alist '(width . 130)) ;; End of File
Nüüd peab veel iga kaasatud faili (require) lõppu lisama
(provide 'kaasatud_fail)
Näiteks on init.el faili esimene kaaastaud fail seaded.el, seega peab selle faili lõpus olemas
(provide 'seaded)
3 Gnus ja gmail
Kui juba emacsi kasutada, siis juba nii laiahaardeliselt, kui võimalik. Mõned nädalad tagasi tekkis plaan ka oma e-maile Gnusi ja Emacsi vahendusel lugeda. Mõeldud, tehtud. Ja siia, nii backuppi mõttes, riputangi oma konfi üles. Minu gnus init fail:
;; Beginning of .gnus file (require 'gnus) ;; Unset GPG_AGENT_INFO so that I won't get a graphical password ;; prompt when opening a gpg file. (setenv "GPG_AGENT_INFO" nil) (setq gnus-agent nil) ;; When I hit "forward as mail", Gnus will forward articles as inline ;; content (that is, part of the message), not as MIME. (setq message-forward-as-mime nil) ;; Make fwd appear in subject (setq message-make-forward-subject-function 'message-forward-subject-fwd message-wash-forwarded-subjects t) ;; Don't show any headers when forwarding a message (setq message-forward-ignored-headers "^.*") ;; Do not use the html part of a message, use the text part if ;; possible! (setq mm-discouraged-alternatives '("text/html" "text/richtext")) ;; Enable search over imap with G G in groups buffer (require 'nnir) ;; You need this to be able to list all labels in gmail (setq gnus-ignored-newsgroups "") ;; Generate the mail headers before you edit your message. (setq message-generate-headers-first t) ;; Search for new mail every 30 minutes (gnus-demon-add-handler 'gnus-demon-scan-news 30 t) ;; For a single file with N accounts, Gnus will show you N password ;; prompts instead of just one. You can change that if you turn on the ;; passphrase caché (setq epa-file-cache-passphrase-for-symmetric-encryption t) ;; regexp of groups from which new messages are mime signed by default ;;(setq my-sign-mime-group-regexp "^INBOX\\|^redhat\\|^\\[Gmail\\]") (setq my-sign-mime-group-regexp "\\+turakas:") ;; hook to setup message (defun my-mml-secure-message-sign-pgpmime () (when (string-match my-sign-mime-group-regexp gnus-newsgroup-name) (mml-secure-message-sign-pgpmime))) ;; Set up signed mail (add-hook 'message-send-hook 'my-mml-secure-message-sign-pgpmime) ;; Genral settings (setq gnus-select-method '(nnml "mihkel") gnus-secondary-select-methods `((nnimap "account1" (nnimap-address "imap.gmail.com") (nnir-search-engine imap) (nnimap-server-port 993) (nnimap-stream ssl) (nnimap-authinfo-file "~/.emacs.d/.authinfo.gpg") ) (nnimap "account2" (nnimap-address "imap.gmail.com") (nnir-search-engine imap) (nnimap-server-port 993) (nnimap-stream ssl) (nnir-search-engine imap) (nnimap-authinfo-file "~/.emacs.d/.authinfo.gpg") ) (nnimap "account3" (nnimap-address "imap.gmail.com") (nnir-search-engine imap) (nnimap-server-port 993) (nnimap-stream ssl) (nnimap-authinfo-file "~/.emacs.d/.authinfo.gpg") ) (nnimap "account4" (nnimap-address "imap.gmail.com") (nnir-search-engine imap) (nnimap-server-port 993) (nnimap-stream ssl) (nnimap-authinfo-file "~/.emacs.d/.authinfo.gpg") ) (nnimap "account5" (nnimap-address "mail.hot.ee") (nnir-search-engine imap) (nnimap-server-port 143) (nnimap-authinfo-file "~/.emacs.d/.authinfo.gpg") ) (nntp "nntp.dragonflybsd.org" (nntp-address "nntp.dragonflybsd.org") (nntp-server-port 563) (nntp-stream ssl) ) (nntp "news.gmane.org" (nntp-address "news.gmane.org") (nntp-server-port 563) (nntp-stream ssl) ))) ;; Let Gnus change the "From:" line by looking at current group we are ;; in. (setq gnus-posting-styles '(("account1" (address "account1@gmail.com") (name "nimi1")) ("account2" (address "account2@gmail.com") (name "nimi2")) ("account3" (address "account3@gmail.com") (name "nimi3")) ("account4" (address "account4@gmail.com") (name "account4")) ("account5" (address "account5@hot.ee") (name "nimi4")) )) ;; Available SMTP accounts. (defvar smtp-accounts '((ssl "account1@gmail.com" "smtp.gmail.com" 587 "account1@gmail.com" nil) (ssl "account2@gmail.com" "smtp.gmail.com" 587 "account2@gmail.com" nil) (ssl "account3@gmail.com" "smtp.gmail.com" 587 "account3@gmail.com" nil) (ssl "account4@gmail.com" "smtp.gmail.com" 587 "account4@gmail.com" nil) (ssl "account5@hot.ee" "mail.hot.ee" 25 "account5" nil) )) ;; Default smtpmail.el configurations. (require 'smtpmail) (setq send-mail-function 'smtpmail-send-it message-send-mail-function 'smtpmail-send-it mail-from-style nil smtpmail-debug-info t smtpmail-debug-verb t) (defun set-smtp (mech server port user password) "Set related SMTP variables for supplied parameters." (setq smtpmail-smtp-server server smtpmail-smtp-service port smtpmail-auth-credentials (list (list server port user password)) smtpmail-auth-supported (list mech) smtpmail-starttls-credentials nil) (message "Setting SMTP server to `%s:%s' for user `%s'." server port user)) (defun set-smtp-ssl (server port user password &optional key cert) "Set related SMTP and SSL variables for supplied parameters." (setq starttls-use-gnutls t starttls-gnutls-program "gnutls-cli" starttls-extra-arguments nil smtpmail-smtp-server server smtpmail-smtp-service port smtpmail-auth-credentials (list (list server port user password)) smtpmail-starttls-credentials (list (list server port key cert))) (message "Setting SMTP server to `%s:%s' for user `%s'. (SSL enabled.)" server port user)) ;; Change smtp server according to "from" field (defun change-smtp () "Change the SMTP server according to the current from line." (save-excursion (loop with from = (save-restriction (message-narrow-to-headers) (message-fetch-field "from")) for (acc-type address . auth-spec) in smtp-accounts when (string-match address from) do (cond ((eql acc-type 'plain) (return (apply 'set-smtp-plain auth-spec))) ((eql acc-type 'ssl) (return (apply 'set-smtp-ssl auth-spec))) (t (error "Unrecognized SMTP account type: '%s'." acc-type))) finally (error "Cannot interfere SMTP information.")))) (defvar %smtpmail-via-smtp (symbol-function 'smtpmail-via-smtp)) (defun smtpmail-via-smtp (recipient smtpmail-text-buffer) (with-current-buffer smtpmail-text-buffer (change-smtp)) (funcall (symbol-value '%smtpmail-via-smtp) recipient smtpmail-text-buffer)) ;; Genral settings (setq gnus-visible-headers (mapconcat 'regexp-quote '("From:" "Newsgroups:" "Subject:" "Date:" "Organization:" "To:" "Cc:" "Followup-To" "Gnus-Warnings:" "X-Sent:" "X-URL:" "User-Agent:" "X-Newsreader:" "X-Mailer:" "Reply-To:" "X-Spam:" "X-Spam-Status:" "X-Now-Playing" "X-Attachments" "X-Diagnostic") "\\|")) (setq gnus-treat-emphasize t gnus-treat-buttonize t gnus-treat-buttonize-head 'head gnus-treat-unsplit-urls 'last gnus-treat-leading-whitespace 'head gnus-treat-highlight-citation t gnus-treat-highlight-signature t gnus-treat-date-lapsed 'head gnus-treat-strip-trailing-blank-lines t gnus-treat-strip-cr t gnus-treat-overstrike nil gnus-treat-display-x-face t gnus-treat-display-face t gnus-treat-display-smileys nil gnus-treat-x-pgp-sig 'head) ;; Nice and concise, collapsable too. (add-hook 'gnus-group-mode-hook 'gnus-topic-mode) ;; Set unicode face (setq gnus-face-9 'font-lock-warning-face) (setq gnus-face-10 'shadow) (setq-default gnus-summary-line-format (concat "%0{%U%R%z%}" "%10{│%}" "%1{%d%}" "%10{│%}" ;; date " " "%4{%-21,21f%}" ;; name " " "%10{│%}" "%1{%6k%}" "%10{│%}" ;; size " " "%1{%B%}" "%s\n" ) gnus-user-date-format-alist '((t . "%d.%m.%Y %H:%M")) gnus-summary-thread-gathering-function 'gnus-gather-threads-by-references gnus-thread-sort-functions '(gnus-thread-sort-by-date) gnus-sum-thread-tree-indent " " gnus-sum-thread-tree-root "● " gnus-sum-thread-tree-false-root "◯ " gnus-sum-thread-tree-single-indent "◎ " gnus-sum-thread-tree-vertical "│" gnus-sum-thread-tree-leaf-with-other "├► " gnus-sum-thread-tree-single-leaf "╰► " ) (setq gnus-summary-display-arrow t) ;; End of file
Ja siia juurde ka .authinfo.gpg. Fail ise on krüpteeritud… nagu faililaiendist aru võib saada. Puuduseks on see, et iga kord, kui meili saata, siis küsitakse vastava smtp serveri salasõna. Praegu veel ei oska mitme konto sama kujuga smtp (smtp.gmail.com) serverit .authinfo.gpg faili kirja panna, niiet automaatne smtp serveri vahetamine toimiks. Elan üle.
machine account1 login account1@gmail.com password salasõna port 993 machine account2 login account2@gmail.com password salasõna port 993 machine account3 login account3@gmail.com password salasõna port 993 machine account4 login account4@gmail.com password salasõna port 993 machine account5 login account5 password salasõna port 143
4 Kuvatõmmised

emacs töös

gnus loeb njuusi
Kuupäev: 2012-04-14 11:50:29 EEST
HTML generated by org-mode 6.33x in emacs 23