Vim 插鍵及配置

若是你以爲這個頁面廣告太多,歡迎移步博客閱讀:Vim 插鍵及配置html

編輯器之神 —— Vimpython

平日使用vim常常編輯文件,想一想使用時的痛點,決定研究一下插件的使用。git

Vim的擴展一般也被成爲bundle或插件。github

軟件版本:編程

  • Mac OS X 10.14.1
  • vim 8.1

插件安裝-Vundle

衆多文章中都提到Vundle,那我就選用它好了!ubuntu

有一個 Vim 的插鍵網站,專門有相關插鍵的配置介紹:VimAwesomevim

1.將Vundle下載到本地,後面下載的插件也將會下載到~/.vim/bundle路徑下。

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

2.插件配置,將以下的內容粘貼到~/.vimrc的頂部(前提是,你自己.vimrc裏一開始沒有什麼其餘內容)。

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
" Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
" Plugin 'L9'
" Git plugin not hosted on GitHub
" Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
" Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
" Plugin 'ascenator/L9', {'name': 'newL9'}

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

3.安裝插件

將須要安裝的插鍵放入.vimrc文件中便可,例如:segmentfault

Plugin 'scrooloose/nerdtree' 
"Plugin 'scrooloose/nerdtree'  " 若是暫時不啓用,就將該插件註釋掉

打開vim,而後輸入:windows

vim # 打開 vim
:PluginInstall
:PluginList # 查看已安裝插鍵列表

4.升級與卸載插件

# 註釋下面這段話
# Plugin 'Valloric/YouCompleteMe'

而後centos

:PluginUpdate # 這個命令自己能夠一鍵升級全部插件
:PlugginClean

參考:

5.幫助文檔

:h vundle

NERDTree

Plugin 'scrooloose/nerdtree'

"F2開啓和關閉樹"
map <F2> :NERDTreeToggle<CR>
let NERDTreeChDirMode=1
"顯示書籤"
let NERDTreeShowBookmarks=1
"設置忽略文件類型"
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
"窗口大小"
let NERDTreeWinSize=25

python-mode

Plugin 'klen/python-mode' " https://vimawesome.com/plugin/python-mode

編寫 Python 文件保存時,就會進行語法檢查了:

let g:pymode_rope = 1
let g:pymode_rope_completion = 1
let g:pymode_rope_completion_bind = '<C-p>'  "爲了自動補全有效,須要將 set paste 設置不啓用
let g:pymode_rope_goto_definition_bind = '<C-c>g'
let g:pymode_python = 'python' " 默認檢查 Python2
"Autofix PEP8 errors
nnoremap <leader>f :PymodeLintAuto<CR>

快捷鍵:

K 顯示內置函數文檔
<leader>r 運行 python 文件 # let mapleader=", " " 設置 leader 爲空格,那麼`,+r`就能夠運行 python 文件了

參考:

vim-airline

一個狀態欄美化工具,顏控必備。附帶功能能夠一目瞭然的區分各類編輯狀態。

Plugin 'vim-airline/vim-airline' "https://github.com/vim-airlin    e/vim-airline
Plugin 'vim-airline/vim-airline-themes' "  https://github.com/v    im-airline/vim-airline-themes https://github.com/vim-airline/vi    m-airline/wiki/Screenshots

主題預覽

To use solarized dark, set :AirlineTheme solarized and add the following to your .vimrc: let g:airline_solarized_bg='dark'

配置:

let g:airline_powerline_fonts = 1
let g:airline_theme='deus'
let g:Powerline_symbols='fancy'
let Powerline_symbols='fancy'
set t_Co=256 " 狀態欄就有顏色了

Yggdroot/indentLine

安裝:

Plugin 'Yggdroot/indentLine'

配置:

let g:indentLine_enabled = 1
let g:indentLine_color_term = 239
map <leader>m :IndentLinesToggle<CR> # 解決vim複製代碼時,縮進線也被複制的問題 https://github.com/Yggdroot/indentLine/issues/261

爲了這個插件可以有效果,也是折騰了半天。在 CentOS 平臺是正常的,可是在 Mac 上的縮進線顯示不正確,爲什麼會這樣呢?SOF-Why is apple vim compiled WITHOUT conceal feature?,原來 Mac 上自帶的 Vim 版本雖然是8.0版本,可是沒有concel這個 Feature ,而indentLine插件要顯示對齊線依賴這個,堅線和星號在使用 conceal 功能

那麼該怎麼添加這個特性呢?搜了一圈,能夠從新安裝 Vim,能夠參考這篇文章安裝 Vim。

通過安裝設置以後,能夠經過vim --version|grep con或者:echo has("conceal")查看是否已經具備 conceal 特性:

rking/ag.vim

ag 的語法:

ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]

ag 這個 vim 插鍵主要是基於這個項目 ggreer/the_silver_searcher

ag --list-file-types # 查看支持自定義哪些文件類型

安裝了這個插鍵後,在 vim 的命令模式下,可使用:Ag [options] {pattern} [{directory}]搜索了。

majutsushi/tagbar

安裝 vim 插鍵以前,機器自己須要ctags

# ubuntu
sudo apt-get install ctags
# centos
sudo yum install ctags
# mac
brew install ctags

在這時使用 vim-tagbar 插件能夠幫你快速瞭解當前文件中的類、方法等。

Plugin 'majutsushi/tagbar' " https://github.com/majutsushi/tagbar

配置:

nmap <F8> :TagbarToggle<CR>

關於 tagbar 的使用,看查看這篇文章 wklken-大綱式導航

YouCompleteMe

目前主要涉及的是 Python 開發,因此,YCM 目前沒有配置,以下僅供參考。

Plugin 'Valloric/YouCompleteMe'
sudo apt-get install build-essential cmake
sudo apt-get install python-dev python3-dev
cd ~/.vim/bundle/YouCompleteMe
./install.py --all

cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
"YouCompleteMe配置相關
let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

主題

安裝主題的方法比較簡單,例如須要安裝molokai主題,手動安裝則按照以下步驟操做:

由於我在 VSCode 和 Iterm2 中都採用了 Dracula 的主題,所以,vim 主題我也一樣偏心它,能夠採用插鍵的方式安裝:

Plugin 'dracula/vim'
:PluginInstall
  • 而後在~/.vimrc文件中加入行colorscheme dracula便可。

主題相關的命令:

:colorscheme   "查看當前主題
:colorscheme space tab "列出全部主題
:colorscheme your-theme "切換主題

設置vim

爲了讓vim使用起來更加駕輕就熟,先作一些簡單的配置。

編輯VIM配置文件,可能一開始沒有這個文件,不過不要緊,直接vi ~/.vimrc保存這個文件便可。

今天學習到<leader> 這個概念,很強大,快捷鍵很方便!

  • nnoremap 將一個組合快捷鍵映射爲另外一個快捷鍵。

關於leader以及其餘map知識,能夠查看以下文章:

我的vim配置

參考多人的配置,打造屬於本身的Vim配置,這個配置不涉及插件的設置,由於經常生產環境是網絡不通的,要迅速配置能用:

let mapleader="," " 設置 leader
let g:mapleader = ','

" 分屏窗口移動, Smart way to move between windows
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l

" Go to home and end using capitalized directions
" H和L跳轉到行首行末, 實在不想按0和$, 太遠
noremap H ^
noremap L $

" 命令行模式加強,ctrl - a到行首, -e 到行尾
cnoremap <C-a> <Home>
cnoremap <C-e> <End>

" 去掉搜索高亮
noremap <silent><leader>/ :nohls<CR>

" 快速保存和退出
" Quickly close the current window
nnoremap <leader>q :q<CR>
" Quickly save the current file
nnoremap <leader>w :w<CR>


syntax on " 自動語法高亮
set cursorline " 突出顯示當前行
set encoding=utf-8
set fileencoding=utf-8
set fileformat=unix "從Win上覆制文件時,避免換行符錯誤
set hlsearch " 搜索時高亮顯示被找到的文本
set ignorecase smartcase " 搜索時忽略大小寫,但在有一個或以上大寫字母時仍保持對大小寫敏感
set incsearch " 輸入搜索內容時就顯示搜索結果
set laststatus=2 " 顯示狀態欄 (默認值爲 1, 沒法顯示狀態欄)
set magic " 設置魔術
set nocompatible " 關閉 vi 兼容模式
set number " 顯示行號
set paste  " 解決拷貝的時遇到註釋會自動註釋後續全部行的問題
set ruler " 打開狀態欄標尺
set shiftwidth=4 " 設定 << 和 >> 命令移動時的寬度爲 4
set softtabstop=4 " 使得按退格鍵時能夠一次刪掉 4 個空格
set smartindent " 開啓新行時使用智能自動縮進
set tabstop=4 " 設定 tab 長度爲 4
set ambiwidth=double " 設置爲雙字寬顯示,不然沒法完整顯示如:☆

vim配置文件中的註釋,末尾用"隔開便可。保留註釋,對於瞭解配置內容有利。

vim配置參考

FAQ

1. github訪問速度慢,下載插件失敗

2. tmux裏面鼠標複製, 沒法選中一行內容

mac上iterm2中,你會發現你想複製terminal上的東西的時候,死活複製不了,這時按住 Option (Alt)鍵就好了。
若是是在Windows平臺上利用mobaxterm等工具,tmux也沒法複製內容,按住shift鍵便可。

3. vim 中的內容,mobaxterm沒法鼠標複製

註釋掉這句話set mouse=a

參考

相關文章
相關標籤/搜索