Vous cherchez un terminal plein écran centré

8

Il existe plusieurs «éditeurs sans distraction» pour l'écriture: ceux-ci fournissent un environnement minimal en plein écran dans le but de se forcer à se concentrer sur la tâche à accomplir.

Je veux faire quelque chose de similaire avec vim. Bien que je puisse simplement le déclencher dans un terminal, puis appuyer sur F11 pour le mettre en plein écran, je veux également limiter la largeur à environ 75 caractères et centrer la zone que j'utilise.

Pensez à la façon dont les traitements de texte fournissent une page virtuelle au milieu du programme - c'est ce que je veux. Sorte de.

Existe-t-il un moyen de le faire, soit avec un programme terminal spécial, soit avec un paramètre dans vim? Si l'un des programmes GUI vim a cette capacité, ou s'il existe une autre façon de le faire à laquelle je n'ai pas pensé, ce serait également une réponse utile.

evilsoup
la source

Réponses:

12

Si vous commencez screendans un maximisé xterm( Alt-Enterin xterm) comme:

screen -c this-file

this-filecontient:

focusminsize 75 25
split -v
focus
only
split -v
split -v
focus

Vous obtiendrez une région centrale de largeur 75.

Stéphane Chazelas
la source
C'est si proche de la perfection, merci. Cela met en place des bordures blanches autour de la zone active et le long du bas du terminal; savez-vous s'il existe un moyen de s'en débarrasser?
evilsoup
Ça n'a pas marché pour moi.
slm
1
RE: mon commentaire précédent, la réponse pour se débarrasser des frontières se trouve à cette question SU . J'ai mis les lignes dans mon .screenrc, donc ma valeur par défaut screenutilisera toutes les commandes ici. Fonctionne parfaitement pour moi sur Ubuntu 13.04, la gnome-terminalversion 3.6.1 (et sur xterm et guake) et la screenversion 4.00.03jw4. Merci!
evilsoup
Je suis sur Fedora 14 et la version 2.32.0 de gnome-terminal. Version d'écran 4.00.03. xterm -v, 6.8.99.903. Ne fonctionne pas là-bas.
slm
Je l'ai essayé sur Ubuntu 13.04. Je vois maintenant ce que ça fait. Il s'agit de 3 volets, répartis également, et la mise au point se trouve au milieu.
slm
1

Une alternative consiste à utiliser un programme tel que devilspiepour y parvenir. Si vous n'avez jamais entendu parler de devilspie:

extrait

Un utilitaire de correspondance de fenêtres, inspiré de l'option «Fenêtres correspondantes» de Sawfish et du manque de fonctionnalité dans Metacity. Metacity manque de correspondance de fenêtres n'est pas une mauvaise chose - Metacity est un gestionnaire de fenêtres allégé, et la correspondance de fenêtres ne doit pas être une tâche de gestionnaire de fenêtres.

Devil's Pie peut être configuré pour détecter les fenêtres lors de leur création et faire correspondre la fenêtre à un ensemble de règles. Si la fenêtre correspond aux règles, elle peut effectuer une série d'actions sur cette fenêtre. Par exemple, je peux faire apparaître toutes les fenêtres créées par X-Chat sur tous les espaces de travail, et la fenêtre principale de Gkrellm1 n'apparaît pas dans le pager ou la liste des tâches.

Il devrait être dans la plupart des dépôts de distributions.

Exemple

Donc, pour centrer une xtermfenêtre à l' vimintérieur, procédez comme suit.

  1. Faites votre config de tarte du diable. dir.

    $ mkdir ~/.devilspie
    
  2. Créez un .dsfichier spécifiant que vous êtes la règle du diable

    $ cat ~/.devilspie/something.ds 
    (if
        (matches (application_name) "vim")
        (begin
            (geometry "600x400")
            (center)
        )
    )
    
  3. Courez devilspie. J'aime l'exécuter en mode débogage ( -d) pour commencer.

    $ devilspie -d
    Devil's Pie 0.22 starting...
    Loading /etc/devilspie
    /etc/devilspie doesn't exist
    Loading /home/saml/.devilspie
    Loading /home/saml/.devilspie/something.ds
    1 s-expressions loaded.
    
  4. Exécutez notre xtermavec vim.

    $ xterm -e vim
    

    SS de Xterm Vim

Quel est le nom de ma fenêtre?

Vous pouvez utiliser la commande xlsclient -lpour obtenir une liste des fenêtres ouvertes. Je trouve que c'est le moyen le plus simple de déterminer le nom d'une fenêtre à intégrer devilspie. Vous voudrez peut-être aussi en faire usage xwininfo.

Exemple

$ xlsclients -l|less
...
Window 0x6800023:
  Machine:  grinchy
  Name:  vim
  Icon Name:  vim
  Command:  xterm -e vim
  Instance/Class:  xterm/XTerm
...

Vous pouvez contrôler un nom de fenêtre comme celui-ci:

$ xterm -title WeirdWindow -e vim

Références

slm
la source
C'est vraiment bien, mais ce n'est pas ce que j'essaie d'accomplir. Il positionne simplement la fenêtre à un endroit spécifié et avec des dimensions de fenêtre spécifiées, non? Je veux avoir une «page» active au centre de l'écran, avec le reste de l'écran vide - donc il n'y a pas de distractions en arrière-plan.
evilsoup
@evilsoup - oui, il centre xterm @ dimensions spécifiées. Vous pouvez masquer l'arrière-plan, je mettrai à jour ma réponse afin que nous ayons une méthode alternative. Votre question ne disait pas que vous vouliez le masquer en arrière-plan, peut-être que j'ai raté quelque chose. Je pense aussi que vous manquez le pouvoir de devilspie. Vous pouvez par exemple ajouter une règle au fichier .ds pour minimiser tout le reste.
slm
@evilsoup - serait-il suffisant de supprimer l'arrière-plan? Je sais que vous avez l'autre solution mais je voulais juste proposer une méthode alternative.
slm
1

Il existe un plugin pour Vim appelé VimRoom qui fournit cela via un mappage (la valeur par défaut est V).

Wieland
la source