天天看點

【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE

傳說中的Vim一直有着不可磨滅的神話, 為了追求效率, 嵌入式開發應該轉入LInux下, 首先當然是學會使用強大的Vim了~

1. vi與vim

2. vim使用

在開始學習vim使用之前,先了解一下vim的三種工作模式:

  • 指令模式

    vim預設打開就處于指令模式,在此模式之下可以簡單粗暴的使用vim快捷鍵操作文本,比如光标移動,文本複制、移動、粘貼、選擇、替換等等;

  • 插入模式

    在指令模式下按

    i

    進入插入模式,可以和正常編輯器一樣輸入文本;
  • 末行模式

    在指令模式下輸入

    :

    進入末行模式,在此模式下可以使用vim指令;

在末行模式和插入模式下,使用

ESC

退回到指令模式。

vim給我們提供了一個很好的30min教程, 在終端中輸入

vimtutor

進入教程, 這個教程囊括了幾乎常用所有的vim操作,認真的跟完這個教程自然就會了~

【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE

vim之是以強大,不僅僅因為它有效的工作模式和操作指令,更因為萬千網友為它提供的各種插件,讓它綻放光彩。

3. vim基本啟動配置

vim中很多特性預設都不開啟(比如顯示行号),但是這些設定可以在末行模式裡用

set nu

指令開啟,不友善,是以vim提供了一個很友善的方法——建立啟動腳本檔案

vimrc

,如果這個配置對于目前使用者使用,可以使用

vim ~/.vimrc

建立,然後在其中添加在vim啟動前需要執行的指令即可,也就是需要的vim設定。

這裡是我的一些配置,可以參考:

"author@ mculover666

"bash option
"--------------------------
"開啟顯示行号
set nu
"設定F1顯示/不顯示行号

"不與vi相容
set nocompatible     
"打開文法高亮
syntax on
"底部顯示目前模式
set showmode
"指令模式下顯示輸入指令
set showcmd
"支援使用滑鼠
set mouse=a
"256色顯示
set t_Co=256
"使用utf-8編碼
set encoding=utf-8
"開啟檔案類型檢查,并載入對應縮進規則
filetype indent on
"光标目前所在行高亮
set cursorline
"自動高亮另一個比對的括号
set showmatch
"輸入搜尋模式時,每輸入一個字元,就自動跳到第一個比對的結果
set incsearch
"根據編輯檔案自動切換工作目錄
set autochdir
"開啟檔案監視,外部改變後提示
set autoread
"搜尋時,高亮顯示比對結果
set hlsearch
"回車後,下一行的縮進和上一行一樣
set autoindent
"tab縮進值為4
set tabstop=4
"所有tab縮進值
set shiftwidth=4
"防止不同編譯器tab值不同,将tab自動轉為空格
set expandtab
"tab轉為多少個空格
set softtabstop=4

"bash option end
"--------------------------
           
【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE

4. vim插件配置

4.1.準備工作

  • vim版本 > 7.4
  • 安裝了

    git

4.2.vim插件管理器Vundle

vundle是vim的一個插件器,可以在配置檔案vimrc中直接管理插件,友善實用~

  1. 使用git從github上下載下傳vundle,放到vim的bundle路徑下:
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
           
  1. ~/.vimrc

    中添加配置:
"vundle options
"-------------------------------------        
"關閉檔案類型檢查
filetype off    
"啟用自動補全
filetype plugin indent on   
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
call vundle#end()            
"vundle option end
"--------------------------------------
           
  1. 運作vim,在末行模式下輸入即可
PluginInstall
           
  1. vundle安裝成功,安裝插件時隻需要在配置檔案

    vimrc

    中添加

    Plugin <插件名>

    ,然後運作

    PluginInstall

    即可安裝插件。

4.3.目錄樹插件 —— NERDTree

在vundle的配置中增加一行:

Plugin 'scrooloose/nerdtree'
           
【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE

然後打開vim,在末行模式輸入"PluginInstall"即可安裝~安裝成功後對nerdtree插件進行一些配置,便于更好的使用:

" NERDTree config
" open a NERDTree automatically when vim starts up
"autocmd vimenter * NERDTree
"open a NERDTree automatically when vim starts up if no files were specified
"autocmd StdinReadPre * let s:std_in=1
"autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
"open NERDTree automatically when vim starts up on opening a directory
"autocmd StdinReadPre * let s:std_in=1
"autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe'NERDTree' argv()[0] | wincmd p | ene | endif
"map F2 to open NERDTree
map <F2> :NERDTreeToggle<CR>
"close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
           

4.4.自動提示插件 —— YouCompleteMe

4.4.1.準備工作

  1. 查詢vim版本

    在vim的末行模式輸入

    :version

    【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE
  • 主版本需要大于7.4
  • 主機闆本如果等于7.4,

    Include patches

    的最後一個數字需要為1578或更高
  1. 查詢vim支援的python版本
  • 輸入

    echo has('python')

    ,如果輸出為1,後面使用python2版本
  • echo has('python3')

    ,如果輸出為1,後面使用python3版本

這裡我使用的是python3~

4.4.2.在vundle中安裝YouCompleteMe

和安裝别的插件一樣,在

~/.vimrc

中添加如下一行:

Plugin 'Valloric/YouCompleteMe'
           
【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE

然後同樣的打開vim,這個插件下載下傳時間比較久(2h),需要耐心等待。等待YouCompleteMe安裝完成之後,開始安裝Clang+LLVM~

4.4.3.安裝Clang+LLVM

  1. 首先去LLVM官網,我們使用添加軟體源線上安裝的方法,點選左側邊欄中最新版本下載下傳連結中的APT Packages(最低是LLVM 7.0.0):
    【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE

然後選擇自己系統對應的軟體源,這裡我使用的是Ubuntu 16.04:

【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE
  1. 将上述查找到的軟體源配置複制,添加到

    /etc/apt/source.list

    檔案中,然後使用

    apt update

    更新軟體源;
  2. 執行檢索存檔簽名
wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - 
           
【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE
  1. 安裝clang, lld, lldb(7版本)
sudo apt-get install clang-6.0 lldb-6.0
           

4.4.4.接下來編譯ycm_core庫

  1. 安裝cmake
sudo apt-get install cmake
           
【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE
  1. 安裝python-dev
sudo apt-get install python-dev python3-dev
           
  1. 建立編譯目錄,生成makefile
cd ~/.vim/bundle/YouCompleteMe/
mkdir ycm_build
cd ycm_build
cmake -G "Unix Makefiles" -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
           
【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE
  1. 編譯ycm_core庫
cmake --build . --target ycm_core --config Release
           
【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE
【Linux(基礎篇)】追求效率, 上古神器 | 将VIM打造成專屬IDE
  1. 建構正規表達式子產品,以便使用正規表達式改進Unicode支援,和編譯

    ycm_core

    庫類似
cd ../
mkdir regex_build
cd regex_build
cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/cregex
cmake --build . --target _regex --config Release
           

4.4.5.配置

  1. 複制.ycm_extra_conf.py檔案:
cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
           
  1. 然後對啟動配置檔案進行配置
vim ~/.vimrc
let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
           

繼續閱讀