国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Openstack 實(shí)現(xiàn)技術(shù)分解 (3) 開(kāi)發(fā)工具 — VIM & dotfiles

2019-11-10 16:48:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

目錄

目錄前文列表擴(kuò)展閱讀前言插件管理 Vundle主題 Solarized瀏覽項(xiàng)目目錄結(jié)構(gòu) NerdtreeSymbol 窗口 Tagbar文件模糊查詢(xún) CtrlP代碼補(bǔ)全 YouCompleteMe語(yǔ)法檢查 Syntastic通用配置dotfiles

前文列表

Openstack 實(shí)現(xiàn)技術(shù)分解 (1) 開(kāi)發(fā)環(huán)境 — Devstack 部署案例詳解 Openstack 實(shí)現(xiàn)技術(shù)分解 (2) 虛擬機(jī)初始化工具 — Cloud-Init & metadata & userdata

擴(kuò)展閱讀

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

前言

VIM is the God of editors, EMACS is God’s editor, 這是一句非常經(jīng)典的話, 可以看出 VIM 在 editors 圈的地位. 首先需要聲明的是, 本人不參與任何 IDE 戰(zhàn)爭(zhēng), IDE 的本質(zhì)追求是提高開(kāi)發(fā)效率, 能夠稱(chēng)心如意擼代碼就是你最好的選擇. 但就 Openstack 開(kāi)發(fā)而言, 我仍會(huì)極力推薦使用 VIM, 因?yàn)榻^大多數(shù)的 Openstack 線上生產(chǎn)環(huán)境是極其嚴(yán)酷的, 不會(huì)縱容你安裝和使用重量級(jí) IDE.

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

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

插件管理 Vundle

Vundle is short for Vim bundle and is a Vim plugin manager. 現(xiàn)在所統(tǒng)計(jì)的 VIM 擴(kuò)展插件多達(dá) 4900 多種, 基本上能夠很好的滿足開(kāi)發(fā)者們各種各樣奇葩的要求. 同時(shí), 如何友好的將這些插件應(yīng)用到自己的開(kāi)發(fā)環(huán)境中成為了剛需求. Vundle 就是為此而生的一個(gè) VIM 插件管理工具. 在介紹如何使用 Vundle 之前, 還需要了解一個(gè)文件 .vimrc .

.vimrc 是 VIM 的配置文件, 絕對(duì)路徑為 ~/.vimrc, 是整個(gè) VIM 的靈魂, 擁有非常強(qiáng)大的自定義能力. Vundle 首先會(huì)讀取 .vimrc 中以關(guān)鍵字 Plugin 開(kāi)始的語(yǔ)句, 這條語(yǔ)句的值實(shí)際上就是插件項(xiàng)目在 Github 上的名稱(chēng), 然后再實(shí)現(xiàn)對(duì)插件的 安裝/卸載/更新 .

Set up Vundle by manual:

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

NOTE: 當(dāng)然你也可以通過(guò)修改 .vimrc 來(lái)實(shí)現(xiàn)自動(dòng)安裝 Vundle

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

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

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

vim +PluginInstall +qall

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

主題 Solarized

這里寫(xiě)圖片描述

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

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 " 設(shè)定配色方案 catch /^Vim/%((/a/+)/)/=:E185/ endtry

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

微調(diào)你喜歡的 Terminal 配色 這里寫(xiě)圖片描述

效果: 這里寫(xiě)圖片描述

瀏覽項(xiàng)目目錄結(jié)構(gòu) Nerdtree

Nerdtree 提供的項(xiàng)目目錄結(jié)構(gòu)瀏覽功能, 極大的加強(qiáng)了開(kāi)發(fā)者對(duì)整個(gè)項(xiàng)目目錄結(jié)構(gòu)的辨識(shí)和把控.

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: 當(dāng)關(guān)閉最后一個(gè)文件界面時(shí)會(huì)同時(shí)退出 Nerd tree, 避免多輸入一個(gè) :q NOTE 2: 設(shè)置了快捷鍵 <F2> 來(lái) Open/Close Nerd tree

效果: 這里寫(xiě)圖片描述

Symbol 窗口 Tagbar

Symbol 窗口列出了當(dāng)前文件中的 宏/全局變量/函數(shù)/類(lèi) 的信息, 使用光標(biāo)選擇就能夠跳轉(zhuǎn)相應(yīng)源代碼的位置, 非常便捷.

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

NOTE: 這里使用了快捷鍵 <F3> 來(lái) Open/Close Tagbar

安裝 ctags 因各人環(huán)境不同, 可能需要手動(dòng)安裝 ctagssudo apt-get install exuberant-ctags效果 這里寫(xiě)圖片描述

文件模糊查詢(xún) CtrlP

CtrlP 文件模糊查詢(xún)插件, 又一大殺器, 讓你在項(xiàng)目的文件海中自由穿梭.

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 搜索來(lái)代替 find 指令搜索, 更加高效. NOTE 2: 設(shè)置了 leader+f 快捷鍵來(lái) Open/Close CtrlP NOTE 3: leader 鍵類(lèi)似于 Home 鍵, 是組合快捷鍵的基礎(chǔ), 一般設(shè)置為 , 號(hào), 后文會(huì)給出該鍵的設(shè)置方法.

效果 這里寫(xiě)圖片描述

代碼補(bǔ)全 YouCompleteMe

代碼補(bǔ)全必備插件.

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

NOTE 1: 完成補(bǔ)全之后自動(dòng)關(guān)閉預(yù)覽窗口

語(yǔ)法檢查 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+=%* 官方效果圖 這里寫(xiě)圖片描述

通用配置

VIM 的通用配置數(shù)不勝數(shù), 這里列出常見(jiàn)的一些作為參考.

" General Config =================================================set nocompatible " be iMproved, required filetype off " required set number " 顯示行號(hào) set ruler " 打開(kāi)狀態(tài)欄標(biāo)尺 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 " 輸入 )/} 時(shí),光標(biāo)會(huì)暫時(shí)的回到相匹配的 (/{ 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 " 顯示狀態(tài)欄 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 " 輸入搜索內(nèi)容時(shí)就顯示搜索結(jié)果 au WinLeave * set nocursorline nocursorcolumn " Highlight current line au WinEnter * set cursorline cursorcolumn set cursorline cursorcolumn " 突出當(dāng)前行和列 " Persistent Undo set undodir=~/.vim/backups set undofile " Search Options set incsearch " Find the next match as we type the search set hlsearch " 搜索時(shí)高亮顯示被找到的文本 set viminfo='100,f1 " Save up to 100 marks, enable capital marks " Indentation set autoindent set smartindent " 開(kāi)啟新行時(shí)使用智能自動(dòng)縮進(jìn) set smarttab set shiftwidth=4 " 設(shè)定 << 和 >> 命令移動(dòng)時(shí)的寬度為 4 set softtabstop=4 " 使得按退格鍵時(shí)可以一次刪掉 4 個(gè)空格 set tabstop=4 " 設(shè)定 tab 長(zhǎng)度為 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>

最終效果 這里寫(xiě)圖片描述

NOTE: 完整的 .vimrc 文件非常長(zhǎng), 感興趣的小伙伴請(qǐng)移步到 JMilkFan’s Github

dotfiles

dotfiles(點(diǎn)文件) 顧名思義就是文件名前綴帶 . 的文件, 因?yàn)檫@類(lèi)文件在 Linux 中一般為與系統(tǒng)環(huán)境相關(guān)的隱藏文件(EG. .vimrc/.bashrc/.profile/.bash_profile), 所以在一定程度上 ditfiles 代表了 Linux 系統(tǒng)環(huán)境的個(gè)性化配置. 簡(jiǎn)而言之就是, 如果在另外一臺(tái)計(jì)算機(jī)中同步了這些 dotfils 就能擁有與你自己的計(jì)算機(jī)一致的環(huán)境設(shè)置. 而且 dotfiles + Github 就能夠?qū)崿F(xiàn)只要有網(wǎng)絡(luò), 那么所有的計(jì)算機(jī)都能夠變成自己熟悉且習(xí)慣的樣子.

工作原理:

收集相關(guān)的 “dotfiles”將這些 “dotfiles” 都放置到同一個(gè)目錄 dotfiles 中將 dotfiles 目錄上傳到 Github 或者任意網(wǎng)絡(luò)存儲(chǔ)設(shè)備上在另外一臺(tái)計(jì)算機(jī)上拉下 dotfiles 目錄, 并以軟鏈接的方式將 dotfiles 目錄中對(duì)應(yīng)的 “dotfiles”文件鏈接到系統(tǒng)中相應(yīng)路徑中

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: 這里只是一個(gè)僅含有 .vimrc 文件的 dotfiles, 實(shí)際上會(huì)含有更多的文件, 那么就需要使用到 Bash 來(lái)為我們快速的建立軟鏈接了.


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巍山| 手游| 安多县| 工布江达县| 潜江市| 合作市| 定远县| 阳曲县| 博客| 六安市| 定州市| 小金县| 凤台县| 丹巴县| 塔城市| 濉溪县| 五莲县| 长顺县| 宜兰县| 徐闻县| 资阳市| 大城县| 临海市| 惠来县| 广西| 乐亭县| 新和县| 龙井市| 常州市| 阜城县| 乐昌市| 哈尔滨市| 伊宁市| 锡林郭勒盟| 渭源县| 洛阳市| 凭祥市| 衡东县| 斗六市| 凌云县| 北京市|