Перемещение с bash на zsh [закрыто]

Я подумываю о переходе от bash к zsh, поскольку часто встречаю сообщения, восхваляющие zsh. Я опытный пользователь командной строки, и я предполагаю, что основы практически одинаковы, поэтому я ищу совет, чтобы получить преимущества перемещения и любые ошибки, о которых нужно знать.

Пожалуйста, просто дайте один совет на каждый ответ. Я ищу куски размером с укусом, где я могу вернуться и интегрировать лишние биты информации в мое использование оболочки постоянными темпами, а не пытаться изучить все это за один раз.

141
задан 7 August 2010 в 17:40

89 ответов

Я в той же поездке:)

До сих пор я обнаружил, что дело в том, чтобы иметь хороший файл конфигурации (.zshrc).

Возьмите этот например, http://matt.blissett.me.uk/linux/zsh/zshrc, посмотрите комментарии и взломайте свой путь. Stackoverflow и severphault и хорошие места для поиска.

Мне еще предстоит погрузиться в http://matt.blissett.me.uk/linux/zsh/zshrc , но я не так много времени, чтобы проиграть:)

3
ответ дан 25 July 2018 в 23:18

Я не так много знаю о bash, поэтому я не могу скомпоновать. Некоторые фрагменты из моего конфигурационного файла zsh.

Некоторая конфигурация

HISTFILE=~/.zsh_history HISTSIZE=1000 SAVEHIST=1000 REPORTTIME=10 # print elapsed time when more than 10 seconds setopt NO_HUP setopt NO_LIST_BEEP setopt LOCAL_OPTIONS # allow functions to have local options setopt LOCAL_TRAPS # allow functions to have local traps setopt HIST_VERIFY setopt SHARE_HISTORY # share history between sessions ??? setopt EXTENDED_HISTORY # add timestamps to history setopt PROMPT_SUBST setopt CORRECT setopt COMPLETE_IN_WORD setopt IGNORE_EOF setopt APPEND_HISTORY # adds history setopt INC_APPEND_HISTORY SHARE_HISTORY # adds history incrementally and share it across sessions setopt HIST_IGNORE_ALL_DUPS # don't record dupes in history setopt HIST_REDUCE_BLANKS # Leave some chars out of the out of WORDCHARS so ^W acts more nicely WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?'

Git в приглашении

if [[ -n $SSH_CONNECTION ]]; then export PS1='%m:%3~$(git_info_for_prompt)%# ' else export PS1='%3~$(git_info_for_prompt)%# ' fi

Некоторые горячие клавиши, вставляемые в начале выделите текст.

insert_sudo () { zle beginning-of-line; zle -U "sudo " } insert_apt () { zle beginning-of-line; zle -U "sudo apt-get " } insert_gem () { zle beginning-of-line; zle -U "sudo gem " } insert_install () { zle -U "install " } zle -N insert-sudo insert_sudo zle -N insert-apt insert_apt zle -N insert-gem insert_gem zle -N insert-install insert_install bindkey "^B" insert-gem bindkey "^N" insert-install bindkey "^k" insert-sudo bindkey "^a" insert-apt

Функции хранятся в ~ / .zsh / functions

git_info_for_prompt

local g="$(git rev-parse --git-dir 2>/dev/null)" if [ -n "$g" ]; then local r local b if [ -d "$g/../.dotest" ] then if test -f "$g/../.dotest/rebasing" then r="|REBASE" elif test -f "$g/../.dotest/applying" then r="|AM" else r="|AM/REBASE" fi b="$(git symbolic-ref HEAD 2>/dev/null)" elif [ -f "$g/.dotest-merge/interactive" ] then r="|REBASE-i" b="$(cat "$g/.dotest-merge/head-name")" elif [ -d "$g/.dotest-merge" ] then r="|REBASE-m" b="$(cat "$g/.dotest-merge/head-name")" elif [ -f "$g/MERGE_HEAD" ] then r="|MERGING" b="$(git symbolic-ref HEAD 2>/dev/null)" else if [ -f "$g/BISECT_LOG" ] then r="|BISECTING" fi if ! b="$(git symbolic-ref HEAD 2>/dev/null)" then if ! b="tag: $(git describe --exact-match HEAD 2>/dev/null)" then b="$(cut -c1-7 "$g/HEAD")..." fi fi fi if [ -n "$1" ]; then printf "$1" "${b##refs/heads/}$r" else printf "[%s]" "${b##refs/heads/}$r" fi fi

Некоторые параметры github

#compdef github _github() { if (( CURRENT > 2 )); then # shift words so _arguments doesn't have to be concerned with second command (( CURRENT-- )) shift words # use _call_function here in case it doesn't exist _call_function 1 _github_${words[1]} else _values "github command" \ "fetch[Fetch from a remote to a local branch.]" \ "ignore[Ignore a SHA (from 'github network commits')]" \ "fetch_all[Fetch all refs from a user]" \ "info[Info about this project.]" \ "browse[Open this repo in a web browser.]" \ "home[Open this repo's master branch in a web browser.]" \ "clone[Clone a repo.]" \ "pull-request[Generate the text for a pull request.]" \ "network[Project network tools.]" \ "pull[Pull from a remote.]" \ "track[Track another user's repository.]" fi } _github_pull() { _arguments \ "--merge[Automatically merge remote's changes into your master.]" } _github_clone() { _arguments \ "--ssh[Clone using the git@github.com style url.]" } _github_track() { _arguments \ "--private[Use git@github.com: instead of git://github.com/.]" \ "--ssh[Equivalent to --private.]" } _github_network() { if (( CURRENT > 2 )); then # shift words so _arguments doesn't have to be concerned with second command (( CURRENT-- )) shift words # use _call_function here in case it doesn't exist _call_function 1 _github_network_${words[1]} else _values "github network command" \ "web[Open network in a web browser.]" \ "list[List networked repositories.]" \ "fetch[Fetched commits for a given networked repository.]" \ "commits[List networked commits not pulled into this repo.]" fi } _github_network_commits() { _arguments \ "--project[Filter commits on a certain project.]" \ "--author[Filter commits on a email address of author.]" \ "--common[Show common branch point.]" \ "--nocache[Do not use the cached network data.]" \ "--sort[How to sort : date(*), branch, author.]" \ "--thisbranch[Look at branches that match the current one]" \ "--applies[Filter commits to patches that apply cleanly.]" \ "--limit[Only look through the first X heads - useful for really large projects]" \ "--before[Only show commits before a certain date.]" \ "--after[Only show commits after a certain date.]" \ "--shas[Only show shas.]" \ "--cache[Use the network data even if it's expired.]" \ "--noapply[Filter commits to patches that do not apply cleanly.]" }
4
ответ дан 25 July 2018 в 23:18

Я бы рекомендовал книгу From bash для Z Shell. У него есть все советы, необходимые для переключения оболочки. Он объясняет различия обеих оболочек и упрощает создание новой zsher.

14
ответ дан 31 July 2018 в 11:28
  • 1
    Книга отлично подходит как для пользователей bash, так и для zsh. Вам нужно любить, как каждая глава начинается с «и bash, и zsh может делать все это». а затем приводит к еще 30 страницам ", и вот только zsh только материал" – Rick 3 September 2010 в 06:54

Вот мой .zshrc, и это самая важная вещь! zsh имеет много вариантов, которые вы можете использовать, поэтому ознакомьтесь с некоторыми примерами по сети или прочитайте документацию на домашней странице Zsh.

My .zshrc не содержит никаких действительно классных вещей, кроме временная метка в правой части командной строки.

Btw, не забудьте попробовать табуляцию, где есть несколько примеров:

mplayer -a[tab]

покажет что-то вроде этого: [ ! d5] mplayer -a -ac -- force usage of a specific audio codec -af -- activate audio filters -afm -- force usage of a specific audio codec family -alang -- select the DVD audio language -ao -- specify audio driver -aop -- specify audio output filter

И если вы используете безшовные ssh-ключи или ssh-agent, вам может показаться полезным использовать tabcomplete удаленные файлы:

scp apollo:/home/user/[tab] Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ Templates/ Videos/

. После получения списка вы можете нажать вкладку

Но будьте осторожны, эта оболочка сделает вас ленивыми и заставит вас почувствовать, что стандартная оболочка глупа и раздражает!

8
ответ дан 31 July 2018 в 11:28

Большое преимущество - отличное завершение вкладки с предварительно упакованными скриптами завершения для многих команд. Вот пример, показывающий вывод apt-get<TAB>:

apt-get action autoclean build-dep clean dselect-upgrade install remove update autoremove check dist-upgrade help purge source upgrade
2
ответ дан 31 July 2018 в 11:28

Узнайте о расширенных globbing и рекурсивных шарах в zsh.

Узнайте немного о zstyle и о том, как различные вещи (особенно завершение) позволяют настраивать их конфигурацию с помощью zstyle.

Look в ассоциативные массивы.

Если вы используете регулярные выражения, загляните в =~ (который тоже есть) и рассмотрите: setopt rematch_pcre

Избегайте написания сценариев, которые зависят от большей части магии zsh, потому что, хотя это фантастика для использования, zsh может иметь тенденцию к записи только для записи. Если вы используете слишком много, подумайте, когда переключиться на такой язык, как Python.

Zsh соблазнительна. Это темная сторона. Добро пожаловать.

3
ответ дан 31 July 2018 в 11:28

Несколько специально полезных расширенных глобусов:

1- rmdir *(/^F) - удалить все непустые каталоги в текущем каталоге

2- grep traceback /srv/log/**/*(.m-2) - искать это regex в файлах, измененных за последние два дня

3- chmod g+w **/*(U^I) - сделать все файлы, принадлежащие мне, а не записывать по группам, записывать по группам

Да, конечно, вы можете напишите это с помощью find, но это легче отключить. У него есть два недостатка, чтобы быть справедливыми: оба они должны быть расширены в командной строке: если он соответствует тысячам файлов, командная строка будет слишком длинной, и это не удастся, и, во-вторых, все файлы будут найдены перед тем, как файл начнет работать.

(вам понадобится setopt extendedglob, если он еще не включен)

5
ответ дан 31 July 2018 в 11:28

Еще один отличный ресурс - страница любителей zsh (идет от сайта zml grml).

0
ответ дан 31 July 2018 в 11:28

Я дал купе переговоров и перевел несколько человек на zsh. Я сохраняю github repo моих (каковы преимущества) заметки вместе с стартером и копией моей собственной zsh config в github здесь.

http://github.com/mitechie/zshrc

1
ответ дан 31 July 2018 в 11:28

Я в той же поездке:)

До сих пор я обнаружил, что дело в том, чтобы иметь хороший файл конфигурации (.zshrc).

Возьмите этот например, http://matt.blissett.me.uk/linux/zsh/zshrc, посмотрите комментарии и взломайте свой путь. Stackoverflow и severphault и хорошие места для поиска.

Мне еще предстоит погрузиться в http://matt.blissett.me.uk/linux/zsh/zshrc , но я не так много времени, чтобы проиграть:)

3
ответ дан 31 July 2018 в 11:28

Я не так много знаю о bash, поэтому я не могу скомпоновать. Некоторые фрагменты из моего конфигурационного файла zsh.

Некоторая конфигурация

HISTFILE=~/.zsh_history HISTSIZE=1000 SAVEHIST=1000 REPORTTIME=10 # print elapsed time when more than 10 seconds setopt NO_HUP setopt NO_LIST_BEEP setopt LOCAL_OPTIONS # allow functions to have local options setopt LOCAL_TRAPS # allow functions to have local traps setopt HIST_VERIFY setopt SHARE_HISTORY # share history between sessions ??? setopt EXTENDED_HISTORY # add timestamps to history setopt PROMPT_SUBST setopt CORRECT setopt COMPLETE_IN_WORD setopt IGNORE_EOF setopt APPEND_HISTORY # adds history setopt INC_APPEND_HISTORY SHARE_HISTORY # adds history incrementally and share it across sessions setopt HIST_IGNORE_ALL_DUPS # don't record dupes in history setopt HIST_REDUCE_BLANKS # Leave some chars out of the out of WORDCHARS so ^W acts more nicely WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?'

Git в приглашении

if [[ -n $SSH_CONNECTION ]]; then export PS1='%m:%3~$(git_info_for_prompt)%# ' else export PS1='%3~$(git_info_for_prompt)%# ' fi

Некоторые горячие клавиши, вставляемые в начале выделите текст.

insert_sudo () { zle beginning-of-line; zle -U "sudo " } insert_apt () { zle beginning-of-line; zle -U "sudo apt-get " } insert_gem () { zle beginning-of-line; zle -U "sudo gem " } insert_install () { zle -U "install " } zle -N insert-sudo insert_sudo zle -N insert-apt insert_apt zle -N insert-gem insert_gem zle -N insert-install insert_install bindkey "^B" insert-gem bindkey "^N" insert-install bindkey "^k" insert-sudo bindkey "^a" insert-apt

Функции хранятся в ~ / .zsh / functions

git_info_for_prompt

local g="$(git rev-parse --git-dir 2>/dev/null)" if [ -n "$g" ]; then local r local b if [ -d "$g/../.dotest" ] then if test -f "$g/../.dotest/rebasing" then r="|REBASE" elif test -f "$g/../.dotest/applying" then r="|AM" else r="|AM/REBASE" fi b="$(git symbolic-ref HEAD 2>/dev/null)" elif [ -f "$g/.dotest-merge/interactive" ] then r="|REBASE-i" b="$(cat "$g/.dotest-merge/head-name")" elif [ -d "$g/.dotest-merge" ] then r="|REBASE-m" b="$(cat "$g/.dotest-merge/head-name")" elif [ -f "$g/MERGE_HEAD" ] then r="|MERGING" b="$(git symbolic-ref HEAD 2>/dev/null)" else if [ -f "$g/BISECT_LOG" ] then r="|BISECTING" fi if ! b="$(git symbolic-ref HEAD 2>/dev/null)" then if ! b="tag: $(git describe --exact-match HEAD 2>/dev/null)" then b="$(cut -c1-7 "$g/HEAD")..." fi fi fi if [ -n "$1" ]; then printf "$1" "${b##refs/heads/}$r" else printf "[%s]" "${b##refs/heads/}$r" fi fi

Некоторые параметры github

#compdef github _github() { if (( CURRENT > 2 )); then # shift words so _arguments doesn't have to be concerned with second command (( CURRENT-- )) shift words # use _call_function here in case it doesn't exist _call_function 1 _github_${words[1]} else _values "github command" \ "fetch[Fetch from a remote to a local branch.]" \ "ignore[Ignore a SHA (from 'github network commits')]" \ "fetch_all[Fetch all refs from a user]" \ "info[Info about this project.]" \ "browse[Open this repo in a web browser.]" \ "home[Open this repo's master branch in a web browser.]" \ "clone[Clone a repo.]" \ "pull-request[Generate the text for a pull request.]" \ "network[Project network tools.]" \ "pull[Pull from a remote.]" \ "track[Track another user's repository.]" fi } _github_pull() { _arguments \ "--merge[Automatically merge remote's changes into your master.]" } _github_clone() { _arguments \ "--ssh[Clone using the git@github.com style url.]" } _github_track() { _arguments \ "--private[Use git@github.com: instead of git://github.com/.]" \ "--ssh[Equivalent to --private.]" } _github_network() { if (( CURRENT > 2 )); then # shift words so _arguments doesn't have to be concerned with second command (( CURRENT-- )) shift words # use _call_function here in case it doesn't exist _call_function 1 _github_network_${words[1]} else _values "github network command" \ "web[Open network in a web browser.]" \ "list[List networked repositories.]" \ "fetch[Fetched commits for a given networked repository.]" \ "commits[List networked commits not pulled into this repo.]" fi } _github_network_commits() { _arguments \ "--project[Filter commits on a certain project.]" \ "--author[Filter commits on a email address of author.]" \ "--common[Show common branch point.]" \ "--nocache[Do not use the cached network data.]" \ "--sort[How to sort : date(*), branch, author.]" \ "--thisbranch[Look at branches that match the current one]" \ "--applies[Filter commits to patches that apply cleanly.]" \ "--limit[Only look through the first X heads - useful for really large projects]" \ "--before[Only show commits before a certain date.]" \ "--after[Only show commits after a certain date.]" \ "--shas[Only show shas.]" \ "--cache[Use the network data even if it's expired.]" \ "--noapply[Filter commits to patches that do not apply cleanly.]" }
4
ответ дан 31 July 2018 в 11:28

Я бы рекомендовал книгу От bash до Z Shell . У него есть все советы, необходимые для переключения оболочки. Он объясняет различия обеих оболочек и упрощает создание новой zsher.

14
ответ дан 2 August 2018 в 04:35

Еще один большой ресурс - это страница любителей zsh (из grml zsh site ).

0
ответ дан 2 August 2018 в 04:35

Я дал купе переговоров и перевел несколько человек на zsh. Я сохраняю github repo моих (каковы преимущества) заметки вместе с стартером и копией моей собственной zsh config в github здесь.

http://github.com/mitechie/zshrc

1
ответ дан 2 August 2018 в 04:35

Я в той же поездке:)

До сих пор я обнаружил, что дело в том, чтобы иметь хороший файл конфигурации (.zshrc).

Возьмите этот в качестве примера http://matt.blissett.me.uk/linux/zsh/zshrc , посмотрите комментарии и взломайте свой путь. Stackoverflow и severphault и хорошие места для поиска.

Мне еще предстоит погрузиться в http://dotfiles.org/.zshrc , но у меня нет так много времени потерять:)

3
ответ дан 2 August 2018 в 04:35

Несколько специально полезных расширенных глобусов:

1- rmdir * (/ ^ F) - удалить все непустые каталоги в текущем каталоге

2- grep traceback /srv/log/**/*(.m-2) - искать это регулярное выражение в файлах, измененных за последние два дня

3- chmod g + w ** / * (U ^ I) - делать любые файлы, принадлежащие мне, а не записывать в группы, записывать в группы

Да, конечно, вы можете написать это с find , но это легче отбросить. У него есть два недостатка, чтобы быть справедливыми: оба они должны быть расширены в командной строке: если он соответствует тысячам файлов, командная строка будет слишком длинной, и это не удастся, и, во-вторых, все файлы будут найдены перед тем, как файл начнет работать.

(вам нужно setopt extendedglob , если он еще не включен)

5
ответ дан 2 August 2018 в 04:35

Большое преимущество - отличное завершение вкладки с предварительно упакованными скриптами завершения для многих команд. Вот пример, показывающий вывод apt-get & lt; TAB & gt; :

  apt-get действие autoclean build-dep clean dselect-upgrade install удалить обновление autoremove check dist-  обновление справки очистить исходное обновление  
2
ответ дан 2 August 2018 в 04:35

Узнайте о расширенных глобусах и рекурсивных шарах в zsh.

Узнайте немного о zstyle и о том, как различные вещи (особенно завершение) позволяют настроить их конфигурацию с помощью zstyle.

Look в ассоциативные массивы.

Если вы используете регулярные выражения, загляните в = ~ (который также имеет значение) и рассмотрим: setopt rematch_pcre

Избегайте написания сценариев, которые зависят от более чем магии от zsh's magic, потому что, хотя это фантастика для использования, zsh может иметь тенденцию к записи только для записи. Если вы используете слишком много, подумайте, когда переключиться на такой язык, как Python.

Zsh соблазнительна. Это темная сторона. Добро пожаловать.

3
ответ дан 2 August 2018 в 04:35

Вот мой .zshrc , и это самая важная вещь! zsh имеет много вариантов, которые вы можете использовать, поэтому ознакомьтесь с некоторыми примерами по сети или прочитайте документацию на домашней странице Zsh .

My .zshrc не содержат любые действительно интересные вещи, кроме метки времени в правой части командной строки.

Btw, не забудьте попробовать табуляцию, где есть несколько примеров:

   mplayer -a [tab]  

покажет что-то вроде этого:

  mplayer -a -ac - принудительное использование определенного аудиокодека -af -  - активировать звуковые фильтры -afm - принудительное использование определенного семейства аудиокодеков -аланг - выбрать язык аудио DVD -a - указать аудиодрайвер -aop - указать звуковой выходной фильтр  

И если вы используете безшовные ssh-ключи или ssh-agent, вам может быть полезно использовать заготовку удаленных файлов:

  scp apollo: / home / user / [tab] Desktop / Documents / Downloads /  Музыка / Картинки / Публикация / Шаблоны / Видео /  

После получения списка вы можете нажать вкладку больше раз в цикле

Но будьте осторожны, эта оболочка сделает вас ленивыми и заставит вас почувствовать, что стандартная оболочка глупа и раздражает!

8
ответ дан 2 August 2018 в 04:35

Я дал купе переговоров и перевел несколько человек на zsh. Я сохраняю github repo моих (каковы преимущества) заметки вместе с стартером и копией моей собственной zsh config в github здесь.

http://github.com/mitechie/zshrc

1
ответ дан 4 August 2018 в 21:10

Я в той же поездке:)

До сих пор я обнаружил, что дело в том, чтобы иметь хороший файл конфигурации (.zshrc).

Возьмите этот в качестве примера http://matt.blissett.me.uk/linux/zsh/zshrc , посмотрите комментарии и взломайте свой путь. Stackoverflow и severphault, а также хорошие места для поиска.

Мне еще предстоит погрузиться в http://dotfiles.org/.zshrc , но у меня не так много времени потерять:)

3
ответ дан 4 August 2018 в 21:10

Большое преимущество - отличное завершение вкладки с предварительно упакованными скриптами завершения для многих команд. Вот пример, показывающий вывод apt-get & lt; TAB & gt; :

  apt-get действие autoclean build-dep clean dselect-upgrade install удалить обновление autoremove check dist-  обновление справки очистить исходное обновление  
2
ответ дан 4 August 2018 в 21:10

Узнайте о расширенных глобусах и рекурсивных шарах в zsh.

Узнайте немного о zstyle и о том, как различные вещи (особенно завершение) позволяют настроить их конфигурацию с помощью zstyle.

Look в ассоциативные массивы.

Если вы используете регулярные выражения, загляните в = ~ (который также имеет значение) и рассмотрим: setopt rematch_pcre

Избегайте написания сценариев, которые зависят от более чем магии от zsh's magic, потому что, хотя это фантастика для использования, zsh может иметь тенденцию к записи только для записи. Если вы используете слишком много, подумайте, когда переключиться на такой язык, как Python.

Zsh соблазнительна. Это темная сторона. Добро пожаловать.

3
ответ дан 4 August 2018 в 21:10

Несколько специально полезных расширенных глобусов:

1- rmdir * (/ ^ F) - удалить все непустые каталоги в текущем каталоге

2- grep traceback /srv/log/**/*(.m-2) - искать это регулярное выражение в файлах, измененных за последние два дня

3- chmod g + w ** / * (U ^ I) - делать любые файлы, принадлежащие мне, а не записывать в группы, записывать в группы

Да, конечно, вы можете написать это с find , но это легче отбросить. У него есть два недостатка, чтобы быть справедливыми: оба они должны быть расширены в командной строке: если он соответствует тысячам файлов, командная строка будет слишком длинной, и это не удастся, и, во-вторых, все файлы будут найдены перед тем, как файл начнет работать.

(вам нужно setopt extendedglob , если он еще не включен)

5
ответ дан 4 August 2018 в 21:10

Еще один большой ресурс - это страница любителей zsh (из grml zsh site ).

0
ответ дан 4 August 2018 в 21:10

Вот мой .zshrc , и это самая важная вещь! zsh имеет много вариантов, которые вы можете использовать, поэтому ознакомьтесь с некоторыми примерами по сети или прочитайте документацию на домашней странице Zsh .

My .zshrc не содержат любые действительно интересные вещи, кроме метки времени в правой части командной строки.

Btw, не забудьте попробовать табуляцию, где есть несколько примеров:

   mplayer -a [tab]  

покажет что-то вроде этого:

  mplayer -a -ac - принудительное использование определенного аудиокодека -af -  - активировать звуковые фильтры -afm - принудительное использование определенного семейства аудиокодеков -аланг - выбрать язык аудио DVD -a - указать аудиодрайвер -aop - указать звуковой выходной фильтр  

И если вы используете безшовные ssh-ключи или ssh-agent, вам может быть полезно использовать заготовку удаленных файлов:

  scp apollo: / home / user / [tab] Desktop / Documents / Downloads /  Музыка / Картинки / Публикация / Шаблоны / Видео /  

После получения списка вы можете нажать вкладку больше раз в цикле

Но будьте осторожны, эта оболочка сделает вас ленивыми и заставит вас почувствовать, что стандартная оболочка глупа и раздражает!

8
ответ дан 4 August 2018 в 21:10

Я бы рекомендовал книгу От bash до Z Shell . У него есть все советы, необходимые для переключения оболочки. Он объясняет различия обеих оболочек и упрощает создание новой zsher.

14
ответ дан 4 August 2018 в 21:10

Я в той же поездке:)

До сих пор я обнаружил, что дело в том, чтобы иметь хороший файл конфигурации (.zshrc).

Возьмите этот в качестве примера http://matt.blissett.me.uk/linux/zsh/zshrc , посмотрите комментарии и взломайте свой путь. Stackoverflow и severphault и хорошие места для поиска.

Мне еще предстоит погрузиться в http://dotfiles.org/.zshrc , но у меня нет так много времени потерять:)

3
ответ дан 6 August 2018 в 04:38

Еще один большой ресурс - это страница любителей zsh (из grml zsh site ).

0
ответ дан 6 August 2018 в 04:38

Я дал купе переговоров и перевел несколько человек на zsh. Я сохраняю github repo моих (каковы преимущества) заметки вместе с стартером и копией моей собственной zsh config в github здесь.

http://github.com/mitechie/zshrc

1
ответ дан 6 August 2018 в 04:38

Другие вопросы по тегам:

Похожие вопросы: