Cet article est le 21e jour du calendrier de l'Avent Emacs 2019.
Jour 20 @ l'article de Tachiyama L'éditeur le plus puissant d'Emacs peut faire de la matrice (comme des choses) Je prendrai le relais et rédigerai un article.
Emacs est un éditeur avec plus de 10 000 commandes intégrées et de nombreux packages disponibles. Nous les utilisateurs d'Emacs devons continuer à améliorer leurs Emacs à leur guise, même s'ils sont ridiculisés par d'autres programmeurs.
Gardez la blague jusqu'à ici (n'est-ce pas une blague?)
Connaissez-vous le package Lisp Emacs super talentueux EXWM (Emacs X Window Manager)? Ce package permet d'exécuter Emacs en tant que gestionnaire de fenêtres en mosaïque.
À mon avis, EXWM a deux avantages majeurs. Tout d'abord, ** Une fonction qui peut gérer les applications X Window comme un tampon **. Et ** le concept d'espace de travail **.
Puisque l'application X Window peut être utilisée comme tampon Emacs, vous pouvez instantanément afficher, changer et tuer la liste de tampons avec C-x b
. EXWM est un package qui incarne l'un des avantages de l'utilisation d'Emacs, ** opération avec une interface unifiée **.
Vient ensuite le concept d'espace de travail. Vous pouvez changer d'espace de travail avec la liaison de clé «s-n» (0-9 pour n). C'est très pratique, l'espace de travail 1 est pour la programmation, l'espace de travail 2 est un shell, l'espace de travail 3 est un navigateur Web, et ainsi de suite, il peut être organisé et actualisé dans le cerveau.
Bien sûr, il n'y a pas seulement des avantages mais aussi des inconvénients.
En premier lieu, puisqu'il s'agit d'un gestionnaire de fenêtres de type mosaïque EXWM, il est généralement difficile à utiliser lorsqu'il s'agit de gérer les fenêtres flottantes. (Y a-t-il beaucoup de scènes que vous voulez faire flotter?)
De plus, EXWM a encore une certaine instabilité. Selon l'environnement, il peut ne pas être possible de démarrer ou de saisir une touche. Je l'utilise sur les tests Debian depuis environ un an, mais un jour, il a soudainement cessé d'accepter les touches.
J'évacuais vers GNOME avec l'intention de le réparer plus tard, mais avant de le savoir, j'utilisais GNOME depuis plus de six mois. Cependant, j'ai toujours trouvé difficile d'utiliser Emacs sur GNOME. D'autant qu'il n'y a qu'une seule liste de tampons, basculer entre eux était fastidieux et inévitable pour moi, qui ouvre beaucoup de tampons. De plus, comme il n'y a qu'une seule fenêtre, il n'est pas possible d'ouvrir un grand nombre de tampons à la fois, ce qui est vraiment difficile à utiliser. (Bien que ce soit beaucoup plus pratique qu'un éditeur qui commence par V)
J'ai donc commencé à utiliser perspective.el, qui vous permet de regrouper les tampons et de basculer entre eux. Il peut créer un espace de travail et vous pouvez le nommer librement. Et vous pouvez basculer d'avant en arrière avec C-c p s <nom>
. Cependant, ce paquet n'a pas très bien pris racine. Tout d'abord, les raccourcis clavier sont longs et la saisie du nom est un problème, j'ai donc tendance à finir par faire les choses dans un seul espace de travail. Par conséquent, j'ai pensé comme suit.
** La liaison de clé de commutation est-elle simple, vous n'avez pas à taper de nom et vous ne pouvez pas déplacer l'espace de travail dans perspective.el? ** **
C'est pourquoi j'ai eu l'idée. J'aimerais pouvoir facilement changer l'espace de travail de perspective.el avec s -n
comme EXWM.
Tout d'abord, décidez de ce que vous voulez faire.
** Je veux pouvoir changer l'espace de travail de perspective.el avec s-n
(n est un nombre 0-9). ** **
Réfléchissez de manière appropriée à la manière d'y parvenir.
s-n
à (persp-switch (int-to-string n))
.Ça ressemble à ça. c'est simple. À propos, ma compétence Emacs Lisp n'est compréhensible qu'en lecture, et je peux à peine l'écrire. Donc, le code que j'ai écrit cette fois semble être loin du style d'écriture Emacs Lisp ... Si vous avez des conseils, laissez-les dans les commentaires.
Tout d'abord, j'écrirai le code d'Emacs Lisp qui fonctionne comme prévu. Si vous souhaitez l'afficher rapidement, veuillez écrire ce code dans init.el. À propos, veuillez noter que la liaison de clé est enregistrée avec M-n
au lieu de s-n
.
*** * Une addition * *** *** Puisque la bibliothèque cl a été supprimée en standard d'Emacs 27.0.91 publié l'autre jour, lexical-let ne peut plus être utilisé. J'ai changé le code suivant pour y correspondre. *** ***
(require 'perspective)
(persp-mode 1)
;;Génération d'espace de travail
(mapc (lambda (i)
(persp-switch (int-to-string i)))
(number-sequence 0 9))
;;;;Une fonction qui renvoie une fonction à enregistrer dans la clé
;;(defun local-switch-workspace (i)
;; (lexical-let ((index i))
;; (lambda ()
;; (interactive)
;; (persp-switch (int-to-string index)))))
;;
;;Mise à jour 2020/04/28
;;
(defun local-switch-workspace (index)
`(lambda ()
(interactive)
(persp-switch (int-to-string ,index))))
;;Enregistrer la liaison de clé
(mapc (lambda (i)
(global-set-key (kbd (format "M-%d" i)) (local-switch-workspace i)));;
(number-sequence 0 9))
;Le premier espace de travail est"1"Mis à
(persp-switch "1")
Je veux créer un espace de travail au démarrage, alors écrivez le processus pour créer l'espace de travail directement dans init.el.
;;Génération d'espace de travail
(mapc (lambda (i)
(persp-switch (int-to-string i)))
(number-sequence 0 9))
L'espace de travail est créé en passant l'expression lambda et la liste de 0 \ ~ 9 générée par la séquence de nombres à mapc en tant que fonction pour générer l'espace de travail. mapc est une fonction qui prend les valeurs une à une dans la liste des seconds arguments et les transmet à la fonction passée au premier argument pour exécution. Cette fonction est très pratique et très utilisée.
;;Une fonction qui renvoie une fonction à enregistrer dans la clé
;;(defun local-switch-workspace (i)
;; (lexical-let ((index i))
;; (lambda ()
;; (interactive)
;; (persp-switch (int-to-string index)))))
;;
;;Mise à jour 2020/04/28
;;
(defun local-switch-workspace (index)
`(lambda ()
(interactive)
(persp-switch (int-to-string ,index))))
Cette fonction renvoie une fonction qui bascule l'espace de travail. Il est supposé que la valeur de retour de cette fonction sera transmise à global-set-key
. Par exemple, si vous passez 1 à cette fonction et que vous l'exécutez, la fonction qui exécute (persp-switch" 1 ")
sera renvoyée. Vous passez cette fonction à global-set-key
.
Au début, j'essayais de passer l'expression lambda directement à global-set-key
, mais cela n'a pas fonctionné et j'ai opté pour cette forme. À la suite de la cristallisation de la sagesse des programmeurs Emacs Lisp expérimentés avec M. Google, il est devenu une fonction qui utilise lexical-let
. Ce let lexical est nécessaire pour créer une fermeture, mais cette fonctionnalité est disponible dans Emacs 24.1 et versions ultérieures, donc soyez prudent si vous utilisez un Emacs antérieur. Eh bien, maintenant en 2019, il est rare de trouver quelqu'un utilisant une version antérieure à Emacs 24.1. (J'utilise Emacs 26.3)
;;Enregistrer la liaison de clé
(mapc (lambda (i)
(global-set-key (kbd (format "M-%d" i)) (local-switch-workspace i)))
(number-sequence 0 9))
Ici, la liaison de clé est en fait enregistrée dans M-n
(n est un nombre de 0 \ ~ 9). Le contenu est simple, en utilisant mapc pour enregistrer la fonction de la valeur de retour de local-switch-workspace
dans les touches 0 \ ~ 9.
** C'est étrange **
Il doit être enregistré dans «s-n», mais il est enregistré dans «M-n». Je suis désolé. La liaison de clé Super-Number
a été enregistrée avec GNOME et n'a pas pu être transmise à Emacs. J'ai donc fait un compromis avec la touche Alt (touche Meta).
;Le premier espace de travail est"1"Mis à
(persp-switch "1")
Enfin, définissez l'espace de travail par défaut sur 1 et vous avez terminé.
Je l'utilise depuis environ une semaine et ça devient vraiment bon. Je pense que la commutation d'espace de travail EXWM a été reproduite presque complètement. De plus, étant donné que perspective.el fonctionne dans les coulisses, il y a un avantage que les fonctions fournies par perspective.el peuvent être utilisées telles quelles. De plus, je suis heureux d'avoir pu l'utiliser comme matériau pour le calendrier de l'Avent.
Enfin, je voudrais vous présenter l'usage qui s'est imposé chez l'auteur.
WS1 ~ 4 | WS5 ~ 7 | WS8 ~ 9 |
---|---|---|
programme+coquille | Phrases et scripts simples | Gratuit |
Si vous souhaitez changer d'espace de travail plus facilement, veuillez l'écrire dans init.el. Peut-être que vous en serez accro (ʻe ') Peer
Recommended Posts