赞
踩
macOS Catalina终端默认为zsh,以下第三节开始的配置会遇到无法应用的问题,解决方案有两种:
切换为bash:系统偏好设置 -> 用户与群组 -> 点击左下角小黄锁图标,以解锁允许设置 -> 在左侧列表单击你的用户名,出现"高级选项" -> 打开高级选项,在login shell一栏选择/bin/Bash -> 应用修改。
使用zsh应用下列配置(由于zsh与bash差异较大,该方法配置过程可能遇到其它问题):在终端依次执行下列指令
- cd ~
- touch .zshrc
- open .zshrc
- 在打开的.zshrc中添加source .bash_profile
一: 默认设置的缺陷
Terminal默认的显示效果是白底黑字,而且字体极小,看着特别费劲。导致输入很多命令后,想要寻找之前的命令提示行瞅瞎眼。
二:Terminal偏好设置
-- 以任意方式打开终端
-- 显示检查器
鼠标在终端中,右击,选择“显示检查器”,在自动弹出的“检查器”中选择自己喜欢的终端背景并双击
-- 描述文件
在自动弹出的对话框中选择“描述文件”,在这里依然可以重新选择自己喜欢的终端背景,选择好之后一定要点击左下角的默认键
系统默认主题是Basic,这里我把黑色背景的Pro主题设为默认,并对字体、颜色等进行了修改,具体如下:
修改了背景色的饱和度和亮度,让背景看上去没有那么黑;不透明度调整为100%,因为感觉原来的半透明看上去挺尴尬的;
修改字体为Menlo 16磅;
取消选择“使用粗体字”,增加选择“对粗体文本使用亮丽颜色”;
修改了ANSI颜色中两种蓝色的参数,使其能够在黑色的背景上显示得更清楚一些;
修改光标颜色为较深的绿色,更加醒目;增加选择“闪动光标”;
修改后的显示效果可参考后续步骤中的图。
三:不同文件(ls) -- 颜色配置
-- 更改不同文件(ls)类型显示颜色
先看下设置前后效果对比
设置前,输入:ls
设置后,输入:ls
-- 接下来说下具体设置过程
-- 切换到主用户目录:
cd ~
-- 编辑.bash_profile配置文件:
vim .bash_profile
-- 按 i 键进入配置模式:
在文件末尾添加如下代码:
- export CLICOLOR='Yes' # 是否输出颜色
- # export LS_OPTIONS='--color=auto' # 不同文件类型颜色配置,自动选择颜色
- export LSCOLORS='ExGxFxdaCxDaDahbadacec' # 指定颜色,Linux配色方案
按Esc退出到命令模式,输入::wq! (!一定不可以省略,否则会报错)
接着会返回到终端。
-- 生效配置
输入下面代码使配置生效:
source .bash_profile
ok,ls目录颜色修改到这就ok了,关闭当前Terminal,重启一个新的Terminal使配置生效。显示效果如下图所示:
这里完全沿用了Linux的配色方案
想要修改配色方案的话需要修改上述文件中的 LSCOLORS 变量。该变量由22个字符组成,每2个一组,分别代表一种文件类型的前景色和背景色。
CLICOLOR是用来设置是否进行颜色的显示。CLI是Command Line Interface的缩写。LSCOLORS是用来设置当CLICOLOR被启用后,各种文件类型的颜色。LSCOLORS的值中每两个字母为一组,分别设置某个文件类型的文字颜色和背景颜色。LSCOLORS中一共11组颜色设置,按照先后顺序,分别对以下的文件类型进行设置:
这11种文件类型按顺序分别为:
- directory这是一个目录
- symboliclink这是一个符号链接
- socket这是一个socket链接
- pipe这是一个管道
- executable这是一个可执行文件
- blockspecial这是一个字符特殊文件
- characterspecial这是一个块特殊文件
- executable with setuid bitset可执行以不同的UID运行的程序
- executable with setgid bitset可执行以一个额外的组特权运行的程序
- directory writabletoothers,with sticky bit
- directory writabletoothers,without sticky bit
颜色字符为:
- "exfxcxdxbxegedabagacad"是终端默认的,下面给出的各个字母代表指代的不同颜色
- a black
- b red
- c green
- d brown
- e blue
- f magenta
- g cyan
- h light grey
- A bold black, usually shows up as dark grey
- B bold red
- C bold green
- D bold brown, usually shows up as yellow
- E bold blue
- F bold magenta
- G bold cyan
- H bold light grey; looks like bright white
- x default foreground or background
LSCOLOR上方各个字母的次序指代的不同命令:
- 1. directory
- 2. symbolic link
- 3. socket
- 4. pipe
- 5. executable
- 6. block special
- 7. character special
- 8. executable with setuid bit set
- 9. executable with setgid bit set
- 10. directory writable to others, with sticky bit
- 11. directory writable to others, without sticky
四:vim -- 配色
Mac默认的vim配色也是黑底白字,没有任何高亮,需要我们自行配置,这里配置vim人气超高的molokai配色方案,废话不多,先上效果:
方法一:
--切换到主用户目录:
cd ~
-- 复制vim的系统配置文件:
cp /usr/share/vim/vimrc ~/.vimrc
-- 编辑用户配置文件.vimrc:
vim .vimrc
-- 配置文件:
- colorscheme default " 设置颜色主题
- syntax on " 语法高亮
-
- filetype on " 检测文件的类型
- set number " 显示行号
- set cursorline " 用浅色高亮当前行
- "autocmd InsertLeave * se nocul
- "autocmd InsertEnter * se cul
- set ruler " 在编辑过程中,在右下角显示光标位置的状态行
- set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
- set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
- " 设置在状态行显示的信息
-
- set tabstop=4 " Tab键的宽度
- set softtabstop=4
- set shiftwidth=4 " 统一缩进为4
-
- set autoindent " vim使用自动对齐,也就是把当前行的对齐格式应用到下一行(自动缩进)
- set cindent " (cindent是特别针对 C语言语法自动缩进)
- set smartindent " 依据上面的对齐格式,智能的选择对齐方式,对于类似C语言编写上有用
- set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离
-
- set incsearch " 输入搜索内容时就显示搜索结果
- set hlsearch " 搜索时高亮显示被找到的文本
-
- set foldmethod=indent " 设置缩进折叠
- set foldlevel=99 " 设置折叠层数
- nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
- " 用空格键来开关折叠
- " 自动跳转到上次退出的位置
- if has("autocmd")
- au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
- endif
添加完成后,按Esc退出到命令模式,输入 :wq! 保存,在次进入即可看到效果(即:
再输入vim .vimrc),如上图示例所示
另外,我这里使用的是vim的默认主题default,如果想使用其他主题,将上述代码片第18行的 colorscheme default改成对应的主题即可,比如可以改成 colorscheme pablo 。可选的主题在下图中列出,以.vim结尾的文件即为vim的主题文件:
方法二:
--进入
进入主目录下的.vim文件夹
cd ~/.vim
-- 验证
如果没有.vim文件夹,则在主目录下创建.vim
cd ~
mkdir .vim
cd .vim
-- 下载
下载molokai配色方案( 没有git命令的话,手动去下面链接下载,把colors文件夹放到.vim文件夹下)
git clone https://github.com/tomasr/molokai.git
cp -r molokai/colors ./
-- 检查文件
检查一下,colors文件夹(里面有molokai)是否在.vim文件夹下,一般都是这个问题。
-- 创建文件
回到主目录,创建.vimrc文件。
cd ~
vim .vimrc
-- 配置文件
输入vim .vimrc后,按下回车,按 i 进入插入模式,在文件末尾添加如下代码:
将下面内容粘贴到.vimrc中,第三行colorscheme molokai即选择配色方案。
set nocompatible " 关闭 vi 兼容模式
syntax on " 自动语法高亮
colorscheme molokai " 设定配色方案
set number " 显示行号
set cursorline " 突出显示当前行
set ruler " 打开状态栏标尺
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set tabstop=4 " 设定 tab 长度为 4
set nobackup " 覆盖文件时不备份
set autochdir " 自动切换当前目录为当前文件所在的目录
filetype plugin indent on " 开启插件
set backupcopy=yes " 设置备份时的行为为覆盖
set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set nowrapscan " 禁止在搜索到文件两端时重新搜索
set incsearch " 输入搜索内容时就显示搜索结果
set hlsearch " 搜索时高亮显示被找到的文本
set noerrorbells " 关闭错误信息响铃
set novisualbell " 关闭使用可视响铃代替呼叫
set t_vb= " 置空错误铃声的终端代码
" set showmatch " 插入括号时,短暂地跳转到匹配的对应括号
" set matchtime=2 " 短暂跳转到匹配括号的时间
set magic " 设置魔术
set hidden " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
set guioptions-=T " 隐藏工具栏
set guioptions-=m " 隐藏菜单栏
set smartindent " 开启新行时使用智能自动缩进
set backspace=indent,eol,start
" 不设定在插入状态无法用退格键和 Delete 键删除回车符
set cmdheight=1 " 设定命令行的行数为 1
set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 设置在状态行显示的信息
set foldenable " 开始折叠
set foldmethod=syntax " 设置语法折叠
set foldcolumn=0 " 设置折叠区域的宽度
setlocal foldlevel=1 " 设置折叠层数为
" set foldclose=all " 设置为自动关闭折叠
" nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
" 用空格键来开关折叠
" return OS type, eg: windows, or linux, mac, et.st..
function! MySys()
if has("win16") || has("win32") || has("win64") || has("win95")
return "windows"
elseif has("unix")
return "linux"
endif
endfunction
" 用户目录变量$VIMFILES
if MySys() == "windows"
let $VIMFILES = $VIM.'/vimfiles'
elseif MySys() == "linux"
let $VIMFILES = $HOME.'/.vim'
endif
" 设定doc文档目录
let helptags=$VIMFILES.'/doc'
" 设置字体 以及中文支持
if has("win32")
set guifont=Inconsolata:h12:cANSI
endif
" 配置多语言环境
if has("multi_byte")
" UTF-8 编码
set encoding=utf-8
set termencoding=utf-8
set formatoptions+=mM
set fencs=utf-8,gbk
if v:lang =~? '^
set ambiwidth=double
endif
if has("win32")
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif
" Buffers操作快捷方式!
nnoremap <C-RETURN> :bnext<CR>
nnoremap <C-S-RETURN> :bprevious<CR>
" Tab操作快捷方式!
nnoremap <C-TAB> :tabnext<CR>
nnoremap <C-S-TAB> :tabprev<CR>
"关于tab的快捷键
" map tn :tabnext<cr>
" map tp :tabprevious<cr>
" map td :tabnew .<cr>
" map te :tabedit
" map tc :tabclose<cr>
"窗口分割时,进行切换的按键热键需要连接两次,比如从下方窗口移动
"光标到上方窗口,需要<c-w><c-w>k,非常麻烦,现在重映射为<c-k>,切换的
"时候会变得非常方便.
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
"一些不错的映射转换语法(如果在一个文件中混合了不同语言时有用)
nnoremap <leader>1 :set filetype=xhtml<CR>
nnoremap <leader>2 :set filetype=css<CR>
nnoremap <leader>3 :set filetype=javascript<CR>
nnoremap <leader>4 :set filetype=php<CR>
" set fileformats=unix,dos,mac
" nmap <leader>fd :se fileformat=dos<CR>
" nmap <leader>fu :se fileformat=unix<CR>
" use Ctrl+[l|n|p|cc] to list|next|previous|jump to count the result
" map <C-x>l <ESC>:cl<CR>
" map <C-x>n <ESC>:cn<CR>
" map <C-x>p <ESC>:cp<CR>
" map <C-x>c <ESC>:cc<CR>
" 让 Tohtml 产生有 CSS 语法的 html
" syntax/2html.vim,可以用:runtime! syntax/2html.vim
let html_use_css=1
" Python 文件的一般设置,比如不要 tab 等
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType python map <F12> :!python %<CR>
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y
" 打开javascript折叠
let b:javascript_fold=1
" 打开javascript对dom、html和css的支持
let javascript_enable_domhtmlcss=1
" 设置字典 ~/.vim/dict/文件的路径
autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict
autocmd filetype css set dictionary=$VIMFILES/dict/css.dict
autocmd filetype php set dictionary=$VIMFILES/dict/php.dict
"-----------------------------------------------------------------
" plugin - bufexplorer.vim Buffers切换
" \be 全屏方式查看全部打开的文件列表
" \bv 左右方式查看 \bs 上下方式查看
"-----------------------------------------------------------------
"-----------------------------------------------------------------
" plugin - taglist.vim 查看函数列表,需要ctags程序
" F4 打开隐藏taglist窗口
"-----------------------------------------------------------------
if MySys() == "windows" " 设定windows系统中ctags程序的位置
let Tlist_Ctags_Cmd = '"'.$VIMRUNTIME.'/ctags.exe"'
elseif MySys() == "linux" " 设定windows系统中ctags程序的位置
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
endif
nnoremap <silent><F4> :TlistToggle<CR>
let Tlist_Show_One_File = 1 " 不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 " 如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 " 在右侧窗口中显示taglist窗口
let Tlist_File_Fold_Auto_Close=1 " 自动折叠当前非编辑文件的方法列表
let Tlist_Auto_Open = 0
let Tlist_Auto_Update = 1
let Tlist_Hightlight_Tag_On_BufEnter = 1
let Tlist_Enable_Fold_Column = 0
let Tlist_Process_File_Always = 1
let Tlist_Display_Prototype = 0
let Tlist_Compact_Format = 1
"-----------------------------------------------------------------
" plugin - mark.vim 给各种tags标记不同的颜色,便于观看调式的插件。
" \m mark or unmark the word under (or before) the cursor
" \r manually input a regular expression. 用于搜索.
" \n clear this mark (i.e. the mark under the cursor), or clear all highlighted marks .
" \* 当前MarkWord的下一个 \# 当前MarkWord的上一个
" \/ 所有MarkWords的下一个 \? 所有MarkWords的上一个
"-----------------------------------------------------------------
"-----------------------------------------------------------------
" plugin - NERD_tree.vim 以树状方式浏览系统中的文件和目录
" :ERDtree 打开NERD_tree :NERDtreeClose 关闭NERD_tree
" o 打开关闭文件或者目录 t 在标签页中打开
" T 在后台标签页中打开 ! 执行此文件
" p 到上层目录 P 到根目录
" K 到第一个节点 J 到最后一个节点
" u 打开上层目录 m 显示文件系统菜单(添加、删除、移动操作)
" r 递归刷新当前目录 R 递归刷新当前根目录
"-----------------------------------------------------------------
" F3 NERDTree 切换
map <F3> :NERDTreeToggle<CR>
imap <F3> <ESC>:NERDTreeToggle<CR>
"-----------------------------------------------------------------
" plugin - NERD_commenter.vim 注释代码用的,
" [count],cc 光标以下count行逐行添加注释(7,cc)
" [count],cu 光标以下count行逐行取消注释(7,cu)
" [count],cm 光标以下count行尝试添加块注释(7,cm)
" ,cA 在行尾插入 ,并且进入插入模式。 这个命令方便写注释。
" 注:count参数可选,无则默认为选中行或当前行
"-----------------------------------------------------------------
let NERDSpaceDelims=1 " 让注释符与语句之间留一个空格
let NERDCompactSexyComs=1 " 多行注释时样子更好看
"-----------------------------------------------------------------
" plugin - DoxygenToolkit.vim 由注释生成文档,并且能够快速生成函数标准注释
"-----------------------------------------------------------------
let g:DoxygenToolkit_authorName="Asins - asinsimple AT gmail DOT com"
let g:DoxygenToolkit_briefTag_funcName="yes"
map <leader>da :DoxAuthor<CR>
map <leader>df :Dox<CR>
map <leader>db :DoxBlock<CR>
map <leader>dc a <LEFT><LEFT><LEFT>
"-----------------------------------------------------------------
" plugin – ZenCoding.vim 很酷的插件,HTML代码生成
" 插件最新版:http://github.com/mattn/zencoding-vim
" 常用命令可看:http://nootn.com/blog/Tool/23/
"-----------------------------------------------------------------
"-----------------------------------------------------------------
" plugin – checksyntax.vim JavaScript常见语法错误检查
" 默认快捷方式为 F5
"-----------------------------------------------------------------
let g:checksyntax_auto = 0 " 不自动检查
"-----------------------------------------------------------------
" plugin - NeoComplCache.vim 自动补全插件
"-----------------------------------------------------------------
let g:AutoComplPop_NotEnableAtStartup = 1
let g:NeoComplCache_EnableAtStartup = 1
let g:NeoComplCache_SmartCase = 1
let g:NeoComplCache_TagsAutoUpdate = 1
let g:NeoComplCache_EnableInfo = 1
let g:NeoComplCache_EnableCamelCaseCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
let g:NeoComplCache_EnableSkipCompletion = 1
let g:NeoComplCache_SkipInputTime = '0.5'
let g:NeoComplCache_SnippetsDir = $VIMFILES.'/snippets'
" <TAB> completion.
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" snippets expand key
imap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)
smap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)
"-----------------------------------------------------------------
" plugin - matchit.vim 对%命令进行扩展使得能在嵌套标签和语句之间跳转
" % 正向匹配 g% 反向匹配
" [% 定位块首 ]% 定位块尾
"-----------------------------------------------------------------
"-----------------------------------------------------------------
" plugin - vcscommand.vim 对%命令进行扩展使得能在嵌套标签和语句之间跳转
" SVN/git管理工具
"-----------------------------------------------------------------
"-----------------------------------------------------------------
" plugin – a.vim
"-----------------------------------------------------------------
五:自定义 zsh 提示
-- 自定义 zsh 提示(配置PROMPT或PSlo1)
Apple 宣布在macOS 10.15 Catalina 以后默认shell是zsh。
zsh的默认提示比较复杂:显示[用户名]@[主机名] [当前路径]: %
zhaoxuwen@zhaoxuwendeMacBook-Pro ~ %
大多数情况我们都是单用户在自己本机使用,所以每一行都展示[用户名]@[主机名]是没必要的
我认为们只需要当前路径就足够了。
你或者可以争辩说,当你经常向不同的主机打开多个终端窗口,提示中的主机名很有用。但是提示是由远程shell 及其在远程主机上的配置文件定义的。
~ %
那么我们来看看怎么配置。
-- 基本提示配置
基本zsh提示配置的工作方式类似于bash,只是它使用不同的语法。所以你可能搜到过其他文章讲怎么配置,但是复制过来发现都是乱的,因为那是bash的配置语法。
zsh使用变量PS1来存储默认提示,也可以用变量名PROMPT和prompt代替PS1,后面我都使用PROMPT。
PROMPT写进你的~.zshrc文件中,然后执行source .zshrc它将会在所有zsh shell窗口生效。
export PROMPT='%n@%m %1~ %# '
当我们什么都不配置的时候默认是%n@%m %1~ %#
其中:
%n 是当前用户名
%m 是当前主机名的第一元素
%1~ 是当前目录,不过会自动将用户目录替换为~
%# 我测试发现是zsh的默认提示符号%,当具有超级用户权限时会显示#。
现在我想要的效果怎么配置已经很明显了,只保留%~ %#就可以了
%1~ 替换为%~ 是为了展示完整路径
-- 进阶配置
在提示中添加一点颜色、字体加粗更具有可读性
直接看看我最终配置:'%F{13}%~ %F{50}%B%# %f%b'
%F{color} 是配置颜色,{}中color是256色的颜色值,也可以使用black,red,green,yellow,blue,magenta,cyan和white等常用色。
%f 表示后面恢复默认颜色。
%B 粗体 。
%b 表示后面恢复默认子重。
-- 附录
shell中256配色表
-- Mac -- zsh拓展
六:命令 -- 突出
注:版本比较老的
突出显示命令提示符
-- 查看系统默认方案
echo $PS1
-- 结果
例如结果是:
[\u@\h \W]\$
这里:
\u -- 用户名
\h -- 主机名
\W -- 当前所在目录(小写\w为当前目录的全路径)
在.bash_prodile文件最后添加如下代码:
export PS1="
则可将命令提示符整行变成红色;
或着使用:
export PS1="
将命令提示符背景变成红色。
七:常用命令设置别名
-- shell-别名
在.bash_prodile文件中添加如下代码:
alias ll='ls -l'
alias grep='grep --color'
另外还需要在.bash_prodile文件中添加如下命令,使每次启动终端前都能自动加载.bashrc文件
[[ -s ~/.bashrc ]] && source ~/.bashrc
-- git-别名
为git命令设置别名
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --date=format:'%Y-%m-%d %H:%M:%S' --abbrev-commit"
然而我们可以自定义这些颜色显示。进入~目录,编辑文件.bash_profile, 输入如下内容:
第三行那些fxfxax看起来是不是像天书?实际上是有规律的,一共22个字母,按照先后顺序,先前景色,后背景色,分别对以下的文件类型进行设置:
1. 目录
2. 符号链接
3. 套接字
4. 管道
5. 可执行文件
6. 特殊块文件
7. 特殊字符
8. executable with setuid bit set
9. executable with setgid bit set
10. directory writable to others, with sticky bit
11. directory writable to others, without sticky bit
字母代表的颜色:
a 黑色
b 红色
c 绿色
d 棕色
e 蓝色
f 洋红色
g 青色
h 浅灰色
A 黑色粗体
B 红色粗体
C 绿色粗体
D 棕色粗体
E 蓝色粗体
F 洋红色粗体
G 青色粗体
H 浅灰色粗体
x 系统默认颜色
设置后最终生效如下:
参考:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。