mirror of
https://github.com/arcan1s/arcanis.me.git
synced 2025-07-13 13:15:46 +00:00
translated paper
This commit is contained in:
@ -10,7 +10,7 @@ commentIssueId: 5
|
||||
<h3><a name="prepare" class="anchor" href="#prepare"><span class="octicon octicon-link"></span></a>Prepare</h2>
|
||||
<p align="justify">First install recommended minima:</p>
|
||||
<pre>pacman -Sy pkgfile zsh zsh-completions zsh-syntax-highlighting</pre>
|
||||
<p align="justify"><a href="https://www.archlinux.org/packages/pkgfile/">pkgfile</a> is a very useful utility. Alo this command will install shell, additional completion and syntax highlighting.</p>
|
||||
<p align="justify"><a href="https://www.archlinux.org/packages/pkgfile/">pkgfile</a> is a very useful utility. Also this command will install shell, additional completion and syntax highlighting.</p>
|
||||
|
||||
<h3><a name="configuration" class="anchor" href="#configuration"><span class="octicon octicon-link"></span></a>Shell configuration</h2>
|
||||
<p align="justify">All options are avaible <a href="http://zsh.sourceforge.net/Doc/Release/Options.html">here</a>.</p>
|
||||
@ -69,7 +69,7 @@ autoload zcalc</pre>
|
||||
<pre># append history
|
||||
setopt APPEND_HISTORY</pre>
|
||||
<p align="justify">Do not save dups to history file:</p>
|
||||
<pre># ignore dups in history
|
||||
<pre># ignore spaces in history
|
||||
setopt HIST_IGNORE_ALL_DUPS</pre>
|
||||
<p align="justify">...and additional spaces:</p>
|
||||
<pre># ignore dups in history
|
||||
@ -82,7 +82,7 @@ setopt HIST_REDUCE_BLANKS</pre>
|
||||
source /usr/share/doc/pkgfile/command-not-found.zsh</pre>
|
||||
|
||||
<h3><a name="highlighting" class="anchor" href="#highlighting"><span class="octicon octicon-link"></span></a>Syntax highlighting</h2>
|
||||
<div class="codeblock"># highlighting
|
||||
<pre># highlighting
|
||||
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
|
||||
# brackets
|
||||
@ -125,12 +125,12 @@ ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'
|
||||
# pattern example
|
||||
#ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
|
||||
# root example
|
||||
#ZSH_HIGHLIGHT_STYLES[root]='bg=red'</div>
|
||||
#ZSH_HIGHLIGHT_STYLES[root]='bg=red'</pre>
|
||||
<p align="justify">In first line highlighting is turned on. Next main, brackets and pattern highlighting are turned on. Patterns are set below (<code>rm -rf *</code> in the example). Also <code>root</code> and <code>cursor</code> highlighting may be turned on. Colors syntax is understandable, <code>fg</code> is font color, <code>bg</code> is background color.</p>
|
||||
|
||||
<h3><a name="prompt" class="anchor" href="#prompt"><span class="octicon octicon-link"></span></a>$PROMPT and $RPROMPT</h2>
|
||||
<p align="justify">The general idea is the use single <code>.zshrc</code> for root and normal user:</p>
|
||||
<div class="codeblock"># PROMPT && RPROMPT
|
||||
<pre># PROMPT && RPROMPT
|
||||
if [[ $EUID == 0 ]]; then
|
||||
# [root@host dir]#
|
||||
PROMPT="%{$fg_bold[white]%}[%{$reset_color%}\
|
||||
@ -147,9 +147,9 @@ else
|
||||
%{$fg_no_bold[green]%}%m %{$reset_color%}\
|
||||
%{$fg_bold[yellow]%}%1/%{$reset_color%}\
|
||||
%{$fg_bold[white]%}]$ %{$reset_color%}"
|
||||
fi</div>
|
||||
fi</pre>
|
||||
|
||||
<p align="justify"><code>fg</code> is font color, <code>bg</code> is background color. <code>\_bold</code> and <code>\_no_bold</code> regulate the tint. Commands should be in <code>%{ ... %}</code> so they do not appear. Avaible colors are:</p>
|
||||
<p align="justify"><code>fg</code> is font color, <code>bg</code> is background color. <code>_bold</code> and <code>_no_bold</code> regulate the tint. Commands should be in <code>%{ ... %}</code> so they do not appear. Avaible colors are:</p>
|
||||
<pre>black
|
||||
red
|
||||
green
|
||||
@ -160,7 +160,7 @@ cyan
|
||||
white</pre>
|
||||
|
||||
<p align="justify">Avaible variables are:</p>
|
||||
<div class="codeblock">%n - the username
|
||||
<pre>%n - the username
|
||||
%m - the computer's hostname (truncated to the first period)
|
||||
%M - the computer's hostname
|
||||
%l - the current tty
|
||||
@ -171,10 +171,10 @@ white</pre>
|
||||
%D - system date(YY-MM-DD)
|
||||
%d - the current working directory
|
||||
%~ - the same as %d but if in $HOME, this will be replaced by ~
|
||||
%1/ - the same as %d but only last directory</div>
|
||||
%1/ - the same as %d but only last directory</pre>
|
||||
|
||||
<p align="justify">RPROMPT (<code>acpi</code> package is necessary):</p>
|
||||
<div class="codeblock">precmd () {
|
||||
<pre>precmd () {
|
||||
# battery charge
|
||||
function batcharge {
|
||||
bat_perc=`acpi | awk {'print $4;'} | sed -e "s/\s//" -e "s/%.*//"`
|
||||
@ -195,7 +195,7 @@ white</pre>
|
||||
$(batcharge)\
|
||||
"%{$fg_bold[white]%}[%{$reset_color%}"\
|
||||
$returncode\
|
||||
"%{$fg_bold[white]%}]%{$reset_color%}"</div>
|
||||
"%{$fg_bold[white]%}]%{$reset_color%}"</pre>
|
||||
<p align="justify">My RPROMPT shows current time, battery change and last returned code. <code>precmd()</code> is necessary for automatic updating. The construct <code>$(if.true.false)</code> is conditional statement in <code>zsh</code>.</p>
|
||||
|
||||
<h3><a name="aliases" class="anchor" href="#aliases"><span class="octicon octicon-link"></span></a>Aliases</h2>
|
||||
@ -208,7 +208,7 @@ $returncode\
|
||||
}</pre>
|
||||
|
||||
<p align="justify">Here is the first group of aliases:</p>
|
||||
<div class="codeblock">## alias
|
||||
<pre>## alias
|
||||
# colored grep
|
||||
alias grep='grep --colour=auto'
|
||||
# change top to htop
|
||||
@ -224,7 +224,7 @@ alias du='show_which du && du -k --total --human-readable'
|
||||
alias less='vimpager'
|
||||
alias zless='vimpager'
|
||||
# more interactive rm
|
||||
alias rm='show_which rm && rm -I'</div>
|
||||
alias rm='show_which rm && rm -I'</pre>
|
||||
|
||||
<p align="justify">Here are ls aliases (see <a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?ls">man ls</a>):</p>
|
||||
<pre>alias ls='show_which ls && ls --color=auto'
|
||||
@ -246,7 +246,7 @@ autoload -U pick-web-browser
|
||||
alias -s {html,htm}=opera</pre>
|
||||
|
||||
<p align="justify">Here are "sudo" aliases:</p>
|
||||
<div class="codeblock"># sudo alias
|
||||
<pre># sudo alias
|
||||
if [[ $EUID == 0 ]]; then
|
||||
alias fat32mnt='show_which fat32mnt && mount -t vfat -o codepage=866,iocharset=utf8,umask=000'
|
||||
alias synctime='show_which synctime && { ntpd -qg; hwclock -w; date; }'
|
||||
@ -264,7 +264,7 @@ else
|
||||
alias rmmod='show_which rmmod && sudo rmmod'
|
||||
alias staging-i686-build='show_which staging-i686-build && sudo staging-i686-build'
|
||||
alias staging-x86_64-build='show_which staging-x86_64-build && sudo staging-x86_64-build'
|
||||
fi</div>
|
||||
fi</pre>
|
||||
|
||||
<p align="justify">Here are global aliases. If they are enable the command <code>cat foo g bar</code> will be equivalent the command <code>cat foo | grep bar</code>:</p>
|
||||
<pre># global alias
|
||||
@ -277,7 +277,7 @@ alias -g dn="&> /dev/null &"</pre>
|
||||
<h3><a name="functions" class="anchor" href="#functions"><span class="octicon octicon-link"></span></a>Functions</h2>
|
||||
<p align="justify">Here is a special function for <code>xrandr</code>:</p>
|
||||
|
||||
<div class="codeblock"># function to contorl xrandr
|
||||
<pre># function to contorl xrandr
|
||||
# EXAMPLE: projctl 1024x768
|
||||
projctl () {
|
||||
if [ $1 ] ; then
|
||||
@ -296,10 +296,10 @@ projctl () {
|
||||
echo "Using default resolution"
|
||||
xrandr --output VGA1 --mode 1366x768 --output LVDS1 --mode 1366x768
|
||||
fi
|
||||
}</div>
|
||||
}</pre>
|
||||
|
||||
<p align="justify">Unfortunately I can not remember <code>tar</code> flags thus I use special functions:</p>
|
||||
<div class="codeblock"># function to extract archives
|
||||
<pre># function to extract archives
|
||||
# EXAMPLE: unpack file
|
||||
unpack () {
|
||||
if [[ -f $1 ]]; then
|
||||
@ -347,10 +347,10 @@ pack () {
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
fi
|
||||
}</div>
|
||||
}</pre>
|
||||
|
||||
<p align="justify">Here is a special function for <code>su</code>:</p>
|
||||
<div class="codeblock">su () {
|
||||
<pre>su () {
|
||||
checksu=0
|
||||
for flags in $*; do
|
||||
if [[ $flags == "-" ]]; then
|
||||
@ -363,19 +363,19 @@ pack () {
|
||||
else
|
||||
/usr/bin/su $*
|
||||
fi
|
||||
}</div>
|
||||
}</pre>
|
||||
|
||||
<p align="justify">Functions with automatic rehash after installing/removing packages are:</p>
|
||||
<div class="codeblock">pacman () {
|
||||
/usr/bin/sudo /usr/bin/pacman $* && echo "$*" | grep -q "S\\|R\\|U" && rehash
|
||||
<pre>pacman () {
|
||||
/usr/bin/sudo /usr/bin/pacman $* && echo "$*" | grep -q "S\|R\|U" && rehash
|
||||
}
|
||||
yaourt () {
|
||||
/usr/bin/yaourt $* && echo "$*" | grep -q "S\\|R\\|U" && rehash
|
||||
/usr/bin/yaourt $* && echo "$*" | grep -q "S\|R\|U" && rehash
|
||||
}
|
||||
# for testing repo
|
||||
yatest () {
|
||||
/usr/bin/yaourt --config /etc/pactest.conf $* && echo "$*" | grep -q "S\\|R\\|U" && rehash
|
||||
}</div>
|
||||
/usr/bin/yaourt --config /etc/pactest.conf $* && echo "$*" | grep -q "S\|R\|U" && rehash
|
||||
}</pre>
|
||||
<p align="justify">But autocomplete for <code>yaourt -Ss</code> <a href="https://github.com/zsh-users/zsh-completions/pull/205">will require</a> root privileges.</p>
|
||||
|
||||
<h3><a name="variables" class="anchor" href="#variables"><span class="octicon octicon-link"></span></a>Variables</h2>
|
||||
|
@ -30,7 +30,7 @@ title: arcanis' homepage
|
||||
<section>
|
||||
|
||||
<h3><a name="welcome" class="anchor" href="#welcome"><span class="octicon octicon-link"></span></a>Welcome</h3>
|
||||
<p align="justify">Welcome to my homepage, <code>`echo $USERNAME`</code>. About me you may read on <a href="/about">the link</a>. I'm sorry I don't know html/php/ruby/etc (but I know GoogleFOO! At least, I think so), therefore this page may not look very pretty. But I tried (or may be not). In the blog I will write some papers about programming, living in Archlinux system and may be package maintaining. Also I will create pages for some of <a href="https://github.com/arcan1s">my projects</a>.</p>
|
||||
<p align="justify">Welcome to my homepage, <code>`echo $USERNAME`</code>. About me you may read on <a href="/about">the link</a>. I'm sorry I don't know html/php/ruby/etc (but I know GoogleFOO! At least, I think so), therefore this page may not look very pretty. But I tried (or may be not). In the blog I will write some papers about science, programming, living in Archlinux system and may be package maintaining. Also I will create pages for some of <a href="https://github.com/arcan1s">my projects</a>.</p>
|
||||
|
||||
<h3><a name="contact" class="anchor" href="#contact"><span class="octicon octicon-link"></span></a>Contact me</h3>
|
||||
<p align="justify">If you have a question or something else you may <a href="/about">contact me</a>. If you want to suggest a pull request or to create a bug report for these pages (or may be for some other projects) feel free to visit <a href="https://github.com/arcan1s">my Github profile</a> and do it.</p>
|
||||
|
@ -2,27 +2,27 @@
|
||||
category: ru
|
||||
layout: paper
|
||||
last: 14 January 2014
|
||||
tags: zshrc, configuration, linux
|
||||
title: About zshrc
|
||||
tags: zshrc, настройка, linux
|
||||
title: О zshrc
|
||||
short: about-zshrc
|
||||
description: РУССКИЙ. It is first paper in my blog (I think I need something here for tests =)). There are many similar articles, and I'll not be an exception. I just want to show my <code>.zshrc</code> and explain what it does and why it is needed. Also any comments or additions are welcome. It is a translated paper from Russian (<a href="http://archlinux.org.ru/forum/topic/12752/">original</a>).
|
||||
description: Это моя статья в моем блоге (я думаю, мне нужно что-нибудь для тестов =)). Существует множество похожих статей и, я думаю, не буду отличаться от большинства. Я просто хочу показать мой <code>.zshrc</code> и объяснить, что в нем есть и зачем оно нужно. Также, любые комментарии или дополнения приветствуются. <a href="http://archlinux.org.ru/forum/topic/12752/">Оригинал</a> статьи.
|
||||
commentIssueId: 5
|
||||
---
|
||||
<h3><a name="prepare" class="anchor" href="#prepare"><span class="octicon octicon-link"></span></a>Prepare</h2>
|
||||
<p align="justify">First install recommended minima:</p>
|
||||
<h3><a name="prepare" class="anchor" href="#prepare"><span class="octicon octicon-link"></span></a>Подготовка</h2>
|
||||
<p align="justify">Сначала установите необходимый минимум:</p>
|
||||
<pre>pacman -Sy pkgfile zsh zsh-completions zsh-syntax-highlighting</pre>
|
||||
<p align="justify"><a href="https://www.archlinux.org/packages/pkgfile/">pkgfile</a> is a very useful utility. Alo this command will install shell, additional completion and syntax highlighting.</p>
|
||||
<p align="justify"><a href="https://www.archlinux.org/packages/pkgfile/">pkgfile</a> очень полезная утилита. Данная команда также установит шелл, дополнения к нему и подсветку синтаксиса.</p>
|
||||
|
||||
<h3><a name="configuration" class="anchor" href="#configuration"><span class="octicon octicon-link"></span></a>Shell configuration</h2>
|
||||
<p align="justify">All options are avaible <a href="http://zsh.sourceforge.net/Doc/Release/Options.html">here</a>.</p>
|
||||
<h3><a name="configuration" class="anchor" href="#configuration"><span class="octicon octicon-link"></span></a>Настройка шелла</h2>
|
||||
<p align="justify">Все доступные опции приведены <a href="http://zsh.sourceforge.net/Doc/Release/Options.html">здесь</a>.</p>
|
||||
|
||||
<p align="justify">Set history file and number of commands in cache of the current session and in the history file:</p>
|
||||
<p align="justify">Указываем файл с историей, число команд хранящихся в кэше текущего сеанса и число команд, хранящихся в файле:</p>
|
||||
<pre># history
|
||||
HISTFILE=~/.zsh_history
|
||||
HISTSIZE=500000
|
||||
SAVEHIST=500000</pre>
|
||||
|
||||
<p align="justify">I can not remember all <code>Ctrl+</code> combinations so I bind keys to its default usages:</p>
|
||||
<p align="justify">Я не могу запомнить все комбинации <code>Ctrl+</code>, поэтому я назначаю клавиши на их стандартное использование:</p>
|
||||
<pre># bindkeys
|
||||
bindkey '^[[A' up-line-or-search # up arrow for back-history-search
|
||||
bindkey '^[[B' down-line-or-search # down arrow for fwd-history-search
|
||||
@ -32,58 +32,58 @@ bindkey '\e[3~' delete-char # del
|
||||
bindkey '\e[4~' end-of-line # end
|
||||
bindkey '\e[5~' up-line-or-history # page-up
|
||||
bindkey '\e[6~' down-line-or-history # page-down</pre>
|
||||
<p align="justify">But in this case <code>Up</code>/<code>Down</code> arrows are used to navigate through the history based on <b>already entered part</b> of a command. And <code>PgUp</code>/<code>PgDown</code> <b>will ignore</b> already entered part of a command.</p>
|
||||
<p align="justify">Но здесь важно, что стрелки <code>вверх</code>/<code>вниз</code> служат для навигации по истории с учетом <b>уже введенной части</b> команды. А <code>PgUp</code>/<code>PgDown</code> <b>проигнорирую</b> уже введенную часть команды.</p>
|
||||
|
||||
<p align="justify">Command autocomplete:</p>
|
||||
<p align="justify">Автодополнение команд:</p>
|
||||
<pre># autocomplete
|
||||
autoload -U compinit
|
||||
compinit
|
||||
zstyle ':completion:*' insert-tab false
|
||||
zstyle ':completion:*' max-errors 2</pre>
|
||||
<p align="justify">Full command autocomplete will be enabled. <code>insert-tab false</code> will enable autocomplete for <b>non-entered</b> commands. <code>max-errors</code> sets maximum number of errors that could be corrected.</p>
|
||||
<p align="justify">Подключается полное автодополнение команд. <code>insert-tab false</code> включит автодополнение для <b>невведенной</b> команды (не знаю, зачем). <code>max-errors</code> устанавливает максимальное число опечаток, которые могут быть исправлены.</p>
|
||||
|
||||
<p align="justify">Prompt:</p>
|
||||
<p align="justify">Приглашение:</p>
|
||||
<pre># promptinit
|
||||
autoload -U promptinit
|
||||
promptinit</pre>
|
||||
|
||||
<p align="justify">Enable colors:</p>
|
||||
<p align="justify">Включим цвета:</p>
|
||||
<pre># colors
|
||||
autoload -U colors
|
||||
colors</pre>
|
||||
|
||||
<p align="justify">Here are some other options.</p>
|
||||
<p align="justify">Change directory without <code>cd</code>:</p>
|
||||
<p align="justify">Различные опции.</p>
|
||||
<p align="justify">Смена директории без ввода <code>cd</code>:</p>
|
||||
<pre># autocd
|
||||
setopt autocd</pre>
|
||||
<p align="justify">Correcting of typos (and question template):</p>
|
||||
<p align="justify">Корректировка опечаток (и шаблон вопроса):</p>
|
||||
<pre># correct
|
||||
setopt CORRECT_ALL
|
||||
SPROMPT="Correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) "</pre>
|
||||
<p align="justify">Disable f#$%ing beep:</p>
|
||||
<p align="justify">Отключаем е#$%ую пищалку:</p>
|
||||
<pre># disable beeps
|
||||
unsetopt beep</pre>
|
||||
<p align="justify">Enable calculator:</p>
|
||||
<p align="justify">Включаем калькулятор:</p>
|
||||
<pre># calc
|
||||
autoload zcalc</pre>
|
||||
<p align="justify">Append history (<b>do not recreate</b> the history file):</p>
|
||||
<p align="justify">Дополнение истории (<b>а не перезапись</b> файла):</p>
|
||||
<pre># append history
|
||||
setopt APPEND_HISTORY</pre>
|
||||
<p align="justify">Do not save dups to history file:</p>
|
||||
<p align="justify">Не сохранять дубликаты в историю:</p>
|
||||
<pre># ignore dups in history
|
||||
setopt HIST_IGNORE_ALL_DUPS</pre>
|
||||
<p align="justify">...and additional spaces:</p>
|
||||
<pre># ignore dups in history
|
||||
<p align="justify">...и дополнительные пробелы:</p>
|
||||
<pre># ignore spaces in history
|
||||
setopt HIST_IGNORE_SPACE</pre>
|
||||
<p align="justify">...and blank lines too:</p>
|
||||
<p align="justify">...и пустые линии тоже:</p>
|
||||
<pre># reduce blanks in history
|
||||
setopt HIST_REDUCE_BLANKS</pre>
|
||||
<p align="justify">Enable <code>pkgfile</code>:</p>
|
||||
<p align="justify">Включаем <code>pkgfile</code>:</p>
|
||||
<pre># pkgfile
|
||||
source /usr/share/doc/pkgfile/command-not-found.zsh</pre>
|
||||
|
||||
<h3><a name="highlighting" class="anchor" href="#highlighting"><span class="octicon octicon-link"></span></a>Syntax highlighting</h2>
|
||||
<div class="codeblock"># highlighting
|
||||
<h3><a name="highlighting" class="anchor" href="#highlighting"><span class="octicon octicon-link"></span></a>Подсветка синтаксиса</h2>
|
||||
<pre># highlighting
|
||||
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
|
||||
# brackets
|
||||
@ -95,43 +95,43 @@ ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold'
|
||||
#ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue'
|
||||
# main
|
||||
# default
|
||||
ZSH_HIGHLIGHT_STYLES[default]='none'
|
||||
ZSH_HIGHLIGHT_STYLES[default]='none' # стандартный цвет
|
||||
# unknown
|
||||
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red'
|
||||
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red' # неизвестная команда
|
||||
# command
|
||||
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=magenta,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[alias]='fg=yellow,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[builtin]='fg=green,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[function]='fg=green,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[command]='fg=green'
|
||||
ZSH_HIGHLIGHT_STYLES[precommand]='fg=blue,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=yellow'
|
||||
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green'
|
||||
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=blue,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=blue,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=magenta,bold' # зарезервированное слово
|
||||
ZSH_HIGHLIGHT_STYLES[alias]='fg=yellow,bold' # алиас
|
||||
ZSH_HIGHLIGHT_STYLES[builtin]='fg=green,bold' # built-in функция (например, echo)
|
||||
ZSH_HIGHLIGHT_STYLES[function]='fg=green,bold' # функция, определенная в шелле
|
||||
ZSH_HIGHLIGHT_STYLES[command]='fg=green' # обычная команда
|
||||
ZSH_HIGHLIGHT_STYLES[precommand]='fg=blue,bold' # пре-команда (например, sudo в sudo cp ...)
|
||||
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=yellow' # разделитель команд, && || ;
|
||||
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green' # команда, найденная в путях (hashed)
|
||||
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=blue,bold' # флаги типа -*
|
||||
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=blue,bold' # флаги типа --*
|
||||
# path
|
||||
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan,bold'
|
||||
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[path_approx]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan,bold' # станлартный путь
|
||||
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=cyan' # префикс пути
|
||||
ZSH_HIGHLIGHT_STYLES[path_approx]='fg=cyan' # примерный путь
|
||||
# shell
|
||||
ZSH_HIGHLIGHT_STYLES[globbing]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[assign]='fg=magenta'
|
||||
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan'
|
||||
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=blue'
|
||||
ZSH_HIGHLIGHT_STYLES[globbing]='fg=cyan' # шаблон (например, /dev/sda*)
|
||||
ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=blue' # подстановка из истории (команда, начинающаяся с !)
|
||||
ZSH_HIGHLIGHT_STYLES[assign]='fg=magenta' # присвоение
|
||||
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=cyan' # конструкции типа "$VARIABLE"
|
||||
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan' # конструкции типа \"
|
||||
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=blue' # конструкции типа `command`
|
||||
# quotes
|
||||
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow,underline'
|
||||
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'
|
||||
# pattern example
|
||||
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow,underline' # конструкции типа 'text'
|
||||
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow' # конструкции типа "text"
|
||||
# pattern
|
||||
#ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
|
||||
# root example
|
||||
#ZSH_HIGHLIGHT_STYLES[root]='bg=red'</div>
|
||||
<p align="justify">In first line highlighting is turned on. Next main, brackets and pattern highlighting are turned on. Patterns are set below (<code>rm -rf *</code> in the example). Also <code>root</code> and <code>cursor</code> highlighting may be turned on. Colors syntax is understandable, <code>fg</code> is font color, <code>bg</code> is background color.</p>
|
||||
# root
|
||||
#ZSH_HIGHLIGHT_STYLES[root]='bg=red'</pre>
|
||||
<p align="justify">В первой строке включаем подсветку. Затем включаем основную подсветку, а также подсветку скобок и шаблонов. Шаблоны указываются ниже (<code>rm -rf *</code> в примере). Также может быть включена подсветка команд от <code>root</code> и курсора <code>cursor</code>. Синтаксис настроек понятен, <code>fg</code> цвет шрифта, <code>bg</code> цвет фона.</p>
|
||||
|
||||
<h3><a name="prompt" class="anchor" href="#prompt"><span class="octicon octicon-link"></span></a>$PROMPT and $RPROMPT</h2>
|
||||
<p align="justify">The general idea is the use single <code>.zshrc</code> for root and normal user:</p>
|
||||
<div class="codeblock"># PROMPT && RPROMPT
|
||||
<h3><a name="prompt" class="anchor" href="#prompt"><span class="octicon octicon-link"></span></a>$PROMPT и $RPROMPT</h2>
|
||||
<p align="justify">Я хочу использовать один файл <code>.zshrc</code> для рута и обычного пользователя:</p>
|
||||
<pre># PROMPT && RPROMPT
|
||||
if [[ $EUID == 0 ]]; then
|
||||
# [root@host dir]#
|
||||
PROMPT="%{$fg_bold[white]%}[%{$reset_color%}\
|
||||
@ -148,9 +148,9 @@ else
|
||||
%{$fg_no_bold[green]%}%m %{$reset_color%}\
|
||||
%{$fg_bold[yellow]%}%1/%{$reset_color%}\
|
||||
%{$fg_bold[white]%}]$ %{$reset_color%}"
|
||||
fi</div>
|
||||
fi</pre>
|
||||
|
||||
<p align="justify"><code>fg</code> is font color, <code>bg</code> is background color. <code>\_bold</code> and <code>\_no_bold</code> regulate the tint. Commands should be in <code>%{ ... %}</code> so they do not appear. Avaible colors are:</p>
|
||||
<p align="justify"><code>fg</code> цвет шрифта, <code>bg</code> цвет фона. <code>_bold</code> и <code>_no_bold</code> регулируют оттенок. Команды должны быть обрамлены в <code>%{ ... %}</code>, чтобы не показывались. Доступные цвета:</p>
|
||||
<pre>black
|
||||
red
|
||||
green
|
||||
@ -160,22 +160,22 @@ magenta
|
||||
cyan
|
||||
white</pre>
|
||||
|
||||
<p align="justify">Avaible variables are:</p>
|
||||
<div class="codeblock">%n - the username
|
||||
%m - the computer's hostname (truncated to the first period)
|
||||
%M - the computer's hostname
|
||||
%l - the current tty
|
||||
%? - the return code of the last-run application.
|
||||
%# - the prompt based on user privileges (# for root and % for the rest)
|
||||
%T - system time(HH:MM)
|
||||
%* - system time(HH:MM:SS)
|
||||
%D - system date(YY-MM-DD)
|
||||
%d - the current working directory
|
||||
%~ - the same as %d but if in $HOME, this will be replaced by ~
|
||||
%1/ - the same as %d but only last directory</div>
|
||||
<p align="justify">Доступные переменные:</p>
|
||||
<pre>%n - имя пользователя
|
||||
%m - хостнейм (выставляется только в начале сессии)
|
||||
%M - хостнейм
|
||||
%l - текущая tty
|
||||
%? - код возврата предыдущего приложения
|
||||
%# - # для рута и % для обычных пользователей
|
||||
%T - время (HH:MM)
|
||||
%* - время (HH:MM:SS)
|
||||
%D - дата (YY-MM-DD)
|
||||
%d - текущая директория
|
||||
%~ - то же, домашняя директория будет заменена на ~
|
||||
%1/ - то же, но только последняя директория</pre>
|
||||
|
||||
<p align="justify">RPROMPT (<code>acpi</code> package is necessary):</p>
|
||||
<div class="codeblock">precmd () {
|
||||
<p align="justify">RPROMPT (необходим пакет <code>acpi</code>):</p>
|
||||
<pre>precmd () {
|
||||
# battery charge
|
||||
function batcharge {
|
||||
bat_perc=`acpi | awk {'print $4;'} | sed -e "s/\s//" -e "s/%.*//"`
|
||||
@ -196,38 +196,38 @@ white</pre>
|
||||
$(batcharge)\
|
||||
"%{$fg_bold[white]%}[%{$reset_color%}"\
|
||||
$returncode\
|
||||
"%{$fg_bold[white]%}]%{$reset_color%}"</div>
|
||||
<p align="justify">My RPROMPT shows current time, battery change and last returned code. <code>precmd()</code> is necessary for automatic updating. The construct <code>$(if.true.false)</code> is conditional statement in <code>zsh</code>.</p>
|
||||
"%{$fg_bold[white]%}]%{$reset_color%}"</pre>
|
||||
<p align="justify">Мой RPROMPT показывает текущее время, заряд батареи и код возврата последнего приложения. <code>precmd()</code> необходимо для автоматического обновления. Конструкция <code>$(if.true.false)</code> является условным оператором в <code>zsh</code>.</p>
|
||||
|
||||
<h3><a name="aliases" class="anchor" href="#aliases"><span class="octicon octicon-link"></span></a>Aliases</h2>
|
||||
<p align="justify"><b>Copy only those aliases that you need.</b> If any alias uses application that is not installed it will leads to fail of loading of configuration file.</p>
|
||||
<h3><a name="aliases" class="anchor" href="#aliases"><span class="octicon octicon-link"></span></a>Аллиасы</h2>
|
||||
<p align="justify"><b>Копируйте только те аллиасы, которые Вам необходимы.</b> Если какой-либо аллиас использует приложение, которое не установлено, это приведет к сбою загрузки конфигурационного файла.</p>
|
||||
|
||||
<p align="justify">Small useful (or maybe not) function:</p>
|
||||
<p align="justify">Полезная (или не очень) функция:</p>
|
||||
<pre>show_which() {
|
||||
OUTPUT=$(which $1 | cut -d " " -f7-)
|
||||
echo "Running '$OUTPUT'" 1>&2
|
||||
}</pre>
|
||||
|
||||
<p align="justify">Here is the first group of aliases:</p>
|
||||
<div class="codeblock">## alias
|
||||
# colored grep
|
||||
<p align="justify">Первая группа аллиасов:</p>
|
||||
<pre>## alias
|
||||
# цветной grep
|
||||
alias grep='grep --colour=auto'
|
||||
# change top to htop
|
||||
# замена top на htop
|
||||
alias top='show_which top && htop'
|
||||
# chromium with different proxy servers (i2p and tor included)
|
||||
# chromium с различными прокси серверами (i2p и tor в наличии)
|
||||
alias chrommsu='show_which chrommsu && chromium --proxy-server=cache.msu:3128'
|
||||
alias chromtor='show_which chromtor && chromium --proxy-server="socks://localhost:9050" --incognito'
|
||||
alias chromi2p='show_which chromi2p && chromium --proxy-server="http=127.0.0.1:4444;https=127.0.0.1:4445" --incognito'
|
||||
# human-readable df and du
|
||||
# человеческие df и du
|
||||
alias df='show_which df && df -k --print-type --human-readable'
|
||||
alias du='show_which du && du -k --total --human-readable'
|
||||
# change less and zless to vimpager
|
||||
# замена less и zless на vimpager
|
||||
alias less='vimpager'
|
||||
alias zless='vimpager'
|
||||
# more interactive rm
|
||||
alias rm='show_which rm && rm -I'</div>
|
||||
# более интерактивный rm
|
||||
alias rm='show_which rm && rm -I'</pre>
|
||||
|
||||
<p align="justify">Here are ls aliases (see <a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?ls">man ls</a>):</p>
|
||||
<p align="justify">ls аллиасы (смотри <a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?ls">man ls</a>):</p>
|
||||
<pre>alias ls='show_which ls && ls --color=auto'
|
||||
alias ll='show_which ll && ls --group-directories-first -l --human-readable'
|
||||
alias lr='show_which lr && ls --recursive'
|
||||
@ -237,7 +237,7 @@ alias lz='show_which lz && ll -S --reverse'
|
||||
alias lt='show_which lt && ll -t --reverse'
|
||||
alias lm='show_which lm && la | more'</pre>
|
||||
|
||||
<p align="justify">Here are aliases to quick file view from console (just type a file name!):</p>
|
||||
<p align="justify">Аллиасы для быстрого просмотра файлов из консоли (просто набери имя файла!):</p>
|
||||
<pre># alias -s
|
||||
alias -s {avi,mpeg,mpg,mov,m2v,mkv}=mpv
|
||||
alias -s {mp3,flac}=qmmp
|
||||
@ -246,8 +246,8 @@ alias -s {pdf}=okular
|
||||
autoload -U pick-web-browser
|
||||
alias -s {html,htm}=opera</pre>
|
||||
|
||||
<p align="justify">Here are "sudo" aliases:</p>
|
||||
<div class="codeblock"># sudo alias
|
||||
<p align="justify">"sudo" аллиасы:</p>
|
||||
<pre># sudo alias
|
||||
if [[ $EUID == 0 ]]; then
|
||||
alias fat32mnt='show_which fat32mnt && mount -t vfat -o codepage=866,iocharset=utf8,umask=000'
|
||||
alias synctime='show_which synctime && { ntpd -qg; hwclock -w; date; }'
|
||||
@ -265,9 +265,9 @@ else
|
||||
alias rmmod='show_which rmmod && sudo rmmod'
|
||||
alias staging-i686-build='show_which staging-i686-build && sudo staging-i686-build'
|
||||
alias staging-x86_64-build='show_which staging-x86_64-build && sudo staging-x86_64-build'
|
||||
fi</div>
|
||||
fi</pre>
|
||||
|
||||
<p align="justify">Here are global aliases. If they are enable the command <code>cat foo g bar</code> will be equivalent the command <code>cat foo | grep bar</code>:</p>
|
||||
<p align="justify">Некоторые глобальные аллиасы. Если они включены, команда <code>cat foo g bar</code> будет эквивалентна <code>cat foo | grep bar</code>:</p>
|
||||
<pre># global alias
|
||||
alias -g g="| grep"
|
||||
alias -g l="| less"
|
||||
@ -275,10 +275,10 @@ alias -g t="| tail"
|
||||
alias -g h="| head"
|
||||
alias -g dn="&> /dev/null &"</pre>
|
||||
|
||||
<h3><a name="functions" class="anchor" href="#functions"><span class="octicon octicon-link"></span></a>Functions</h2>
|
||||
<p align="justify">Here is a special function for <code>xrandr</code>:</p>
|
||||
<h3><a name="functions" class="anchor" href="#functions"><span class="octicon octicon-link"></span></a>Функции</h2>
|
||||
<p align="justify">Специальная функция для <code>xrandr</code>:</p>
|
||||
|
||||
<div class="codeblock"># function to contorl xrandr
|
||||
<pre># function to contorl xrandr
|
||||
# EXAMPLE: projctl 1024x768
|
||||
projctl () {
|
||||
if [ $1 ] ; then
|
||||
@ -297,10 +297,10 @@ projctl () {
|
||||
echo "Using default resolution"
|
||||
xrandr --output VGA1 --mode 1366x768 --output LVDS1 --mode 1366x768
|
||||
fi
|
||||
}</div>
|
||||
}</pre>
|
||||
|
||||
<p align="justify">Unfortunately I can not remember <code>tar</code> flags thus I use special functions:</p>
|
||||
<div class="codeblock"># function to extract archives
|
||||
<p align="justify">К сожалению, я не могу запомнить флаги <code>tar</code>, поэтому я использую специальные функции:</p>
|
||||
<pre># function to extract archives
|
||||
# EXAMPLE: unpack file
|
||||
unpack () {
|
||||
if [[ -f $1 ]]; then
|
||||
@ -348,10 +348,10 @@ pack () {
|
||||
else
|
||||
echo "'$1' is not a valid file"
|
||||
fi
|
||||
}</div>
|
||||
}</pre>
|
||||
|
||||
<p align="justify">Here is a special function for <code>su</code>:</p>
|
||||
<div class="codeblock">su () {
|
||||
<p align="justify">Специальная функция для <code>su</code>:</p>
|
||||
<pre>su () {
|
||||
checksu=0
|
||||
for flags in $*; do
|
||||
if [[ $flags == "-" ]]; then
|
||||
@ -364,25 +364,25 @@ pack () {
|
||||
else
|
||||
/usr/bin/su $*
|
||||
fi
|
||||
}</div>
|
||||
}</pre>
|
||||
|
||||
<p align="justify">Functions with automatic rehash after installing/removing packages are:</p>
|
||||
<div class="codeblock">pacman () {
|
||||
/usr/bin/sudo /usr/bin/pacman $* && echo "$*" | grep -q "S\\|R\\|U" && rehash
|
||||
<p align="justify">Функция для автоматических обновлений путей после установки пакето:</p>
|
||||
<pre>pacman () {
|
||||
/usr/bin/sudo /usr/bin/pacman $* && echo "$*" | grep -q "S\|R\|U" && rehash
|
||||
}
|
||||
yaourt () {
|
||||
/usr/bin/yaourt $* && echo "$*" | grep -q "S\\|R\\|U" && rehash
|
||||
/usr/bin/yaourt $* && echo "$*" | grep -q "S\|R\|U" && rehash
|
||||
}
|
||||
# for testing repo
|
||||
yatest () {
|
||||
/usr/bin/yaourt --config /etc/pactest.conf $* && echo "$*" | grep -q "S\\|R\\|U" && rehash
|
||||
}</div>
|
||||
<p align="justify">But autocomplete for <code>yaourt -Ss</code> <a href="https://github.com/zsh-users/zsh-completions/pull/205">will require</a> root privileges.</p>
|
||||
/usr/bin/yaourt --config /etc/pactest.conf $* && echo "$*" | grep -q "S\|R\|U" && rehash
|
||||
}</pre>
|
||||
<p align="justify">Но автодополнение для <code>yaourt -Ss</code> <a href="https://github.com/zsh-users/zsh-completions/pull/205">будет требовать</a> привилегий рута.</p>
|
||||
|
||||
<h3><a name="variables" class="anchor" href="#variables"><span class="octicon octicon-link"></span></a>Variables</h2>
|
||||
<p align="justify">It is recommended to set own variables in <code>~/.zshenv</code>. But I have everything stored in the single file.</p>
|
||||
<h3><a name="variables" class="anchor" href="#variables"><span class="octicon octicon-link"></span></a>Переменные</h2>
|
||||
<p align="justify">Рекомендуется хранить свои переменные в <code>~/.zshenv</code>. Но я все храню в одном файле.</p>
|
||||
|
||||
<p align="justify">Here are path, mask of new files, editor and pager:</p>
|
||||
<p align="justify">Пути, маска создаваемых файлов, редактор и пейджер:</p>
|
||||
<pre># path
|
||||
export PATH="$PATH:$HOME/.local/bin"
|
||||
# umask
|
||||
@ -391,7 +391,7 @@ umask 022
|
||||
export EDITOR="vim"
|
||||
export PAGER="vimpager"</pre>
|
||||
|
||||
<p align="justify">Here is hashes. If they are enable the command <code>~global</code> will be equivalent the command <code>/mnt/global</code>:</p>
|
||||
<p align="justify">Хэши. Если они включены, команда <code>~global</code> будет эквивалентна команде <code>/mnt/global</code>:</p>
|
||||
<pre># hash
|
||||
hash -d global=/mnt/global
|
||||
hash -d windows=/mnt/windows
|
||||
@ -399,8 +399,8 @@ hash -d iso=/mnt/iso
|
||||
hash -d u1=/mnt/usbdev1
|
||||
hash -d u2=/mnt/usbdev2</pre>
|
||||
|
||||
<h3><a name="screenshot" class="anchor" href="#screenshot"><span class="octicon octicon-link"></span></a>Screenshot</h2>
|
||||
<h3><a name="screenshot" class="anchor" href="#screenshot"><span class="octicon octicon-link"></span></a>Скриншот</h2>
|
||||
<p align="justify"><a href="/resources/screenshots/zshrc_demo.png"><img src="/resources/preview/zshrc_demo_prev.jpg"></a></p>
|
||||
|
||||
<h3><a name="file" class="anchor" href="#file"><span class="octicon octicon-link"></span></a>File</h2>
|
||||
<p align="justify"><a href="https://raw.github.com/arcan1s/dotfiles/master/zshrc">Here is</a> my <code>.zshrc</code>.</p>
|
||||
<h3><a name="file" class="anchor" href="#file"><span class="octicon octicon-link"></span></a>Файл</h2>
|
||||
<p align="justify"><a href="https://raw.github.com/arcan1s/dotfiles/master/zshrc"></a>Мой <code>.zshrc</code>.</p>
|
||||
|
Reference in New Issue
Block a user