Table des matières

Emacs / Xemacs

C'est Kaspar (comprennent ceux qui le connaissent) qui m'a initié, en 1998, à cet éditeur irremplaçable, lorsque d'autres éditeurs graphiques ne suffisent plus et en évitant le rupestre vi

Doc

https://linuxfr.org/users/bersace/journaux/une-configuration-gnu-emacs-communautaire-qui-vaut-le-detour-doom-emacs

EmacsWiki

The EmacsWiki is dedicated to documenting and discussing EmacsAndXEmacs and EmacsLisp. See the MissionStatement for more information.

LaTeX

auctex

AUCTeX is an extensible package for writing and formatting TeX files in GNU Emacs and XEmacs. It supports many different TeX macro packages, including AMS-TeX, LaTeX, Texinfo, ConTeXt, and docTeX (dtx files).

https://www.gnu.org/software/auctex/

TeX-Mode

Emacs provides special major modes for editing files written in TeX and its related formats. TeX is a powerful text formatter written by Donald Knuth; like GNU Emacs, it is free software. LaTeX is a simplified input format for TeX, implemented using TeX macros. DocTeX is a special file format in which the LaTeX sources are written, combining sources with documentation. SliTeX is an obsolete special form of LaTeX.

https://www.gnu.org/software/emacs/manual/html_node/emacs/TeX-Mode.html

Astuces

Utile pour recharger un programme édité ailleurs (si on bosse avec plusieurs éditeurs simultanément sur un même fichier:

M-x revert-buffer (if you want you can bind it to a key), or use a more practice trick: use C-x C-v RET.

Emacs Command Summary

SOURCE: http://www.cs.rutgers.edu/LCSR-Computing/some-docs/emacs-chart.html

Emacs command summary, Thu Jul 25.

C-SP     set-mark-command		 C-q      quoted-insert
C-a      beginning-of-line		 C-r      isearch-backward
C-b      backward-char			 C-s      isearch-forward
C-c      exit-recursive-edit		 C-t      transpose-chars
C-d      delete-char			 C-u      universal-argument
C-e      end-of-line			 C-v      scroll-up
C-f      forward-char			 C-w      kill-region
C-h      help-command			 C-x      Control-X-prefix
TAB      indent-for-tab-command		 C-y      yank
LFD      newline-and-indent		 C-z      suspend-emacs
C-k      kill-line			 ESC      ESC-prefix
C-l      recenter			 C-]      abort-recursive-edit
RET      newline			 C-_      undo
C-n      next-line			 SPC .. ~        self-insert-command
C-o      open-line			 DEL      delete-backward-char
C-p      previous-line

C-h v    describe-variable		 C-h d    describe-function
C-h w    where-is			 C-h k    describe-key
C-h t    help-with-tutorial		 C-h c    describe-key-briefly
C-h s    describe-syntax		 C-h b    describe-bindings
C-h n    view-emacs-news		 C-h a    command-apropos
C-h C-n  view-emacs-news		 C-h C-d  describe-distribution
C-h m    describe-mode			 C-h C-c  describe-copying
C-h l    view-lossage			 C-h ?    help-for-help
C-h i    info				 C-h C-h  help-for-help
C-h f    describe-function

C-x C-a  add-mode-abbrev		 C-x 5    split-window-horizontally
C-x C-b  list-buffers			 C-x ;    set-comment-column
C-x C-c  save-buffers-kill-emacs	 C-x <    scroll-left
C-x C-d  list-directory			 C-x =    what-cursor-position
C-x C-e  eval-last-sexp			 C-x >    scroll-right
C-x C-f  find-file			 C-x [    backward-page
C-x C-h  inverse-add-mode-abbrev	 C-x ]    forward-page
C-x TAB  indent-rigidly			 C-x ^    enlarge-window
C-x C-l  downcase-region		 C-x `    next-error
C-x C-n  set-goal-column		 C-x a    append-to-buffer
C-x C-o  delete-blank-lines		 C-x b    switch-to-buffer
C-x C-p  mark-page			 C-x d    dired
C-x C-q  toggle-read-only		 C-x e    call-last-kbd-macro
C-x C-r  find-file-read-only		 C-x f    set-fill-column
C-x C-s  save-buffer			 C-x g    insert-register
C-x C-t  transpose-lines		 C-x h    mark-whole-buffer
C-x C-u  upcase-region			 C-x i    insert-file
C-x C-v  find-alternate-file		 C-x j    register-to-dot
C-x C-w  write-file			 C-x k    kill-buffer
C-x C-x  exchange-dot-and-mark		 C-x l    count-lines-page
C-x C-z  suspend-emacs			 C-x m    mail
C-x ESC  repeat-complex-command		 C-x n    narrow-to-region
C-x $    set-selective-display		 C-x o    other-window
C-x (    start-kbd-macro		 C-x p    narrow-to-page
C-x )    end-kbd-macro			 C-x q    kbd-macro-query
C-x +    add-global-abbrev		 C-x r    copy-rectangle-to-register
C-x -    inverse-add-global-abbrev	 C-x s    save-some-buffers
C-x .    set-fill-prefix		 C-x u    advertised-undo
C-x /    dot-to-register		 C-x w    widen
C-x 0    delete-window			 C-x x    copy-to-register
C-x 1    delete-other-windows		 C-x {    shrink-window-horizontally
C-x 2    split-window-vertically	 C-x }    enlarge-window-horizontally
C-x 4    ctl-x-4-prefix			 C-x DEL  backward-kill-sentence

ESC C-SP mark-sexp			 ESC =    count-lines-region
ESC C-a  beginning-of-defun		 ESC >    end-of-buffer
ESC C-b  backward-sexp			 ESC @    mark-word
ESC C-c  exit-recursive-edit		 ESC O    ??
ESC C-d  down-list			 ESC [    backward-paragraph
ESC C-e  end-of-defun			 ESC \    delete-horizontal-space
ESC C-f  forward-sexp			 ESC ]    forward-paragraph
ESC C-h  mark-defun			 ESC ^    delete-indentation
ESC LFD  indent-new-comment-line	 ESC a    backward-sentence
ESC C-k  kill-sexp			 ESC b    backward-word
ESC C-n  forward-list			 ESC c    capitalize-word
ESC C-o  split-line			 ESC d    kill-word
ESC C-p  backward-list			 ESC e    forward-sentence
ESC C-s  isearch-forward-regexp		 ESC f    forward-word
ESC C-t  transpose-sexps		 ESC g    fill-region
ESC C-u  backward-up-list		 ESC h    mark-paragraph
ESC C-v  scroll-other-window		 ESC i    tab-to-tab-stop
ESC C-w  append-next-kill		 ESC j    indent-new-comment-line
ESC ESC  ??				 ESC k    kill-sentence
ESC C-\  indent-region			 ESC l    downcase-word
ESC SPC  just-one-space			 ESC m    back-to-indentation
ESC !    shell-command			 ESC q    fill-paragraph
ESC $    spell-word			 ESC r    move-to-window-line
ESC %    query-replace			 ESC t    transpose-words
ESC '    abbrev-prefix-mark		 ESC u    upcase-word
ESC (    insert-parentheses		 ESC v    scroll-down
ESC )    move-past-close-and-reindent	 ESC w    copy-region-as-kill
ESC ,    tags-loop-continue		 ESC x    execute-extended-command
ESC -    negative-argument		 ESC y    yank-pop
ESC .    find-tag			 ESC z    zap-to-char
ESC 0 .. ESC 9  digit-argument		 ESC |    shell-command-on-region
ESC ;    indent-for-comment		 ESC ~    not-modified
ESC <    beginning-of-buffer		 ESC DEL  backward-kill-word

C-x 4 C-f       find-file-other-window	 C-x 4 d  dired-other-window
C-x 4 .  find-tag-other-window		 C-x 4 f  find-file-other-window
C-x 4 b  pop-to-buffer			 C-x 4 m  mail-other-window

Case Change

uppercase word                      M-u
lowercase word                      M-l
capitalize word                     M-c
uppercase region                    C-x C-u
lowercase region                    C-x C-l
capitalize region             M-x capitalize-region

indentation

C-x TAB
    Shift block of lines rigidly right or left (indent-rigidly). 

TAB
    Indent current line "appropriately" in a mode-dependent fashion. 
LFD
    Perform RET followed by TAB (newline-and-indent). 
M-^
    Merge two lines (delete-indentation). This would cancel out the effect of LFD. 
C-M-o
    Split line at point; text on the line after point becomes a new line indented to the same column that it now starts in (split-line). 
M-m
    Move (forward or back) to the first nonblank character on the current line (back-to-indentation). 
C-M-\
    Indent several lines to same column (indent-region). 

M-i
    Indent from point to the next prespecified tab stop column (tab-to-tab-stop). 
M-x indent-relative
    Indent from point to under an indentation point in the previous line.

Astuces / Tips

Theme

pour changer de thème, p. ex. pour avoir un fond sombre

 ALT-X customize-themes
 

Replacing with RegExp within (x)emacs

query-replace-regexp
<a href=\(.*\)>
<a class="ns" href=\1>

<a href="http://www.a">a</a>
b
c
<\(/?\)font>

<font>\(.*\)<\/font>
\1

<font.*>\(.*\)<\/font>
<span class="ns">\1</span>

<font class="\(.*\)">\(.*\)<\/font>
<span class="\1">\2</span>

<font size=\(.*\)>\(.*\)<\/font>
<span class="\1">\2</span>

pour changer les noms de variables php

/* put here your variable list

var1
variabl2
etc...

note: you can get it with a command like
ex. your form has lines like

<input type="text" name="titre" size="60">
<input type="checkbox" name="image" value="1">

cat yourForm.php | sed 's|^.*name="||g' | sed 's|".*$||g'

will return
titre
image

*/
/*copy-paste
var1
variabl2
etc...
*/
in emacs, do a:
CTRL-ALT-SHIFT-% (query-replace-regexp)
^\(.*\)$
[ENTER]
$\1=$_POST['\1'];
[ENTER]
then try somes, if ok just make ! to change everything

the result
$var1=$_POST['var1'];
$variabl2=$_POST['variabl2'];

of course you can do the same with other replacement

Replacing emails with firstname emails

eg you have

John.Doe@soviet.org
Mary.Smith@bolchoi.net

and want

John John.Doe@soviet.org
Mary Mary.Smith@bolchoi.net

this is the way:

CTRL-SHIFT-ALT-%

^\([A-Z][a-z]*\)\.\([A-Z][a-z]*\)@\(.*\)$
\1   \1.\2@\3

how to introduce a new line with regexp (x)emacs

example:
transform
a,b,c
into 
a
b
c

use regular expression replacement:
alt-ctrl-shift-%
type the string you want to replace, eg. ,
RET
alt-J
RET
!
and it's done!

THE OTHER WAY (REPLACE LINES WITH STHING)
alt-ctrl-shift-%
type the string you want to replace, eg. ,
alt-J
RET
THEN THE REPLACEMENT, eg ,
RET
!

a
b
c
WILL become
a,b,c

how to print special characters

-> scratch, C-q + caract. (eg tab)
esc ^[
return ^M
linefeed ^J

HTML-Helper-Mode, php syntax highlighting etc.

http://radeff.red/info/emacs/html_helper_mode.htm

for ubuntu:

sudo apt-get install php-mode php-elisp html-helper-mode css-mode

PHP & emacs

pour cakephp & ses fichus fichiers “views” *.ctp:

radeff@radeff-desktop:~$ gedit .xemacs/init.el

(add-to-list 'auto-mode-alist '(“\\.ctp$” . php-mode))

et relancer xemacs

How can I get XEmacs to work with UTF-8 files?

If you want XEmacs to load UTF-8 files correctly, add the following lines to your ~/.xemacs/init.el:

(require 'un-define) (set-coding-priority-list '(utf-8)) (set-coding-category-system 'utf-8 'utf-8)

ci-dessus pas terrible, il faut mieux utiliser la solution suivante:

source: http://www.maruko.ca/i18n/

If you want XEmacs to load UTF-8 files correctly, add the following lines to your ~/.xemacs/init.el:

(require 'un-define)
(set-coding-priority-list '(utf-8))
(set-coding-category-system 'utf-8 'utf-8)

last complex command

C-x esc esc
before commands: esc p

Repeating Query-Replaces

ESC < followed by C-x ESC ESC

Top/End of file

esc <
esc >

FTP / SFTP / Tramp

Source: http://www.benjaminbaudouin.com/xemacs-edit-over-ssh (dead link)

Grâce au package TRAMP (Transparent Remote Access, Multiple Protocols), il est possible d’éditer des fichiers distants via SSH par exemple.

Installation (Debian) :

apt-get install tramp

Utilisation :

    xemacs /[ssh/user@host]/chemin/fichier
    emacs /ssh:user@host:/chemin/fichier

Remarque :

Ajoutez (setq tramp-default-method “ssh”) dans votre ~/.xemacs/custom.el pour de pas avoir à préciser la méthode ssh

Shortcuts