[LINUX] L'espace de travail Emacs perspective.el est plus facile à utiliser

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.

Au début

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 **.

Avantages d'EXWM

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.

Problèmes avec EXWM

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.

Vie sombre de GNOME

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 commencé à utiliser perspective.el

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.

Enfin le sujet principal

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). ** **

Méthode

Réfléchissez de manière appropriée à la manière d'y parvenir.

Ç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.

j'écrirai

État terminé

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")

Créer un espace de travail

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é.

Essayez d'utiliser

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.

Introduction de la composition

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

en conclusion

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

L'espace de travail Emacs perspective.el est plus facile à utiliser
N'est-il pas recommandé d'utiliser pip directement?
Faciliter l'utilisation de la fonction clic de SikuliX
[Pandas] Qu'est-ce que set_option [Comment utiliser]
Comment utiliser is et == en Python
Jouons avec JNetHack 3.6.2 qui est plus facile à compiler!
Le grattage avec Python-Selenium est vieux! ?? ・ ・ ・ Comment utiliser Pyppeteer
Re: Python lambda est inutile ^ H ^ H ^ H ^ H ^ H Difficile à utiliser
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Flacon facile à utiliser
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Raisons d'utiliser le journal
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Facile à utiliser SQLite3
Comment utiliser la liste []
Comment utiliser python-kabusapi
Python-Comment utiliser pyinstaller
Comment utiliser OptParse
Comment utiliser le retour
Présentez elpy à emacs
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Utilisation d'icrawler plus simple pour la collecte de données d'apprentissage automatique
VIM est bon à utiliser - au moins un début pour l'utiliser
Le framework de Deep Learning de Microsoft "CNTK" est désormais compatible avec Python, ce qui le rend beaucoup plus facile à utiliser