<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/it/zsh.xml,v 1.8 2012/02/05 14:39:57 swift Exp $ -->

<guide lang="it">
<title>Guida alla configurazione e installazione di zsh</title>

<author title="Autore">
  <mail link="hekonsek@gmail.com">Henryk Konsek</mail>
</author>
<author title="Autore">
  <mail link="morritt.andrew@gmail.com">Andrew Morritt</mail>
</author>
<author title="Redazione">
  <mail link="chriswhite@gentoo.org">Chris White</mail>
</author>
<author title="Redazione">
  <mail link="welp@01gentoo.org">Peter Weller</mail>
</author>
<author title="Traduzione">
  <mail link="scen@gentoo.org">Davide Cendron</mail>
</author>

<abstract>
Questa guida mostra come installare e configurare velocemente zsh. Dopo aver
letto questo documento si avranno le conoscenze per usare molte delle
caratteristiche di zsh, come l'avanzato completamento tramite tabulazione, la
correzione automatica dei comandi e la gestione avanzata del prompt.
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>2</version>
<date>2006-10-18</date>

<chapter>
<title>Installazione</title>
<section>
<title>Installare zsh</title>
<body>

<p>
Per installare <c>zsh</c> in Gentoo, si devono installare i pacchetti
<c>app-shells/zsh</c> (zsh stesso) and <c>app-shells/zsh-completion</c> (script
di completamento per zsh) tramite emerge.
</p>

<pre caption="Emergere zsh">
# <i>emerge zsh zsh-completion</i>
</pre>

</body>
</section>
<section>
<title>Entrare in zsh</title>
<body>

<p>
Al primo avvio di <c>zsh</c>, verrà visualizzato il seguente messaggio. Si può
saltare questo menù poichè verrà creato un file di inizializzazione nella parte
successiva delle guida.
</p>

<pre caption="Saltare la configurazione iniziale">
$ <i>zsh</i>
This is the Z Shell configuration function for new users, zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

--- Type one of the keys in parentheses --- <i>q</i>
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Configurazione</title>
<section>
<title>Introduzione</title>
<body>

<p>
Per avviare zsh per una singola sessione, eseguire <c>zsh</c>. Per una soluzione
più permanente si deve fare riferimento al capitolo <uri
link='#savingsettings'>Salvare le impostazioni</uri>. Dopo l'installazione,
<c>zsh</c> apparirà molto semplicistico e alquanto limitato nell'ambito delle
funzionalità. Per modificare questa situazione, si dovranno apportare diversi
cambiamenti alla configurazione.
</p>

</body>
</section>
<section>
<title>Completamento Avanzato tramite Tabulazione</title>
<body>

<p>
Per abilitare il famoso sistema di completamento tramite tabulazione di
<c>zsh</c>, si devono eseguire i seguenti comandi:
</p>

<pre caption="Abilitare il completamento">
% <i>autoload -U compinit</i>
% <i>compinit</i>
</pre>

<p>
Lo stile predefinito dell'autocompletamento è alquanto grezzo e non molto bello
esteticamente. Se si vuole migliorare il suo aspetto, eseguire i seguenti
comandi:
</p>

<pre caption="Miglioramenti dello stile del completamento">
% <i>zstyle ':completion:*:descriptions' format '%U%B%d%b%u'</i>
% <i>zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'</i>
</pre>

</body>
</section>
<section>
<title>Correzione dei comandi</title>
<body>

<p>
Un'altra buona idea è di abilitare l'auto-correzione per i comandi digitati:
</p>

<pre caption="Abilitare la correzione">
% <i>setopt correctall</i>
</pre>

</body>
</section>
<section>
<title>Prompt</title>
<body>

<p>
Il prompt predefinito potrà apparire abbastanza banale, lo si potrà comunque
sistemare facilmente tramite alcuni passaggi. Per prima cosa si dovrà
inizializzare il supporto per i prompt avanzati:
</p>

<pre caption="Abilitare i prompt avanzati">
% <i>autoload -U promptinit</i>
% <i>promptinit</i>
</pre>

<p>
Esempi di prompt disponibili possono essere visualizzati tramite il comando
<c>prompt -p</c>. A questo punto si può attivare quello che si preferisce:
</p>

<pre caption="Scegliere un prompt di esempio">
<comment>(Sostituire gentoo con il prompt che si è scelto)</comment>
% <i>prompt gentoo</i>
</pre>

<note>
Se si stanno sperimentando diversi prompt, ma non si vuole vedere un esempio
per ognuno di essi, si può eseguire <c>prompt -l</c> per elencare i prompt
disponibili.
</note>

<p>
Un'altra opzione è quella di creare il proprio prompt personale, tramite
l'impostazione della variabile d'ambiente PS1.
</p>

<pre caption="Un semplice prompt personalizzato">
% <i>export PS1="[Test Prompt] > "</i>
[Test Prompt] >
</pre>

<p>
Oltre ad essere adatto per creare un prompt di testo personalizzato, zsh
fornisce inoltre molte sequenze escape che permettono di inserire le
informazioni di sistema nel prompt. Queste sono alcune delle sequenze di escape
disponibili:
</p>

<table>
<tr>
  <th>Sequenza</th>
  <th>Stampato</th>
</tr>
<tr>
  <ti>%T</ti>
  <ti>Orario di sistema (HH:MM)</ti>
</tr>
<tr>
  <ti>%*</ti>
  <ti>Orario di sistema (HH:MM:SS)</ti>
</tr>
<tr>
  <ti>%D</ti>
  <ti>Data di sistema (YY-MM-DD)</ti>
</tr>
<tr>
  <ti>%n</ti>
  <ti>Proprio nome utente</ti>
</tr>
<tr>
  <ti>%B - %b</ti>
  <ti>Inizio - fine stampa in grassetto</ti>
</tr>
<tr>
  <ti>%U - %u</ti>
  <ti>Inizio - fine sottolineato</ti>
</tr>
<tr>
  <ti>%d</ti>
  <ti>La directory di lavoro corrente</ti>
</tr>
<tr>
  <ti>%~</ti>
  <ti>La directory di lavoro corrente, relativa a ~</ti>
</tr>
<tr>
  <ti>%M</ti>
  <ti>L'hostname del computer</ti>
</tr>
<tr>
  <ti>%m</ti>
  <ti>L'hostname del computer (troncato prima del primo punto)</ti>
</tr>
<tr>
  <ti>%l</ti>
  <ti>Il tty corrente</ti>
</tr>
</table>

<p>
Queste sequenze d'escape possono essere semplicemente inserite nella variabile
d'ambiente PS1, e zsh ne effettuerà il parsing automaticamente.
</p>

<pre caption="Un prompt più complesso">
% <i>export PS1="[%* - %D] %d %% "</i>
[08:44:23 - 06-02-18] /home/username %
</pre>

</body>
</section>
<section>
<title>Cronologia</title>
<body>

<p>
Sfortunatamente, la configurazione predefinita di zsh in Gentoo non include il
supporto alla cronologia dei comandi. Lavorare con una shell senza cronologia
può essere molto frustrante, per ovviare a questa mancanza si dovranno eseguire
i seguenti comandi:
</p>

<pre caption="Configurazione di base per la cronologia">
% <i>export HISTSIZE=2000</i>
% <i>export HISTFILE="$HOME/.history"</i>

<comment>(La cronologia non verrà salvata senza il seguente comando)</comment>
% <i>export SAVEHIST=$HISTSIZE</i>
</pre>

<!-- does not work
<p>
It is very comfortable to search commands in history using the up/down arrow
keys, especially after typing the few first letters of the desired command.
</p>

<p>
To enable this feature, enter the following commands:
</p>

<pre caption="Setting context searching">
% <i>bindkey `tput kcuu1` history-beginning-search-backward >/dev/null 2>&amp;1</i>
% <i>bindkey `tput kcud1` history-beginning-search-forward >/dev/null 2>&amp;1 </i>
</pre>

<p>
To try the above feature, try the following commands:
</p>

TODO: use commands that *are* in the history, i.e. commands from above samples

<pre caption="History searching based on the first letters of the commands">
<comment>(Do not press Enter after typing)</comment>
% <i>vim /etc/</i>
<comment>(Now press up arrow key)</comment>
% <i>vim /etc/fstab</i>
<comment>(Press up arrow key once again)</comment>
% <i>vim /etc/X11/xorg.conf</i>
</pre>
-->

<p>
Per prevenire che la cronologia memorizzi delle voci duplicate (tipo <c>ls
-l</c> digitato molte volte di seguito in una singola sessione di shell), si
può impostare l'opzione <c>hist_ignore_all_dups</c>:
</p>

<pre caption="Impostare la cronologia per prevenire la memorizzazione delle voci
duplicate">
% <i>setopt hist_ignore_all_dups</i>
</pre>

<p>
Un trucco molto utile è prevenire la registrazione nella cronologia di
particolari voci facendo precedere al comando almeno uno spazio.
</p>

<pre caption="Prevenire la registrazione di voci particolari">
% <i>setopt hist_ignore_space</i>

<comment>(Questo comando non verrà registrato. Notare lo spazio in più prima di esso.)</comment>
% <i> cat /proc/cpuinfo</i>
</pre>

</body>
</section>
<section>
<title>Opzioni varie</title>
<body>

<p>
Si può impostare l'opzione <c>autocd</c> se si vuole evitare la fastidiosa
digitazione del comando <c>cd</c> mentre si vuole cambiare la directory di
lavoro corrente (per esempio <c>/etc</c> invece di <c>cd /etc</c>).
</p>

<pre caption="Impostare l'opzione autocd">
% <i>setopt autocd</i>
</pre>

<p>
Se il globbing standard in stile bash non dà soddisfazione, si può attivare
l'opzione <c>extendedglob</c> per abilitare il globbing esteso (simile alle
espressioni regolari).
</p>

<pre caption="Impostare il globbing esteso">
% <i>setopt extendedglob</i>
</pre>

<p>
Dopo aver impostato questa opzione, si potranno eseguire interrogazioni globbing
estese tipo <c>cp ^*.(tar|bz2|gz)</c>.
</p>

</body>
</section>
</chapter>

<chapter id="savingsettings">
<title>Salvare le impostazioni</title>
<section>
<title>Salvare le impostazioni di zsh</title>
<body>

<p>
Dopo aver adattato <c>zsh</c> alle proprie necessità, è una buona idea salvare
queste opzioni come le predefinite di <c>zsh</c> per tutto il sistema. Un modo
per farlo è di scrivere le impostazioni personalizzate nello script
<path>/etc/zsh/zshrc</path>. In alternativa, si potranno rendere predefinite le
impostazioni solamente per il proprio utente modificando <path>~/.zshrc</path>.
</p>

<pre caption="Esempio per zshrc">
#!/bin/zsh

# autocompletamento
autoload -U compinit
compinit

# autocorrezione
setopt correctall

# prompt
autoload -U promptinit
promptinit
prompt gentoo
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Impostare zsh come shell predefinita</title>
<section>
<title>Opzione per gli utenti con privilegi di root</title>
<body>

<p>
Si potrà cambiare shell per un dato utente tramite il comando <c>usermod</c>.
</p>

<pre caption="Migrare permanentemente a zsh tramite usermod">
# <i>usermod -s /bin/zsh userlogin</i>
</pre>

</body>
</section>
<section>
<title>Alternativa per gli utenti non-root</title>
<body>

<p>
Se il proprio amministratore di sistema (malgrado gentile richiesta) si rifiuta
di impostare la shell del vostro utente a zsh, si può far eseguire <c>zsh</c> a
<c>bash</c> durante l'avvio, l'unica operazione da fare sarà una leggera
modifica al proprio <path>~/.bashrc</path>.
</p>

<pre caption="Esempio per ~/.bashrc">
<comment>(Aggiungere la seguente riga al proprio ~/.bashrc)</comment>
exec zsh
</pre>

<p>
Un'altro metodo per cambiare le shell è usare il comando <c>chsh</c> (uno
strumento usato per cambiare la shell di login di un utente). Un normale utente
potrà solamente cambiare la propria shell di login. Come utente root, invece, si
potrà cambiare la shell di login per qualsiasi utente.
</p>

<pre caption="Migrare permanentemente a zsh tramite chsh">
<comment>(Sostituire "nomeutente" con il proprio nome utente)</comment>
$ <i>chsh -s /bin/zsh nomeutente</i>
</pre>

</body>
</section>
</chapter>
</guide>
