Fork me on GitHub

LINUX如何优雅的编码

目录

oh-my-zsh

zsh

Linux shell

Linux/Unix提供了很多种Shell,为毛要这么多Shell?

难道用来炒着吃么?那我问你,你同类型的衣服怎么有那么多件?花色,质地还不一样。写程序比买衣服复杂多了,而且程序员往往负责把复杂的事情搞简单,简单的事情搞复杂。牛程序员看到不爽的Shell,就会自己重新写一套,慢慢形成了一些标准,常用的Shell有这么几种,sh、bash、csh等,想知道你的系统有几种shell,可以通过以下命令查看:

cat /etc/shells
1
2
3
4
5
6
7
[lee.guo@l-backyard.ops.dev.cn0 ~/qunar.com/qunar-backyard-v2]cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

zsh简介

Zsh是一个Linux下强大的shell, 由于大多数Linux产品安装,以及默认使用bash shell, 但是丝毫不影响极客们对zsh的热衷, 几乎每一款Linux产品都包含有zsh,通常可以用apt-get、urpmi或yum等包管理器进行安装

Zsh具有以下主要功能

  • 开箱即用、可编程的命令行补全功能可以帮助用户输入各种参数以及选项

  • 在用户启动的所有shell中共享命令历史

  • 通过扩展的文件通配符,可以不利用外部命令达到find命令一般展开文件名

  • 改进的变量与数组处理

  • 在缓冲区中编辑多行命令

  • 多种兼容模式,例如使用/bin/sh运行时可以伪装成Bourne shell

  • 可以定制呈现形式的提示符;包括在屏幕右端显示信息,并在键入长命令时自动隐藏

  • 可加载的模块,提供其他各种支持:完整的TCP与Unix域套接字控制,FTP客户端与扩充过的数学函数

  • 完全可定制化

zsh安装

sudo apt-get install zsh # Ubuntu

sudo yum install zsh

取代bash,设为默认shell

sudo usermod -s /bin/zsh

exit

oh-my-zsh安装

直接用zsh会很蛋疼,因为zsh功能很强大但是太复杂,所以需要oh-my-zsh来将它简单化

直接用git从github上面下载包

git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

直接使用脚本安装

cd oh-my-zsh/tools
./install.sh

你可以直接直接使用如下命令安装

curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

wget

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

oh-my-zsh主题

vim themes/robbyrussell.zsh-theme

替换内容

local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
# PROMPT='${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p%{$fg[cyan]%}%d %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%}>'

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"

exz-conf

vim 工具

GET CODE

1
2
3
4
5
6
7
CONFDIR=/home/lee.guo
echo $CONFDIR
cd $CONFDIR
git clone https://github.com/jaypei/exz-conf.git
cd exz-conf
git submodule init
git submodule update

VIM CONFIG

install

ln -s $CONFDIR/exz-conf/vimconf/_vimrc ~/.vimrc
ln -s $CONFDIR/exz-conf/vimconf/_gvimrc ~/.gvimrc
ln -s $CONFDIR/exz-conf/vimconf/vimfiles ~/.vim
# pylint
ln -s $CONFDIR/exz-conf/vimconf/pylint.ini ~/.pylintrc

updating

cd $CONFDIR/exz-conf
git pull --rebase; git submodule update
cd -

usage

  • 回车 等同于 : (normal)
  • 空格 等同于 ,/ (normal)
  • 0 等同于 ^ ,到行首字母前 (noarmal)
  • Q 关闭文件 (normal)
  • F4 or Shift+F4 切换 source/header (A)
  • F5 or Shift+F5 语法静态检查 (SyntasticCheck)
  • F8 or Shift+F8 VimWiki
  • F11 or Shift+F11 tag list (tagbar)
  • F12 or Shift+F12 目录树 (NERDTree)
  • Ctrl+h 光标移进 侧分割窗
  • Ctrl+l 光标移进 侧分割窗
  • Ctrl+j 光标移进 侧分割窗
  • Ctrl+k 光标移进 侧分割窗

默认 leader key 已设置为 ,

  • ,j 当前行下移 (normal)
  • ,k 当前行上移 (normal)
  • ,pp 切换paste和nopaste模式
  • ,m 设置当前位置单词高亮
  • ,n 取消当前位置单词高亮
  • ,/ 跳转到下一个高亮位置
  • ,c 清除所有高亮
  • ,s 删除所有行尾空白
  • ,, 保存文件,等同于 :w
谢谢您给我买糖吃~