Je cherchais une commande qui, espérons-le, ouvrirait léditeur de texte préféré de lutilisateur actuel, car jécris des instructions avec des commandes dans un blog. Je mattendais à une commande comme edit
, et jai trouvé editor
. Pour moi, cela a démarré vim dans le terminal, ce qui est proche de ce que Je voulais; jutilise vim-gtk. Jai commencé à chercher un moyen de faire en sorte que léditeur utilise vim-gtk et jai trouvé cette question qui explique une $EDITOR
variable denvironnement, mais je ne sais pas si cela est même lié à la commande editor
. Jai essayé man editor
, mais cela vient de faire apparaître la page de manuel de vim.
Comment puis-je faire en sorte que editor
utilise un éditeur de texte de mon choix, ou devrais-je utiliser une commande différente?
Réponse
Ceci est un Debian-ism (et apparaît donc dans Ubuntu, Mint, etc.). Ils sont installés un appel de lien ed editor
. Vous pouvez le retracer comme suit:
$ which editor /usr/bin/editor $ ls -l /usr/bin/editor lrwxrwxrwx 1 root root 24 Nov 24 19:10 /usr/bin/editor -> /etc/alternatives/editor $ ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 18 Nov 24 19:46 /etc/alternatives/editor -> /usr/bin/vim.gnome $ ls -l /usr/bin/vim.gnome -rwxr-xr-x 1 root root 2403392 Oct 26 2012 /usr/bin/vim.gnome
Ainsi, vous pouvez voir que editor
nest quun lien Unix vers lexécutable vim.gnome
.
Utilisation de editor
?
Je ne « crois pas » d aller dans cette direction en configurant editor
de manière significative pour les utilisateurs, étant donné que ce n’est pas ce que je considère comme standard.
De plus, vous pouvez définir le $EDITOR
variable denvironnement pour pointer vers tout ce que vous voulez, vim
, gedit
, emacs
, etc. Mais cette variable nest garantie que pour être utilisée par dautres outils tels que sudo
, git
et subversion
qui sont spécifiquement conçus pour être liés à lutilisation de la variable $EDITOR
.
Idées de mise en œuvre
Je voudrais simplement configurer un alias de votre choix et soit indiquer aux utilisateurs quil est disponible pour les via leur fichier $HOME/.bashrc
en tant qualias X, ou le configurer comme configuration système dans le fichier /etc/profile.d/our_aliases.sh
, en tant qualias X.
Ou vous pouvez simplement dire aux utilisateurs que les systèmes « fournissent gedit
, gvim
, vim
, emacs
, etc. et découpez lenrobage de sucre et apprenez-leur ces choses dès le départ.
Ou vous pouvez fournir un texte fichier appelé /etc/help.txt
quils pourraient exécuter via une commande help
(alias help="less /etc/help.txt"
) dans un shell qui fournirait des commandes de base et comment effectuer diverses tâches. Cette approche vous permet de personnaliser laide au fil du temps avec de nouvelles fonctionnalités ou astuces et leur donne plus que la simple commande de commodité editor
.
Commentaires
Réponse
Le programme dédition appelé par certains programmes lorsque vous leur dites déditer un fichier. Vous devez définir la variable denvironnement vous-même.
Si vous utilisez csh ou tcsh, à linvite du shell:
setenv EDITOR vim
Si vous utilisez bash ou ksh, puis entrez:
EDITOR=vim; export EDITOR
(Remplacez « vim » par léditeur que vous souhaitez utiliser.)
Le EDITOR
est celle dont vous avez besoin par défaut pour que certaines applications invoquent léditeur. Il existe une autre variable appelée VISUAL
utilisée pour spécifier léditeur orienté écran. En général, vous souhaiterez lui attribuer la même valeur que la variable EDITOR
. À lorigine, EDITOR
aurait été défini sur ed (un éditeur basé sur des lignes) et VISUAL
aurait été défini sur vi (un écran- basé sur léditeur).
VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better
Lorsque vous avez fait cela, la plupart des programmes Unix utilisant des éditeurs de texte utiliseront léditeur que vous avez défini. En suivant les commandes ci-dessus, vous définirez léditeur par défaut pour la session de calcul en cours uniquement. Pour rendre ces modifications permanentes, vous devrez placer les commandes appropriées décrites ci-dessus dans votre .login
ou .cshrc
(pour les utilisateurs csh ou tcsh) ou votre fichier .profile
(si vous utilisez bash ou ksh).
Il existe également une autre variable denvironnement, si vous faites semblant dutiliser Emacs. Il « s ALTERNATE_EDITOR
, et a le même effet, mais il est utilisé lorsque Emacs est invoqué avec loption --alternate-editor
.
Du Manuel GNU Emacs :
Loption
--alternate-editor=command
est utile lors de lexécution deemacsclient
dans un script. Il spécifie une commande à exécuter siemacsclient
ne parvient pas à contacter Emacs. Par exemple, le paramètre suivant pour la variable denvironnementEDITOR
donnera toujours un éditeur, même si Emacs nest pas en cours dexécution:EDITOR="emacsclient --alternate-editor vi +%d %s"
Commentaires
- Dire
sh
doesn ‘ t a du sens.sh
est généralement le shell du système ‘. Cétait le shell Thomson, puis le shell Bourne et de nos jours sur la plupart des systèmes, un shell ou un autre implémentant la spécification POSIXsh
. La syntaxeexport EDITOR=vim
est POSIX, mais pas Bourne ni Thomson.export VISUAL=$EDITOR
fonctionne dansbash
et certaines implémentations deksh
. Vous avez besoin deexport VISUAL="$EDITOR"
dans la plupart des autres shells.VISUAL=$EDITOR export VISUAL
fonctionnera dans tous les shells de type Bourne, y compris le shell Bourne. - Est-il courant et accepté de définir
EDITOR
à une valeur multi-mots comme ça? Si tel est le cas, je ne peux pas utiliser en toute sécuritéwhich "$EDITOR"
ouwhich $EDITOR
pour vérifier sil est présent.
Réponse
Vous devrez spécifier le editor
dans la variable denvironnement EDITOR
. Ajoutez la commande suivante dans votre .profile
:
export EDITOR=editor
Si vous voulez vim
comme éditeur par défaut, vous lajouterez à la place
export EDITOR=vim
Préférence personnelle: jutilise le nom de chemin absolu de léditeur dans la variable denvironnement. Par exemple,
export EDITOR=/usr/bin/vim
Answer
Le La commande editor
est spécifique à ubuntu. Ce nest pas portable ni même courant (en dehors dubuntu). La commande est également définie à léchelle du système et non par utilisateur. La façon dont cela fonctionne est que /usr/bin/editor
est juste un lien symbolique vers un éditeur sur le système. En tant que tel, il en est de même pour tous les utilisateurs.
La variable denvironnement $EDITOR
est assez standard. Il est utilisé par de nombreux programmes qui demandent à lutilisateur de modifier quelque chose. En tant que telle, cest cette variable que vous devez utiliser lorsque vous souhaitez appeler léditeur de lutilisateur.
Commentaires
- Ce nest pas spécifique à Ubuntu il vient de Debian et utilise le mécanisme de ‘ s alternatives . Il ‘ est disponible dans tous les dérivés Debian, pas seulement Ubuntu.
Réponse
Voici ce que jutilise dans mon script:
# Find a suitable text editor editor="$VISUAL" [ -z "$editor" ] && editor="$EDITOR" [ -z "$editor" ] && which editor >/dev/null && editor=editor [ -z "$editor" ] && which nano >/dev/null && editor=nano [ -z "$editor" ] && which vi >/dev/null && editor=vi [ -z "$editor" ] && editor=no_editor_found # Use the editor we found $editor "$filename"
Je nai pas mis de guillemets autour de lappel final à $editor
pour massurer que lexemple emacsclient ci-dessus fonctionnera.
Pour cette raison, je pense quil est important de toujours définir une valeur pour editor
, sinon la dernière ligne pourrait exécuter involontairement $ filename . Dans mon cas, jai choisi no_editor_found
mais vous pouvez également utilisez pico
ou ed
ici.
$EDITOR
, maintenant je ‘ t se fier à cela ou au lien symboliqueeditor
.s/Ubuntu/Debian/g