صفر و یک - برنامه نویسی - لینوکس

دست نوشته های شخصی من در مورد نرم افزار، سیستم عامل و برنامه نویسی لینوکس

صفر و یک - برنامه نویسی - لینوکس

دست نوشته های شخصی من در مورد نرم افزار، سیستم عامل و برنامه نویسی لینوکس

لیدورا یک وبلاگ تخصصی برنامه نویسی یا لینوکس نیست. بیشتر محلیه برای ثبت چیزهایی که قراره بیشتر از یه بار خونده بشن. اگه به درد شما هم خورد که زکات دانش ما پرداخت شده، شکر.

آخرین نظرات

  • ۱۰ بهمن ۹۵، ۰۲:۴۲ - Black Riders
    عالی

نویسندگان

مهاجرت از oh my zsh به prezto

شنبه, ۲۲ فروردين ۱۳۹۴، ۰۶:۱۱ ب.ظ

zsh

قبلا در مورد zsh و oh my zsh نوشته بودم. zsh یه شل قوی و محبوبه که دست bash رو از پشت می‌بنده و زمانی که با oh my zsh ترکیب بشه کاربردی تر و زیبا تر می‌شه.

oh my zsh با اینکه فوق العاده کار می‌کنه اما یه مشکل داره و اونم تاخیر یک ثانیه‌ای لود معروفشه. prezto از oh my zsh فورک شده تا این مشکل رو حل کنه. بهینه‌سازی‌های دیگه‌ای هم توی کد oh my zsh صورت گرفته که حتما شما رو راغب به استفاده از pretzo خواهد کرد.

قابلیت تکمیل خودکار pretzo با نشون دادن نتایج توی دسته بندی‌های مختلف خیلی جالبه.

مثلا اگه بعد از تایپ ls کلید تب رو بزنید میتونید دستورات خارجی، دستورات کرنل، توابع شل و آلیاس‌ها رو توی دسته‌های خودشون ببینید:

ali@localhost:~/ > ls
 -- external command --
ls          lscpu       lslogins    lspcmcia    lsusb.py              
lsattr      lsinitcpio  lsmod       lspst                           
lsblk       lslocks     lspci       lsusb                           
 -- alias --
ls

و یه قابلیت فوق‌العاده‌تر که قبلا با دستور cheat معرفیش کرده بودم دیدن لیست پارامترهای یه دستوره که فقط کافیه بعد از تایپ دستور و علامت - کلید تب رو بزنید.

ali@localhost:~/ > tar -
 -- tar function --
A  -- append to an archive
c  -- create a new archive
f  -- specify archive file or device
t  -- list archive contents
u  -- update archive
v  -- verbose output
x  -- extract files from an archive

 

pretzo از تم‌های زیباتری نسبت به oh my zsh پشتیبانی می‌کنه و همچنین پیکره‌بندی اون بر مبنای oh my zsh انجام می‌شه که همه‌ی این موارد باعث می‌شن شما به راحتی از oh my zsh به فرزند خلفش pretzo مهاجرت کنید. توی این پست راه اندازی و کانفیگ prezto رو خواهیم دید.

۱- حذف oh my zsh

از فایل‌های oh my zsh نسخه‌ی پشتیبان تهیه کنید.

$ cp ~/.zshrc ~/.zshrc-back
$ cp -R ~/.oh-my-zsh ~/.oh-my-zsh-back

 

با مدیر بسته‌ی خودتون oh my zsh رو حذفش کنید.

آرچی ها:

# pacman -R oh-my-zsh

یا

# pacman -R oh-my-zsh-git

 

اگه oh my zsh رو از روی سورس کامپایل کردید:

به پوشه‌ی نصب برید و این دستور رو وارد کنید.

# uninstall_oh_my_zsh

 

۲- نصب prezto

zsh رو اجرا کنید.

$ zsh

دستور زیر رو وارد کنید.

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

لینک‌های مورد نیاز رو بسازید.

$ ln -s ~/.zprezto/runcoms/zlogin~/.zlogin
$ ln -s ~/.zprezto/runcoms/zlogout ~/.zlogout
$ ln -s ~/.zprezto/runcoms/zpreztorc ~/.zpreztorc
$ ln -s ~/.zprezto/runcoms/zprofile ~/.zprofile
$ ln -s ~/.zprezto/runcoms/zshenv ~/.zshenv
$ ln -s ~/.zprezto/runcoms/zshrc ~/.zshrc


و در آخر zsh رو شل پیش‌فرضتون قرار بدید.

$ chsh -s /bin/zsh

 

۲- آپدیت pretzo

هر بار که نسخه‌ی جدیدی از pretzo بیاد می‌تونید با دستور زیر آپدیتش کنید.

$ git pull && git submodule update --init --recursive

 

۳- انتخاب تم

pretzo تم‌های بسیار زیبایی رو از قبل برای استفاده آماده کرده.

برای دیدن لیست تم‌ها این دستور رو وارد کنید.

$ prompt -l

و برای دیدن پیش نمایش هم تم هم

$ prompt -p THEME_NAME

و در نهایت تم مورد نظرتون رو توی فایل ~/.zpretzorc بعد از بخش prompt تعیین کنید.

# Prompt
#

# Set the prompt theme to load.
# Setting it to 'random' loads a random theme.
# Auto set to 'off' on dumb terminals.
zstyle ':prezto:module:prompt' theme'sorin'

 

اگه هم دلتون می‌خواد که هر بار یه تم رو ببینید به جای اسم تم کلمه‌ی random رو بذارید.

 

۴- فقط کمی تنظیمات

فایل ~/.zshrc رو باز کنید و alias ها و export های مورد نیازتون رو داخلش بنویسید. نمونه‌ی فایل من رو ببینید:

# Customize to your needs...
export PATH=$HOME/bin:/usr/local/bin:$PATH:$HOME/Other/bin

export EDITOR="nano"
export PAGER=/usr/bin/most

alias ll="ls -lh"
alias la="ls -A"
alias off="sudo shutdown -h"
alias of="sudo shutdown -h 6:55"
alias svi='sudo vi'
alias sgedit='sudo gedit'

alias snano='sudo nano'
alias ..='cd ..'
alias cp='vcp -gR'
alias mv='vmv -g'

 

اینم لیستی از تم‌های pretzo

  • minimal minimal theme

  • nicoulaj nicoulaj theme

  • peepcode peepcode theme

  • sorin sorin theme

  • steeef steeef theme

  • adam1 adam1 theme

  • adam2 adam2 theme

  • bart bart theme

  • bigfade bigfade theme

  • clint clint theme

  • elite elite theme

  • elite2 elite2 theme

  • fade fade theme

  • fire fire theme

  • off off theme

  • oliver oliver theme

  • pws pws theme

  • redhat redhat theme

  • suse suse theme

  • walters walters theme

  • zefram zefram theme


توی پست‌های بعدی در مورد نحوه‌ی پیکره‌بندی pretzo بیشتر صحبت می‌کنیم.

منبع: + و + و + و +

 

نظرات  (۷)

جالب و مفید بود. ممنون.
پاسخ:
زنده باشی صابر جان.
مطلب خیلی خوبی بود . ممنون که یادت بود و دربارش نوشتی .
متاسفانه تا الان مطالب سایت های لینوکسی رو از یه دنبال می کردم که همین باعث شد مطلب شما رو اصلا نبینم . راستی نظرت راجع به پوسته fish چیه ؟ اونم وقتی دستوری تایپ میکنی جلو جلو بهت یه مواردی رو نشون میده .

پاسخ:
خواهش می‌کنم روزبه جان، ببخش که دیر شد.
fish در کل از bash خیلی ضعیف تره و به جز پایین بودن تعداد دستورات و آپشن‌هاش چند تا مشکل سازگاری هم داره (دستوراش با دستورای عادی شل‌ها فرق می‌کنه) که بهتره ازش استفاده نکنی:

۱. fish از عملگرهای && و || پشتیبانی نمی‌کنه البته فکر کنم به جاش از & و | پشتیبانی می‌کنه.

۲. تعریف کردن متغیرهای محلی توی fish نیاز به یه کلمه‌ی اضافی داره
توی zsh و bash
EDITOR=vi
توی fish
env EDITOR=vi

۳. دستورات گروهی هم فرق می‌کنن
توی zsh و bash
{ ls; ls;} | wc
توی fish
begin; ls; ls; end | wc

۴. زیرشل ها
توی zsh و bash
(ls; ls) | wc
توی fish
fish -c 'ls; ls' | wc

۵. با Vim هم ناسازگاره کلا

یه سری جدول اینجا هست که بهت نشون میده zsh چقدر قوی تر از بقیه شل‌های لینوکسیه

بعد از نصب zsh نمیتونم از کلیدهای جهت نما برای انتخاب استفاده کنم راهنمای زیر هم کمکی نکرد
http://www.clock.co.uk/blog/zsh-ctrl-left-arrow-outputting-5d
در اولین اجرای zsh تنظیمات پیشفرض (مورد چهارم) را انتخاب کردم
در صورت امکان تنظیمات zsh خود را به اشتراک بگذارید
پاسخ:
دویت عزیز از این راهنما استفاده کنید:

http://unix.stackexchange.com/questions/58870/ctrl-left-right-arrow-keys-issue
سلام الان این تنظیمات .zshrc من است (طبق لینک اما مشکل همچنان باقی است

===============
# Set up the prompt

autoload -Uz promptinit
promptinit
prompt adam1

setopt histignorealldups sharehistory

# Use emacs keybindings even if our EDITOR is set to vi
bindkey -e
bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

# Keep 1000 lines of history within the shell and save it to ~/.zsh_history:
HISTSIZE=1000
SAVEHIST=1000
HISTFILE=~/.zsh_history

# Use modern completion system
autoload -Uz compinit
compinit

zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true

zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
#my command
export EDITOR =/usr/bin/vim
export CHEATCOLORS=true
==========================
به جای        bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word
کد
bindkey ";5C" forward-word
bindkey ";5D" backward-word
راهم جایگزین کردم ولی مشکل حل نشد هر بار هم یک بار از zsh خارج و دوباره وارد شدم
پاسخ:
فکر میکنم مشکل از نسخه جدیده zsh باشه چون برای من هم کار نکرد. باز هم بررسی میکنم.
می توان کاری کرد که zsh نوشته فارسی را به درستی نمایش دهد و نه به صورت حروف جدا از هم؟
نه ربطی به شل نداره
مربوط به شبیه ساز ترمینالتون میشه مثلا توی kde konsole همچین مشکلی نیست
نه ربطی به شل نداره
مربوط به شبیه ساز ترمینالتون میشه مثلا توی kde konsole همچین مشکلی نیست

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی