亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Openstack 實現技術分解 (3) 開發工具 — VIM & dotfiles

2019-11-10 18:50:23
字體:
來源:轉載
供稿:網友

目錄

目錄前文列表擴展閱讀前言插件管理 Vundle主題 Solarized瀏覽項目目錄結構 NerdtreeSymbol 窗口 Tagbar文件模糊查詢 CtrlP代碼補全 YouCompleteMe語法檢查 Syntastic通用配置dotfiles

前文列表

Openstack 實現技術分解 (1) 開發環境 — Devstack 部署案例詳解 Openstack 實現技術分解 (2) 虛擬機初始化工具 — Cloud-Init & metadata & userdata

擴展閱讀

跟我一起學習VIM - vim插件合集 很全面的vimrc配置技巧 VIM set 指令

前言

VIM is the God of editors, EMACS is God’s editor, 這是一句非常經典的話, 可以看出 VIM 在 editors 圈的地位. 首先需要聲明的是, 本人不參與任何 IDE 戰爭, IDE 的本質追求是提高開發效率, 能夠稱心如意擼代碼就是你最好的選擇. 但就 Openstack 開發而言, 我仍會極力推薦使用 VIM, 因為絕大多數的 Openstack 線上生產環境是極其嚴酷的, 不會縱容你安裝和使用重量級 IDE.

那么如何能夠快速搭建或者說同步自己的 VIM 編程環境到其他機器上呢? VIM + dotfiles 就是最佳的組合.

在正文之前先放張 VIM 的快捷鍵一覽圖, 大家不妨打印出來貼在自己工位上 : ) 這里寫圖片描述

插件管理 Vundle

Vundle is short for Vim bundle and is a Vim plugin manager. 現在所統計的 VIM 擴展插件多達 4900 多種, 基本上能夠很好的滿足開發者們各種各樣奇葩的要求. 同時, 如何友好的將這些插件應用到自己的開發環境中成為了剛需求. Vundle 就是為此而生的一個 VIM 插件管理工具. 在介紹如何使用 Vundle 之前, 還需要了解一個文件 .vimrc .

.vimrc 是 VIM 的配置文件, 絕對路徑為 ~/.vimrc, 是整個 VIM 的靈魂, 擁有非常強大的自定義能力. Vundle 首先會讀取 .vimrc 中以關鍵字 Plugin 開始的語句, 這條語句的值實際上就是插件項目在 Github 上的名稱, 然后再實現對插件的 安裝/卸載/更新 .

Set up Vundle by manual:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

NOTE: 當然你也可以通過修改 .vimrc 來實現自動安裝 Vundle

Configure Plugins: 這里給出 Vundle 的官方配置樣例

set nocompatible " 關閉兼容 vi 模式, 必須filetype off " 必須" 指定 Vundle 的NOTE: 可以看出在語句 call vundle#begin()call vundle#end() 之間就定義了需要安裝的插件列表.

Install Plugins: 在定義好需要安裝的插件列表之后, 只需要執行下面的指令就可以自動的完成所有插件的安裝.

vim +PluginInstall +qall

當然了, 在安裝這些插件之前, 我們首先需要知道那些插件是做什么用的, 是否適合自己. 下面繼續推薦幾個常用的 VIM 插件, 不妨在之后再進行安裝.

主題 Solarized

這里寫圖片描述

Solarized 具有陰陽(light/dark)兩種風格鮮明的主題和靈活的自定義配色能力, 是最受歡迎的主題插件之一. 安裝它只需要對 .vimrc 進行如下編輯:

Installation:..." 添加 Solarized 主題插件Plugin 'altercation/vim-colors-solarized'..." Solarized 配置" Solarized =================================================syntax enable set background=dark " 使用陰主題 let g:solarized_termcolors=16 let g:solarized_visibility='high' let g:solarized_contrast='high' try colorscheme solarized " 設定配色方案 catch /^Vim/%((/a/+)/)/=:E185/ endtry

NOTE 1: 上文已經提到了, 表示插件的 Plugin 'altercation/vim-colors-solarized' 配置語句必須放在call vundle#begin()call vundle#end() 之間, 下面所有的插件同理, 所以不在贅述. NOTE 2: 這里使用了陰主題 dark, 陽主題的值為 light.

微調你喜歡的 Terminal 配色 這里寫圖片描述

效果: 這里寫圖片描述

瀏覽項目目錄結構 Nerdtree

Nerdtree 提供的項目目錄結構瀏覽功能, 極大的加強了開發者對整個項目目錄結構的辨識和把控.

Installation:...Plugin 'scrooloose/nerdtree'..." NERD Tree =================================================let NERDChristmasTree=0 let NERDTreeWinSize=35 let NERDTreeChDirMode=2 let NERDTreeIgnore=['/~$', '/.pyc$', '/.swp$'] let NERDTreeShowBookmarks=1 let NERDTreeWinPos="left" " Automatically open a NERDTree if no files where specified autocmd vimenter * if !argc() | NERDTree | endif " Close vim if the only window left open is a NERDTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif" Open a NERDTree nmap <F2> :NERDTreeToggle<CR>

NOTE 1: 當關閉最后一個文件界面時會同時退出 Nerd tree, 避免多輸入一個 :q NOTE 2: 設置了快捷鍵 <F2> 來 Open/Close Nerd tree

效果: 這里寫圖片描述

Symbol 窗口 Tagbar

Symbol 窗口列出了當前文件中的 宏/全局變量/函數/類 的信息, 使用光標選擇就能夠跳轉相應源代碼的位置, 非常便捷.

Installation:...Plugin 'majutsushi/tagbar'..." Tagbar =================================================let g:tagbar_width=35 let g:tagbar_autofocus=1 nmap <F3> :TagbarToggle<CR>

NOTE: 這里使用了快捷鍵 <F3> 來 Open/Close Tagbar

安裝 ctags 因各人環境不同, 可能需要手動安裝 ctagssudo apt-get install exuberant-ctags效果 這里寫圖片描述

文件模糊查詢 CtrlP

CtrlP 文件模糊查詢插件, 又一大殺器, 讓你在項目的文件海中自由穿梭.

Installation:...Plugin 'kien/ctrlp.vim'..." Ctrlp =================================================set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.png,*.jpg,*.jpeg,*.gif " Ignore for MacOSX/
linuxlet g:ctrlp_custom_ignore = { / 'dir': '/v[//]/.(git|hg|svn|rvm)$', / 'file': '/v/.(exe|so|dll|zip|tar|tar.gz|pyc)$', / } let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10,results:20' let g:ctrlp_max_height = 30 "let g:ctrlp_user_command = [ " / '.git', 'cd %s && git ls-files . -co --exclude-standard', " / 'find %s -type f' " / ] if executable('ag') " Use Ag over Grep set grepprg=ag/ --nogroup/ --nocolor " Use ag in CtrlP for listing files. let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' " Ag is fast enough that CtrlP doesn't need to cache let g:ctrlp_use_caching = 0 endif let g:ctrlp_working_path_mode=0 let g:ctrlp_match_window_bottom=1 let g:ctrlp_max_height=15 let g:ctrlp_match_window_reversed=0 let g:ctrlp_mruf_max=500 let g:ctrlp_follow_symlinks=1 let g:ctrlp_map = '<leader>p' let g:ctrlp_cmd = 'CtrlP' nmap <leader>f :CtrlPMRU<CR>

NOTE 1: 這里使用了 ag 搜索來代替 find 指令搜索, 更加高效. NOTE 2: 設置了 leader+f 快捷鍵來 Open/Close CtrlP NOTE 3: leader 鍵類似于 Home 鍵, 是組合快捷鍵的基礎, 一般設置為 , 號, 后文會給出該鍵的設置方法.

效果 這里寫圖片描述

代碼補全 YouCompleteMe

代碼補全必備插件.

Installation:...Plugin 'Valloric/YouCompleteMe'..." YouCompleteMe =================================================let g:ycm_autoclose_preview_window_after_completion=1

NOTE 1: 完成補全之后自動關閉預覽窗口

語法檢查 Syntastic

Installation:...Plugin 'scrooloose/syntastic'..." Syntastic =================================================" configure syntastic syntax checking to check on open as well as save let g:syntastic_check_on_open=1 let g:syntastic_html_tidy_ignore_errors=[" proprietary attribute /"ng-"] let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_wq = 0 set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* 官方效果圖 這里寫圖片描述

通用配置

VIM 的通用配置數不勝數, 這里列出常見的一些作為參考.

" General Config =================================================set nocompatible " be iMproved, required filetype off " required set number " 顯示行號 set ruler " 打開狀態欄標尺 set backspace=indent,eol,start " Allow backspace in insert mode set fileencodings=utf-8,gbk " Set encoding of files set history=1000 " Number of things to remember in historyset showcmd " Show incomplete cmds down the bottomset showmode " Show current mode down the bottom set showmatch " 輸入 )/} 時,光標會暫時的回到相匹配的 (/{ set gcr=a:blinkon0 " Disable cursor blink set novisualbell " No sounds set noerrorbells " No noise set autoread " Reload files changed outside vim set laststatus=2 " 顯示狀態欄 set statusline+=%{fugitive#statusline()} " Git Hotness set list listchars=tab:>.,trail:. " Display tabs and trailing spaces visuallyset linebreak " Wrap lines at convenient points set nobackup set nowb set tabstop=4 set shiftwidth=4 set textwidth=80 " Make it obvious where 80 characters ishighlight ColorColumn ctermbg=gray set colorcolumn=80 set numberwidth=4 set fileformat=unix set expandtab set t_Co=256 set list "set ignorecase set incsearch " 輸入搜索內容時就顯示搜索結果 au WinLeave * set nocursorline nocursorcolumn " Highlight current line au WinEnter * set cursorline cursorcolumn set cursorline cursorcolumn " 突出當前行和列 " Persistent Undo set undodir=~/.vim/backups set undofile " Search Options set incsearch " Find the next match as we type the search set hlsearch " 搜索時高亮顯示被找到的文本 set viminfo='100,f1 " Save up to 100 marks, enable capital marks " Indentation set autoindent set smartindent " 開啟新行時使用智能自動縮進 set smarttab set shiftwidth=4 " 設定 << 和 >> 命令移動時的寬度為 4 set softtabstop=4 " 使得按退格鍵時可以一次刪掉 4 個空格 set tabstop=4 " 設定 tab 長度為 4 set expandtab " Folds set foldmethod=indent " Fold based on indent set foldnestmax=3 " Deepest fold is 3 levels set nofoldenable " Dont fold by default " Leader setting let mapleader = "," " Rebind <Leader> key " Syntax Highlight syntax on " Run commands that require an interactive shell nnoremap <Leader>r :RunInInteractiveShell<space>

最終效果 這里寫圖片描述

NOTE: 完整的 .vimrc 文件非常長, 感興趣的小伙伴請移步到 JMilkFan’s Github

dotfiles

dotfiles(點文件) 顧名思義就是文件名前綴帶 . 的文件, 因為這類文件在 Linux 中一般為與系統環境相關的隱藏文件(EG. .vimrc/.bashrc/.profile/.bash_profile), 所以在一定程度上 ditfiles 代表了 Linux 系統環境的個性化配置. 簡而言之就是, 如果在另外一臺計算機中同步了這些 dotfils 就能擁有與你自己的計算機一致的環境設置. 而且 dotfiles + Github 就能夠實現只要有網絡, 那么所有的計算機都能夠變成自己熟悉且習慣的樣子.

工作原理:

收集相關的 “dotfiles”將這些 “dotfiles” 都放置到同一個目錄 dotfiles 中將 dotfiles 目錄上傳到 Github 或者任意網絡存儲設備上在另外一臺計算機上拉下 dotfiles 目錄, 并以軟鏈接的方式將 dotfiles 目錄中對應的 “dotfiles”文件鏈接到系統中相應路徑中

EXAMPLE:

git clone dotfilesjmilkfan@JmilkFan-Devstack:~$ git clone https://github.com/JmilkFan/dotfiles.git建立軟鏈接jmilkfan@JmilkFan-Devstack:~$ ln -s dotfiles/.vimrc ~/.vimrc安裝插件vim +PluginInstall +qall

安裝完之后就能夠愉快的擼代碼了 : )

NOTE: 這里只是一個僅含有 .vimrc 文件的 dotfiles, 實際上會含有更多的文件, 那么就需要使用到 Bash 來為我們快速的建立軟鏈接了.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内外成人免费激情在线视频网站| 久久成人亚洲精品| 北条麻妃一区二区三区中文字幕| 国产精品免费看久久久香蕉| 国产97免费视| 精品美女永久免费视频| 成人观看高清在线观看免费| 狠狠躁夜夜躁人人爽超碰91| 欧美日韩免费在线观看| 欧美噜噜久久久xxx| 国产大片精品免费永久看nba| 日韩欧美在线一区| 九九视频直播综合网| 久久天堂电影网| 国产成人精品在线视频| 97国产精品视频人人做人人爱| 不卡av在线网站| 色噜噜狠狠狠综合曰曰曰88av| 日韩福利视频在线观看| 成人高h视频在线| 精品福利免费观看| 日韩经典中文字幕在线观看| 成年无码av片在线| 亚洲一区二区三| 91成人在线观看国产| 日韩欧美高清在线视频| 国产精品久久视频| 成人av番号网| 国产视频精品久久久| 丝袜一区二区三区| 国产98色在线| 最近2019免费中文字幕视频三| 亚洲伊人第一页| 亚洲久久久久久久久久| 亚洲一区亚洲二区亚洲三区| 成人春色激情网| 亚洲女人天堂色在线7777| 91精品视频专区| 欧美乱大交做爰xxxⅹ性3| 久久精品久久精品亚洲人| 中文字幕av一区中文字幕天堂| 国产在线高清精品| 欧美午夜视频一区二区| 欧美高清激情视频| 国产成人精品久久| 国产成人亚洲综合91| 日韩在线视频国产| 国产亚洲欧洲高清一区| 91亚洲国产成人久久精品网站| 色综合伊人色综合网| 2019精品视频| 成人精品一区二区三区电影黑人| 日韩专区中文字幕| 日韩av在线网页| 日韩欧美在线视频日韩欧美在线视频| 国产日本欧美一区二区三区| 国产一区二区三区在线观看网站| 精品无人国产偷自产在线| 国产精选久久久久久| 俺去亚洲欧洲欧美日韩| 久久综合色影院| 国产在线98福利播放视频| 九色91av视频| 亚洲欧美制服另类日韩| 欧美在线不卡区| 成人免费网站在线观看| 国产视频久久久| 亚洲老头老太hd| 日韩成人激情影院| 国产精品偷伦视频免费观看国产| 亚洲最新av在线网站| 5252色成人免费视频| 国产成人精品国内自产拍免费看| 中日韩午夜理伦电影免费| 91色精品视频在线| 日韩av影院在线观看| 91久久精品国产91性色| 2019精品视频| 亚洲国产小视频| 久久久精品在线观看| 久久99精品视频一区97| 久久成人这里只有精品| 亚洲成人久久电影| 亚洲字幕一区二区| 91大神福利视频在线| 97精品视频在线观看| 中文字幕综合一区| 在线成人中文字幕| 国产精品免费看久久久香蕉| 国产亚洲精品va在线观看| 亚洲91av视频| 亚洲免费福利视频| 亚洲精品欧美日韩| 亚洲人成网站色ww在线| 久久久av电影| 欧美视频第一页| 欧美俄罗斯乱妇| 欧美日韩人人澡狠狠躁视频| 亚洲大胆美女视频| 亚洲精品电影在线观看| 亚洲人成在线免费观看| 欧美国产日韩一区| 国产精品爱啪在线线免费观看| 久久在精品线影院精品国产| 欧美另类交人妖| 8090成年在线看片午夜| 热门国产精品亚洲第一区在线| 亚洲精选一区二区| 国产不卡视频在线| 国产区亚洲区欧美区| 国产丝袜精品视频| 久久久久久久久久国产精品| 一本一本久久a久久精品综合小说| 亚洲第一级黄色片| 久久男人av资源网站| 另类图片亚洲另类| 亚洲电影免费观看高清完整版| 欧美日韩999| 狠狠色狠狠色综合日日小说| 亚洲最新视频在线| 国产主播欧美精品| 日韩视频免费中文字幕| 欧美精品在线免费播放| 国产精品日韩欧美综合| 国产精品久久久久久av福利| 91极品女神在线| 久久久久久久色| 日韩美女免费观看| 久久成人精品视频| 国产精品一区二区三区毛片淫片| 精品国产成人在线| 亚洲国产日韩欧美在线图片| 国产精品女视频| 国产综合久久久久| 久久久久久国产精品三级玉女聊斋| 欧美日韩日本国产| 亚洲国产91精品在线观看| 亚洲人成电影网站色www| 91精品国产色综合久久不卡98| 高清在线视频日韩欧美| 亚洲国产精品成人一区二区| 一区二区在线视频播放| 美女福利精品视频| 免费av一区二区| 精品成人国产在线观看男人呻吟| 国产精品白丝av嫩草影院| 国产午夜精品免费一区二区三区| 日韩男女性生活视频| 国产欧美精品va在线观看| 红桃视频成人在线观看| 亚洲美女av电影| 国产精品一区二区电影| 久久久成人精品视频| 亚洲精品一区在线观看香蕉| 欧美午夜影院在线视频| 一区二区三区在线播放欧美| 亲子乱一区二区三区电影| 亚洲激情自拍图| 国产精品视频公开费视频| 欧美性高潮在线| 成人国产亚洲精品a区天堂华泰| 性色av一区二区三区免费| 在线播放日韩av| 日韩精品视频免费在线观看|