Makra w Emacsie
March 30th, 2008
Liczba odwiedzin spada, trzeba brać się do roboty.
Jedną z najfajnieszych, moim zdaniem możliwości które umożliwa Emacs
są makra.
Makra to zapisany ciąg kombinacji klawiszowych od punktu A do B. Są
one czymś pośrednim pomiędzy manualnym poprawianiem pliku a skryptem
który przetwarza cały plik (np. napisany w Perlu). Czasem przypomina
pisanie takiego skryptu na żywo, widząc co robi pokoleji
Porady wesołego użytkownika makr
Porada 1 - zapamiętaj skróty klawisze
C-x (- Rozpoczni defeniować makroC-x )- Zakończ definicję makraC-x e- Wykonaj ostanie makroM-n C-x e- Wykonaj ostanie makro n razyM-x name-last-kbd-macro- Nadaj ostaniemu makru nazwę (potrzebne do zapisu)M-x insert-keyboard-macro- Wypiszę makro w kodzie Lispam-x macroname- Wykonaj nazwane makro
Koniecznie z binduj pojedyczy klaszwisz do powtórzeń makr (np. F4)
(define-key global-map [f4] ‘call-last-kbd-macro)
Porada 2 - Makruj wszystko
Uważam, że małe makra są najważniejsze, bo najczejściej używane oraz
najwięcej czasu zaoszczędzają.
Chodźbyś miał zaoszczędzić 5 sekund, warto. “Pisanie makrowe” jest
równo znaczne z myśleniem jak robić by się nie narobić.
Porada 3 - Znasz skróty klawiszowe?
Przed pisaniem/tworzeniem makra musisz być zaznajomony z podstawowymi
skrótami klawiszowymi dt. poruszania się po pliku.
Ściągawkę znajdziesz w sieci, przykładową zajdziesz tu
Porada 4 - Zakładki (Bookmarks)
Korzystałeś z nich? Działają tak jak te w książkach pozwalają na łatwy
dostęp do danej strony w ulubionej powieści.
Tutaj znaczy się w Emacsie oznaczają plik i numer lini. W makrach
używam ich do skakania pomiędzy punktami w pliku np. do szybkiego
deklarowania funkcji w C++.
Czy też do pobierania danych z innych plików.
Przykład
Przykładowo pracujemy nad stroną WWW, mamy do wyróżnienia pojedyncze
słowa. Piszemy odpowiedni styl CSS, przykładowo klasę “.wazne” która
to koloruje tekst, robi specjalny kolor pod i tak dalej.
Wygląda to tak.
słowo
Dzięki makru, wystarczy że nakierujemy kursorem na “słowo” skrót
klawiszowy wykonujący ostanie makro i mamy odpowiednie słowo zrobione
“Makro w klawiszach”
C-x (
M-f ;; Przejście na koniec słowa
M-b ;; Przejście na początek słowa
C-x )
Powysze makro uwalnia nas od konieczności bycia na konkretnej literze
(pierwszej bądź ostatniej). Rozpoczęcie o końca jest tajemnicą
sukcesu, albowiem użycie na pierwszej literze M-b spowoduje przejście
do porzedniego wyrazu, wtedy zły wyraz zostanie “ogarnięty” przez span.
Emacs Corner: Przystosowanie Emacsa do Windowsa.
March 9th, 2008
Gnu/Emacs był tworzony pod Unixem i tam się czuje najlepiej. Jednakże
przyzwyczajenia ludzi idą za nim. Jak zmieniłem system z Linuksa na
Windows zaczęło mi brakować mojego ulubionego edytora. Znalazłem
instalator dla Windows z dodatkami (EmacsW32).
Uruchomiłem… i działa. Tyle, że problem był z kodowaniem polskich
ogonków.
Wpis do .emacs:
(set-keyboard-coding-system 'cp1250)
(prefer-coding-system 'windows-1250)
Załatwił sprawę.
Dalej, instalacja Aspella (do poszukiwań błędów ortograficznych),
później do instalowanie słownika z Kurnika - jest aktualniejszy.
Wpis do .emacs:
(setq ispell-program-name "aspell")
(setq ispell-dictionary "polish")
Zmiana katalogu “startowego”:
(setq default-directory "D:/nazwa_katalogu/")
Oraz na koniec ustawienie Consolas jako czcionki domyślnej dla Emacsa
(set-default-font "-outline-Consolas-normal-r-normal-normal-*-*-96-96-c-*-iso8859-2")
Emacs Corner: Dired (2/2)
June 29th, 2007
Druga część opowieści o Dired.
‘l’
‘k’
‘!’
‘% u’
‘% l’
‘=’
‘M-=’
‘i’
Emacs Corner: Dired (1/2)
June 29th, 2007
Tryb Dired w Emacsie (uruchamiany przez M-x dired lub C-x d), jest przeznaczony
do obsługi plików/oraz katalogów. Podobne jest to do MC, tyle że
zawiera jedną kolumnę.
Bufor jest uruchamiany jako ‘read-only” (tylko od odczytu) wpisywanie
tekstu nie jest użyteczne, bo jak użyje się np. ‘d’ lub ‘x’ to wywoła
to jakąś funkcję, co potem może być bolesne w skutkach. Istnieją
komendy które zaznaczają poszczególne pliki/katalogi.
Aby uruchomić Dired w innym buforze użyj ‘C-x 4
d’('dired-other-window’). Gdy chcesz uruchomić Dired w nowym oknie użyj
‘C-x 5 d’ (’dired-other-frame’).
Poruszanie po Dired jest podobne do samego Emacsa, przez ‘C-n’ i
‘C-p’ “pojedziesz” kursorem w górę i w dół.
Dla wygody można użyć <SPC> lub `n’ zamiast ‘C-n’. ‘p’
zamiast`C-p’. <DEL> idze w górę listy oraz usuwa zaznaczenia
‘j’ (`dired-goto-file’) idze do miejsca gdzie znajduję się podany
plik.
Usuwanie
‘d’
‘u’
‘x’
pewno usunąć podane pliki.
‘~’
‘#’
się na nim.
‘&’
‘% d REGEXP <RET>’
“Odwiedzanie” pliku
‘f’
‘<RET>’
‘e’
‘o’
‘C-o’
‘C NEW <RET>’
‘D’
‘R NEW <RET>’
‘H NEW <RET>’
‘S NEW <RET>’
‘M MODESPEC <RET>’
‘G NEWGROUP <RET>’
‘T TIMESTAMP <RET>’
‘P COMMAND <RET>’
‘Z’
‘L’
‘B’
‘A REGEXP <RET>’
Wyłączyć tworzenie plików *~ w Emacs
June 29th, 2007
Jedną z rzeczy do której w Emacsie ludzie jej nienawidzą i kochają są
robione przez program backapy, tyle że czesto i w wyniku tego powstało
została zarchiwizowana 183 wersja pliku .emacs (tak, bardzo często go
zmieniam) dla tych którzy twierdzą, że nie potrzebują backapu
znalazłem komendę którą można dodać do pliku .emacs
(setq make-backup-files nil)
Emacs Corner: Skróty związane z szukaniem
May 31st, 2007
Skróty:
C - Control
M - Meta (Alt)
<RET> - Enter
C-s
Przyrostkowe szukanie do przodu
C-r
Przyrostkowe szukanie w tył
C-s <RET> STRING <RET>
Szukanie STRINGU
C-r <RET> STRING <RET>
Szukanie do tylu STRINGU
C-s <RET> C-w SŁOWO <RET>
Szukanie SŁOWA/SŁÓW.
C-r <RET> C-w SŁOWO <RET>
Szukanie w tył SŁOWA/SŁÓW.
Korzystanie z wyrażeń regularnych
C-M-s (ESC Ctrl-s, jeżeli nie masz przycisku Meta)
Szukanie tekstu z wykorzystaniem wyrażeń regularnych.
C-M-r (ESC Ctrl-r, jeżeli nie masz przycisku Meta)
Szukanie tekstu w tył z wykorzystaniem wyrażeń regularnych.
Emacs Corner: Mniej znane skróty
May 25th, 2007
Skróty:
C - Control
M - Meta (Alt)
<RET> - Enter
<SPC> - Spacja
<DEL> - Delete
C-o
Wstawia pustą linię, ale nie powoduje przejścia kursora do następnej linii jak <RET>.
C-x C-o
Usuwa puste linie.
M-d
Usuwa słowo po znaku kursora.
M-<DEL>
Usuwa słowo przed kursorem
M-g M-g
M-g g’
M-x goto-line
Przejście do podanej linii
M-x goto-char
Przejście do podanego znaku
C-w
Usunięcie zaznaczenia obszaru zaznaczenia
C-x C-x
Zaznaczenia całego pliku
Emacs Corner: python-mode.el
May 9th, 2007
Wielki Emacs nie posiada domyślnie wspomagania Pythona. Trochę to dziwi, ale jest na to sposób.
Istnieje python-mode.el support dla Emacs’a. Ściągniesz go z SourceForge.net:
Po ściągnięciu niewielkiego, spakowanego pliku rozpakujemy go w naszym LoadPath (link jak ustawić LoadPath).
Następnie dodajemy poniższe linie do ~/.emacs.
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
a to może być przydatne:
(add-hook 'python-mode-hook
(lambda ()
(set (make-variable-buffer-local 'beginning-of-defun-function)
'py-beginning-of-def-or-class)
(setq outline-regexp "def\\|class ")))
Emacs Corner: LoadPath
May 9th, 2007
Powrót serii postów o Emacs, które zostały usunięte prawie w całości po moich porządkach na blogu #1, #2.
Oby to był powrót warty zachodu
Zmienna load-path odpowiada za załadowanie plików elisp. Zostaną one wyszukane zgodnie z porządkiem wydawanych poleceń.
Pojedynczy katalog dodamy do “load-path” za pomocą:
(setq load-path (cons "~/sciezka/do/adresu" load-path))
umieszczamy powyższy wpis do .emacs
.Aby dodać do “load-path” katalog razem z podkatalogami użyjemy:
(progn (cd "~/elisp") (normal-top-level-add-subdirs-to-load-path))
Zapewne do tego wpisu będę się często odwoływał.