您现在的位置: 主页 > 嵌入式操作系统 > Linux > 打造自己的 Python 编码环境
本文所属标签:
为本文创立个标签吧:

打造自己的 Python 编码环境

来源:net 网络用户发布,如有版权联系网管删除 2018-07-14 

前言

重新配置了一下自己的Mac的编程环境,毕竟新年新气象嘛,主要是iTerm2、Zsh、Vim优化、Consolas字体、NoisyTyper,这些的相关配置。工欲利其事必先利其器,好的编码环境可以提升我们的打码的幸福感。好的编码环境包括美观(视觉),声音(听觉),流畅度(触觉),工作环境(嗅觉,味觉)等多个方面。后面有几张配置后的图片感受一下,主要看字体和配色(有些人可能觉得比较丑,个人喜欢黑紫,配色和字体有很多选择,各有所好,求别喷 XD)

此处输入图片的描述

此处输入图片的描述

准备阶段:器

iTerm2:是os系统中的一个替代终端。主要优点:屏幕分割(可以水平分割和垂直分割),选中即复制,快速查找(command+f),配色字体自定义化,自定义快捷键等。

Consolas:微软下最好看的字体之一,个人认为很适合程序员,除开字体好看外,主要原因是它的数字“0”字加入了一斜撇,以方便与字母“o”分辨。这也是我和它结缘的主要缘由,当年在某次acm比赛中,就是因为肉眼无法分辨是0还是o,遗憾至今。

Zsh:zsh和bash一样是Shell的一种。相比bash:更高效、更好的自动补全、更好的文件名展开(通配符展开)、更好的数组处理、可定制性高。mac下自带了zsh,无需再安装。

Vim:是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。和Emacs并列成为类Unix系统用户最喜欢的编辑器。估计大家都很熟悉,不做累述。

NoisyTyper:一款提升你打字逼格的软件,可以让你打字的时候发出打字机的声音,咔咔咔这样。

上面几个安装都比较简单,教程也比较多。这里主要讲一下mac下consolas字体的安装。

$ brew install cabextract

$ cd~/Downloads

$ mkdir consolas

$ cd consolas

$ curl -O http://download.microsoft.com/download/f/5/a/f5a3df76-d856-4a61-a6bd-722f52a5be26/PowerPointViewer.exe

$ cabextract PowerPointViewer.exe

$ cabextract ppviewer.cab

$ open CONSOLA*.TTF

最后按下弹出窗口的安装键就ok了。

打磨阶段:利器

上面的工具准备好了后,就可以开始配置这些工具了。

Zsh配置

oh-my-zsh:一套强大的开源zsh配置文件。安装如下:

// 使用curl安装

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

// 或者使用wget安装

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

// 安装后重新载入配置

$ source .zshrc

oh-my-zsh主题: oh-my-zsh有多款配套主题,点击前面的主题链接可以看到所有主题。这里主要介绍下agnoster主题。修改zsh配置文件(~/.zshrc)中的主题属性为agnoster即可。官方图如下:

此处输入图片的描述

安装这个主题需要额外安装powerline字体,不然会显示乱码。如果你想隐藏自己的用户名信息,需要在zsh配置文件中设置默认用户。具体安装配置如下:

// 修改zsh配置文件

$ vim~/.zshrc

ZSH_THEME="agnoster"//在.zshrc中修改ZSH_THEME

DEFAULT_USER=username // 在.zshrc中添加或者修改默认用户为自己,开启终端后就不会显示自己的用户名信息

$ source ~/.zshrc //重新载入配置文件

// poweline font 安装

$ gitclone https://github.com/powerline/fonts.git

$ cd powerline

$ ./install.sh

iTerm2配置

字体:接着要在iterm2的Perferences中Text中选择常规字体 为consolas字体或者其他你喜欢的字体,非ASCII码字体为powerline字体(一定要是名字中带powerline的字体,不然还是乱码)。如下:

此处输入图片的描述

iTerm2配色:从这里可以获取很多别人的配色主题,把整个项目git clone下来,然后在iterm2的Perferences中的Colors最下面的Load Presets中import git下来的terminal文件,自己可以根据自己喜欢调整自己喜欢的颜色,我选的是Fish Tank,我自己微调了一些配色。如下:

此处输入图片的描述

Vim配置

之前一直用spf13,但是打开大文件太卡了,所以自己重新配置了一份。实测打开8000+行代码的文件,因为语法检测,所以大概延时1s左右,之后操作很顺畅。在配置过程中会遇到很多蛋疼的地方。需要比较系统的学习一下vim脚本的语法和相关配置方法,vim网上很多配置好文,如《像 IDE 一样使用 vim》,还有《vim 脚本学习文档》,我就不累述了,配置文件的注释写的比较详细。我的配置主要针对python开发,另外需要额外安装python包flake8。

更多Vim相关教程见以下内容

具体如下:

vimrc文件,主要是vim基础配置。(highlight.js不支持vim script,有点蛋疼)

" .vimrc

"相关vim脚本文档 http://vimdoc.sourceforge.net

" 相关好文 https://github.com/yangyangwithgnu/use_vim_as_ide

"基本配置

set nocompatible "不要vim模仿vi模式,建议设置,否则会有很多不兼容的问题

set mouse=a "启动鼠标所有模式,但是右键功能不可用,可以保证鼠标滚屏在当前屏幕内

set mousehide " 输入文件时隐藏鼠标

set backspace=indent,eol,start "退格键分别可删除缩进,上一行结束,insert之前的字

set showmatch " 设置匹配模式

set nobackup "不备份

set nowritebackup " 不写入备份文件

set noswapfile "关闭交换文件

set history=500" history存储长

set ruler "显示标尺

set showcmd " 显示输入命令

set incsearch "搜索时自动匹配

set hlsearch " 高亮搜索项

set ignorecase "无视大小写

set smartcase " 如果有大写就区别大小写匹配

set laststatus=2 "总是显示状态栏

" set autowrite "切换文件自动保存

set shortmess=atI" "关闭欢迎页面

set viewoptions=folds,options,cursor,unix,slash " Better Unix / Windows compatibility

set virtualedit=onemore "光标可以移到当行最后一个字符之后

set hidden " 切换文件不保存,隐藏

"set confirm " 退出前验证

"set spell " 拼写检查

set linespace=0 "行之间没有多余的空格

set wildmenu " 自动补全时的文件菜单

set wildmode=list:longest,full "自动补全时,匹配最长子串,列出文件

set whichwrap=b,s,h,l,<,>,[,]" 行尾可右移到下行,行首左移到上行,b:退格,s:空格,hl:左右,<>:n/v模式下的左右,[]:i/r模式下的左右

set scrolljump=5 "光标离开屏幕范围

set scrolloff=3" 光标移动至少保留行数

"格式

set nowrap " 取消自动折行

set autoindent "自动缩进

set shiftwidth=4" 缩进位宽=4个空格位

set expandtab " tab由空格表示

set tabstop=4" tab=4空格

set softtabstop=4 "回退可以删除缩进

set nojoinspaces "用J合并两行用一个空格隔开

set splitright "用vsplit新建窗口,让新的放右边

set splitbelow "用split新建窗口,让新的放下面

set pastetoggle= "指定F12进入黏贴模式,可以正常复制缩进

set iskeyword-=."让'.' 作为单词分割符

set iskeyword-=# "让'#'作为单词分割符

set iskeyword-=-"让'-' 作为单词分割符

set listchars=tab: ,trail: ,extends:#,nbsp:. "空格等无效字符显示

set textwidth=80" 内容宽度

set fileencodings=utf-8,gb18030,gbk,big5 "文件编码

" 文件保存时处理首尾空格,^M字符

let g:keep_trailing_whitespace = 1

function! StripTrailingWhitespace()

let _s=@/

let l = line(".")

let c = col(".")

%s/s+$//e

let @/=_s

call cursor(l, c)

endfunction

autocmd FileType c,cpp,java,go,php,javascript,python,twig,xml,yml autocmd BufWritePre if exists('g:keep_trailing_whitespace') | call StripTrailingWhitespace() | endif

"开启新的buffer时,自动转到对应文件目录

let g:autochdir =1

if exists('g:autochdir')

autocmd BufEnter*if bufname("")!~"^[A-Za-z0-9]*://"| lcd %:p:h | endif

endif

" 恢复光标最后编辑位置

au BufWinLeave *.py,*.c,*.cpp,*.css,*.html,*.js,*php mkview

au BufWinEnter *.py,*.c,*.cpp,*.css,*.html,*.js,*php silent loadview

"设置u的返回步数限制

if has('persistent_undo')

set undofile " 开启u回滚文件记录

set undolevels=1000 "最大数量的改变回滚

set undoreload=10000" 最大数量重载可回滚行数

endif

"特殊文件打开

autocmd BufNewFile,BufRead*.py,*.pyw set filetype=python

autocmd BufNewFile,BufRead*.html.twig set filetype=html.twig

autocmd FileType haskell setlocal expandtab shiftwidth=2 softtabstop=2

autocmd BufNewFile,BufRead*.coffee set filetype=coffee

autocmd FileType haskell setlocal commentstring=-- %s

autocmd FileType haskell setlocal nospell

" key 映射

let mapleader = ',' "全局leader设置

let maplocalleader ='_'" 本地leader设置

"设置tag和window间快速跳转

let g:easyWindows =1

if exists('g:easyWindows')

" 向上

map j_

"向下

map k_

" 向右

map l_

"向左

map h_

endif

" 处理折叠行的左右移动

noremap j gj

noremap k gk

"没sudo却想保存

cmap w!!w!sudotee%>/dev/null

" ,fc查找冲突的地方

map fc /v^[<|=>]{7}( .*|$)

",ff 查找光标后的单词位置,列出选择项

nmapff [I:let nr = input("Which one: ")exe "normal ". nr ."[t"

" 屏幕左移和右移

map zl zL

map zh zH

"映射vsp这些开启新的buffer,默认目录为当前目录

cnoremap %%=fnameescape(expand('%:h')).'/'

map ew :e %%

map es :sp %%

map ev :vsp %%

map et :tabe %%

" 黏贴板

if has('clipboard')

if has('unnamedplus')

set clipboard=unnamedplus

else

set clipboard=unnamed

endif

endif

"字体的设置

set guifont=Consolas,Bitstream_Vera_Sans_Mono:h9:cANSI " 设置gui字体

set gfw=幼圆:h10:cGB2312

"语法高亮

syntax on

" 导入vim插件管理文件

if filereadable(expand("~/.vimrc.bundles"))

source ~/.vimrc.bundles

endif

"缩进和md文件

filetype plugin indent on " 自动根据类型启动对应插件,缩进开启

"设置主题,UI

" solarized 主题

set background=dark

if filereadable(expand("~/.vim/bundle/vim-colors-solarized/colors/solarized.vim"))

let g:solarized_termcolors=256

let g:solarized_termtrans=1

let g:solarized_contrast="normal"

let g:solarized_visibility="normal"

color solarized "Load a colorscheme

endif

set cursorline " 选中行高亮

autocmd BufEnter *.py set cc=81 "打开py文件81行高亮

" 之前的高亮线太难看,重新制定颜色,这里的black和iterm2颜色配置中的black一样

hi CursorLine cterm=NONE ctermbg=black guibg=black

hi CursorColumn cterm=NONE ctermbg=black guibg=black "

highlight ColorColumn ctermbg=black guibg=black

set number " 设置行号

hi LineNr ctermbg=black

"IndentGuides缩进列对齐线

let g:indent_guides_start_level =2

let g:indent_guides_guide_size =1

let g:indent_guides_enable_on_vim_startup =1

" airline 就是状态栏的箭头

let g:airline_theme="dark"

let g:airline_powerline_fonts = 1

let g:airline#extensions#tabline#enabled = 1

let g:airline#extensions#tabline#buffer_nr_show = 1

"NerdTree配置 control+e打开当前文件目录树

map :NERDTreeToggle

map ee :NERDTreeToggle

nmapnt :NERDTreeFind

let NERDTreeShowBookmarks=1

let NERDTreeIgnore=['.pyc','~$','.swo$','.swp$','.git','.hg','.svn','.bzr']

let NERDTreeChDirMode=0

let NERDTreeQuitOnOpen=1

let NERDTreeMouseMode=2

let NERDTreeShowHidden=1

let NERDTreeKeepTreeInNewTab=1

let g:nerdtree_tabs_open_on_gui_startup=0

" syntastic 配置

"设置每次w保存后语法检查

function!ToggleErrors()

Errors

endfunction

let g:syntastic_check_on_open=1

let g:syntastic_always_populate_loc_list =1

let g:syntastic_auto_loc_list =1

let g:syntastic_check_on_wq =0

let syntastic_loc_list_height =5

let g:syntastic_html_tidy_ignore_errors=[" proprietary attribute "ng-"]

autocmd WinEnter*if&buftype ==#'quickfix'&& winnr('$')==1| quit |endif

autocmd WinLeave* lclose

" 自动补全tab触发

function! InsertTabWrapper()

let col = col('.') - 1

if !col || getline('.')[col - 1] !~ 'k'

return ""

else

return ""

endif

endfunction

inoremap =InsertTabWrapper()

inoremap

"Ctrlp和Ctrlp-funky(,fu)

if isdirectory(expand("~/.vim/bundle/ctrlp.vim/"))

let g:ctrlp_working_path_mode ='ra'

nnoremap :CtrlP

nnoremap :CtrlPMRU

let g:ctrlp_custom_ignore ={

'dir':'.git$|.hg$|.svn$',

'file':'.exe$|.so$|.dll$|.pyc$'}

if executable('ag')

let s:ctrlp_fallback ='ag %s --nocolor -l -g ""'

elseif executable('ack-grep')

let s:ctrlp_fallback ='ack-grep %s --nocolor -f'

elseif executable('ack')

let s:ctrlp_fallback ='ack %s --nocolor -f'

" On Windows use "dir" as fallback command.

else

let s:ctrlp_fallback = 'find %s -type f'

endif

if exists("g:ctrlp_user_command")

unlet g:ctrlp_user_command

endif

let g:ctrlp_user_command = {

'types': {

1: ['.git', 'cd %s && git ls-files . --cached --exclude-standard --others'],

2: ['.hg', 'hg --cwd %s locate -I .'],

},

'fallback': s:ctrlp_fallback

}

if isdirectory(expand("~/.vim/bundle/ctrlp-funky/"))

"CtrlP extensions

let g:ctrlp_extensions =['funky']

"funky

nnoremap fu :CtrlPFunky

endif

endif

" complete

autocmd Filetype*if&omnifunc ==""| setlocal omnifunc=syntaxcomplete#Complete| endif

autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS

autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags

autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS

autocmd FileType python setlocal omnifunc=pythoncomplete#Complete

"添加或更新头

map :call TitleDet()'s

autocmd BufNewFile *.py :call TitleDet()

function AddTitle()

call append(0,"#! /usr/bin/env python")

call append(1,"# -*- coding: utf-8 -*-")

call append(2,"# vim:fenc=utf-8 ")

call append(3,"# Copyright XYM")

call append(4,"# Last modified: ".strftime("%Y-%m-%d %H:%M:%S"))

call append(5,"")

endf

"更新最近修改时间和文件名

function UpdateTitle()

normal m'

execute '/# *Last modified:/s@:.*$@=strftime(":t%Y-%m-%d %H:%M")@'

normal ''

normal mk

execute '/# *Filename:/s@:.*$@=":tt".expand("%:t")@'

execute "noh"

normal 'k

endfunction

"判断前10行代码里面,是否有Last modified这个单词,

"如果没有的话,代表没有添加过作者信息,需要新添加;

"如果有的话,那么只需要更新即可

function TitleDet()

let n=1

"默认为添加

while n < 10

let line = getline(n)

if line =~ '^#s*S*Lastsmodified:S*.*$'

call UpdateTitle()

return

endif

let n = n + 1

endwhile

call AddTitle()

endfunction

vimrc.bundles文件,主要是vim相关插件

" .vimrc.bundles

if &compatible

set nocompatible

end

filetype off

set rtp+=~/.vim/bundle/vundle

call vundle#rc()

Bundle "gmarik/vundle"

"星级越多越推荐,5星为必选,4星强烈推荐,3星比较推荐

" 文件模糊匹配查找 推荐:****

Bundle "kien/ctrlp.vim"

"函数模糊匹配查找(,fu)推荐:****

Bundle'tacahiroy/ctrlp-funky'

" 文件索引树 推荐:*****

Bundle "scrooloose/nerdtree"

"自动注释推荐:*****

Bundle'scrooloose/nerdcommenter'

" 语法检查 推荐:****

Bundle "scrooloose/syntastic"

"括号自动匹配推荐:****

Bundle'jiangmiao/auto-pairs'

" 光标多行编辑 推荐:****

Bundle 'terryma/vim-multiple-cursors'

"配色主题推荐:****

Bundle"altercation/vim-colors-solarized"

" 缩进引导线 推荐:****

Bundle "nathanaelkane/vim-indent-guides"

"状态栏效果推荐:***

Bundle"bling/vim-airline"

" python 推荐:****

Bundle 'yssource/python.vim'

Bundle 'python_match.vim'

Bundle 'pythoncomplete'

" js 推荐:****

Bundle'elzr/vim-json'

Bundle'groenewege/vim-less'

Bundle'pangloss/vim-javascript'

Bundle'briancollins/vim-jst'

Bundle'kchmck/vim-coffee-script'

" html 推荐:****

Bundle 'amirh/HTML-AutoCloseTag'

Bundle 'hail2u/vim-css3-syntax'

Bundle 'gorodinskiy/vim-coloresque'

Bundle 'tpope/vim-haml'

Bundle 'mattn/emmet-vim'

if filereadable(expand("~/.vimrc.bundles.local"))

source ~/.vimrc.bundles.local

endif

filetype on

总结

一个好的程序员必须善用各种工具提升自己的开发效率,和提升自己的幸福指数。另外,个人觉得vim还是值得自己重新一配的,我的配置过程基本都是在读spf13的配置,读懂,然后选取,可是中间还是出了很多问题,比如因为我没有用pymode插件,所以在用括syntastic的local_list在退出或者分屏时的位置,都令我很蛋疼。而且在读spf13配置时,会发现有很多很好的功能都没有用上,比如paste模式,查找冲突快捷键,屏幕移动,还有ctrlp-funky,vim-multiple-cursors这些很爽的插件。大家有好的配置可以推荐给我。

下面关于Python的文章您也可能喜欢,不妨看看:

Ubuntu 14.04 下安装使用Python rq模块 http://www.linuxidc.com/Linux/2015-08/122441.htm

无需操作系统直接运行 Python 代码 http://www.linuxidc.com/Linux/2015-05/117357.htm

《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htm

在Ubuntu下用Python搭建桌面算法交易研究环境 http://www.linuxidc.com/Linux/2013-11/92534.htm



              查看评论 回复



嵌入式交流网主页 > 嵌入式操作系统 > Linux > 打造自己的 Python 编码环境
 文件 配置 推荐

"打造自己的 Python 编码环境"的相关文章

网站地图

围观()