非root配置linux下vim

在機子目錄下創建 .vim文件夾php

例如 /home/xxx/.vimhtml

在~文件夾下創建.vimrc文件 這是你本身配置文件java

 

vim雖然啓用了格式化高亮、行號顯示,以及括號匹配、自動縮進等編輯功能,對於大多數狀況均可以得到理ios

想的編輯體驗。不過此時對.php文件的支持還不完善,須要下載專門的php插件。c++

下載地址:http://www.vim.org/scripts/script.php?script_id=1571
下載文件:php.tar.gzgit

將其中的php.vim複製到.vim/syntax目錄中便可。github

一開始在設置裏更換主題一直沒法顯示,後來找到問題的緣由:vim

通常的Linux發行版默認的終端都是16色的,但事實上幾乎全部的終端都支持256色終端。windows

1.將Terminal設爲Xterm模式:編輯->配置文件首選項->顏色 設置爲自定義,內置方案選擇XTerm.bash

2.vimrc裏設置:set t_Co=256

而後就能夠隨便color本身喜歡到主題了。我是用的:colorscheme desert。

打造PHP IDE

IDE左側是目錄導航,中間是編輯區域,而右側則是方法列表,用於在已經打開的文件中快速跳轉。在編輯區

域按下CTRL+X鍵,還會顯示已打開文件的列表。 

其餘諸如自動補全、代碼模板等功能,都應有盡有。看過了漂亮的截圖,咱們就來一步步打造PHP IDE吧。

用NERDTree實現目錄導航

在進行PHP應用開發時,同時編輯多個文件是很正常的事情。因此必須有一個方便的目錄導航工具,以便在目

錄結構間快速切換,找到須要編輯的文件。

vim中提供該類功能的插件不少,比較知名的有project、winmanager等。但筆者我的認爲最好用的仍是The

NERD Tree這個插件。NERDTree不但能夠顯示完整的目錄樹結構,還能夠將任何一個目錄設置爲根目錄。並

且提供了目錄導航的書籤功能,可謂很是方便。

下載地址:http://www.vim.org/scripts/script.php?script_id=1658
下載文件:NERD_tree.zip

解壓縮時,要把壓縮包中的目錄結構完整的解壓縮到$VIMvimfiles目錄中。完成後,應該分別找到$VIM

vimfilesdocNERD_tree.txt文件和$VIMvimfilespluginNERD_tree.vim文件。而後在vim中輸入命令:helptags

$VIMvimfilesdoc,將NERDTree的幫助文檔添加到vim中。

最後在_vimrc添加以下內容:

」 NERDTree

map <F8> :NERDTreeToggle<CR>

重啓vim後,按下F8鍵,就能夠在左側看到一個目錄樹了。在目錄樹窗口中按下?鍵能夠查看詳細的幫助信息

最經常使用的操做鍵有:

 按鍵  做用
 C(大寫C鍵)  將光標所在目錄設置爲根目錄
 u(小寫u鍵)  轉到上一級目錄
 o(小寫o鍵,不是「零」)  展開(或摺疊)光標所在目錄的子目錄。若是光標所在位置是一個文件,則在編輯窗口中打開該文件

此外在目錄樹窗口中輸入目錄:Bookmark 收藏名還能夠將光標所在目錄添加到收藏夾中。下次使

:BookmarkToRoot 收藏名能夠直接轉到該目錄,而且以該目錄做爲根目錄。更多命令能夠參考NERDTree的

幫助文檔。

用taglist實現代碼導航

解決了目錄和文件導航問題,咱們還要爲代碼之間的跳轉提供輔助手段,taglist就是這樣一個插件。taglist能夠

列出已打開文件中定義的類、函數、常量,甚至變量。

下載地址:http://www.vim.org/scripts/script.php?script_id=273
下載文件:taglist_45.zip

壓縮包須要完整解壓縮到$VIMvimfiles目錄,而且用:helptags $VIMvimfilesdoc命令索引taglist插件的幫助文

檔。taglist插件須要依賴ctags程序才能工做。目前經常使用的ctags版本是Exuberant Ctags。

sudo apt-get install ctags,而後whereis ctags,找到ctags: /usr/bin/ctags 這目錄下的ctags。

將ctags複製到$VIMvim72目錄中便可。

最後在/etc/vim/vimrc添加下列內容,設置好taglist插件:

「」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"

」 => Plugin configuration

「」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"」"

」 taglist

let Tlist_Auto_Highlight_Tag = 1

let Tlist_Auto_Open = 1

let Tlist_Auto_Update = 1

let Tlist_Close_On_Select = 0

let Tlist_Compact_Format = 0

let Tlist_Display_Prototype = 0

let Tlist_Display_Tag_Scope = 1

let Tlist_Enable_Fold_Column = 0

let Tlist_Exit_OnlyWindow = 0

let Tlist_File_Fold_Auto_Close = 0

let Tlist_GainFocus_On_ToggleOpen = 1

let Tlist_Hightlight_Tag_On_BufEnter = 1

let Tlist_Inc_Winwidth = 0

利用ctrl+ww來進行兩個窗口之間的切換。

taglist窗口中,可使用下面的快捷鍵:

<CR>       跳到光標下tag所定義的位置,用鼠標雙擊此tag功能也同樣
o             在一個新打開的窗口中顯示光標下tag
<Space>  顯示光標下tag的原型定義
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出現順序排序間切換
x             taglist窗口放大和縮小,方便查看較長的tag
+             打開一個摺疊,同zo
-             將tag摺疊起來,同zc
*             打開全部的摺疊,同zR
=            將全部tag摺疊起來,同zM
[[            跳到前一個文件
]]            跳到後一個文件
q            關閉taglist窗口
在vimrc中加下面設置能夠按F6打開關閉taglist
"函數和變量列表
map <F6> :TlistToggle<CR>

用AutoComplPop實現代碼自動提示

點擊下面網址,進去下載autocomplpop插件

http://www.vim.org/scripts/script.php?script_id=1879

下載的是一個zip文件,解壓後會有三個文件夾,分別是autoload,doc,plugin。到Vim的根目錄下,找到名字

和這三個同樣的文件夾。不一樣系統目錄位置不一樣。個人fedora是/usr/share/vim/vimfiles

按照文件夾對應的把裏面的acp.vim和其餘的什麼文件都copy過去。而後重啓Vim。這時候可能會有錯誤提示

Error detected while processing /home/carlos/.vim/plugin/acp.vim:
line 13:
***** L9 library must be installed! *****

這是插件放出的一個錯誤提示,查看plugin裏的acp.vim能夠看到。是缺乏L9 library庫。這個也是須要下載的。地址在下面

http://www.vim.org/scripts/script.php?script_id=3252

下載下來,它也是一個插件形式,以一樣的方式copy到Vim目錄下。

安裝完後就能夠了。

再就是這個插件默認是沒有設置php自動補全的,能夠設置一個PHP函數字典,讓其根據字典的內容進行自動

補全。

這個是一個PHP字典:.
編輯配置文件.vimrc,在文件後面加上下面的代碼
au FileType php setlocal dict+=/etc/vim/php_funclist.txt
後面跟着的是字典的目錄地址,根據本身的需求存放在一個地方就好。我是放到了/etc/vim/目錄下。

php_funclist下載:php_funclist.tar.gz

再附加一些自動補全配置(加入到vimrc中):

php 中 通常是會在 "$", "->", "::" 後須要出現自動補全,在 .vimrc 中加入如下代碼:

if !exists('g:AutoComplPop_Behavior')
    let g:AutoComplPop_Behavior = {}
    let g:AutoComplPop_Behavior['php'] = []
    call add(g:AutoComplPop_Behavior['php'], {
               'command'   : "<C-x><C-o>", 
               'pattern'   : printf('(->|::|$)k{%d,}$', 0),
               'repeat'    : 0,
            })
endif

在 Vim 中實現括號自動補全:

:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>

function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "<Right>"
else
return a:char
endif
endf

這樣,寫代碼的時候再也不擔憂會丟掉右邊的括號了,尤爲是函數嵌套的時候。

安裝ZenCoding插件

http://github.com/mattn/zencoding-vim下載壓縮包,而後解壓到vimfiles文件夾,和上面同樣,將doc plugin

autoload三個文件夾放到相應文件夾下。而後在vim中輸入helptags /etc/vim/doc 導入幫助文件.就OK了。

zencoing能夠很方便的寫html,一些經常使用命令:

輸入 div>p#foo$*3>a 這樣的縮寫,而後按 ctrl + y + , 來展開(注意那個逗號),展開後它應該是這個樣子的

 <div>
      <p id="foo1">
          <a href=""></a>
      </p>
      <p id="foo2">
          <a href=""></a>
      </p>
      <p id="foo3">
          <a href=""></a>
      </p>
  </div>
  • 多行縮寫

輸入以下:

test1
test2
test3

而後進入行選擇模式,選中這三行按 ctrl + y + ,,接着它會提示你要使用的tag名稱,TAG: 輸入 ‘ul>li* 會變成以下的樣子

<ul>
    <li>test1</li>
    <li>test2</li>
    <li>test3</li>
</ul>

若是是輸入blockquote,那麼會變成這樣

  <blockquote>
      test1
      test2
      test3
  </blockquote>
  • 跳轉到下一個標籤編輯位置

輸入ctrl + y + n 進入插入模式

  • 跳轉到上一個標籤編輯位置

輸入ctrl + y + N 進入插入模式

  • 更新標籤中圖片大小

假若有如下內容

<img src="foo.png" />

光標移動到img標籤上,按下ctrl + y + i 該插件會自動獲取foo.png的大小並插入寬高屬性 看起來像這個樣子

<img src="foo.png" width="32" height="48" />
  • 切換註釋

若有如下段

<div>
    hello world
</div>

光標移動到此段落,輸入ctrl + y + /變成

<!-- <div>
    hello world
</div> -->

再次輸入則還原

  • 生成url鏈接

將光標移動到一個url上,如:

http://www.google.com/

輸入ctrl + y + a 它會自動獲取url頁面的標題並生成一個鏈接

<a href="http://www.google.com/"></a>

Zen Coding官方提供的速查手冊(PDF):http://zen-coding.googlecode.com/files/ZenCodingCheatSheet.pdf

 

不過通常不須要使用那麼複雜的功能,一個vim就夠了

個人配置


"顯示行數
set number

"設置編碼
set encoding=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set fileencoding=utf-8
set termencoding=utf-8

"不要使用vi的鍵盤模式,vim's
set nocompatible

"history文件中須要記錄的行數
set history=400

"與windows共享剪貼板
set clipboard+=unnamed

"支持鼠標事件,點擊定位等
set mouse=a

"偵測文件類型
filetype on

"載入文件類型插件
filetype plugin on

"爲特定文件類型載入相關縮進文件
filetype indent on

"語法高亮
syntax enable
syntax on

"高亮顯示匹配的括號
set showmatch

"設置縮進
"製表符爲4
set tabstop=4

"統一縮進爲4
set softtabstop=4
set shiftwidth=4
"
"繼承前一行的縮進方式,特別適用於多行注視
set autoindent

"使用C樣式的縮進
set cindent

"設置C/C++語言的具體縮進方式(以個人windows風格爲例):

set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
if &term=="xterm"
    set t_Co=8
    set t_Sb=^[[4%dm
    set t_Sf=^[[3%dm
    endif

"顯示下劃線
"set cursorline

 

關於c/c++語言的一些配置

"新建.c,.h,.sh,.java文件,自動插入文件頭 
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
""定義函數SetTitle,自動插入文件頭 
func SetTitle() 
    "若是文件類型爲.sh文件 
    if &filetype == 'sh' 
        call setline(1,"\#########################################################################"
        call append(line("."), "\# File Name: ".expand("%")) 
        call append(line(".")+1"\# Author: "
        call append(line(".")+2"\# mail: "
        call append(line(".")+3"\# Created Time: ".strftime("%c")) 
        call append(line(".")+4"\#########################################################################"
        call append(line(".")+5"\#!/bin/bash"
        call append(line(".")+6""
    else 
        call setline(1"/*************************************************************************"
        call append(line("."), "    > File Name: ".expand("%")) 
        call append(line(".")+1"    > Author: "
        call append(line(".")+2"    > Mail:  "
        call append(line(".")+3"    > Created Time: ".strftime("%c")) 
        call append(line(".")+4" ************************************************************************/"
        call append(line(".")+5"")
    endif
    if &filetype == 'cpp'
        call append(line(".")+6"#include<iostream>")
        call append(line(".")+7"using namespace std;")
        call append(line(".")+8"")
    endif
    if &filetype == 'c'
        call append(line(".")+6"#include<stdio.h>")
        call append(line(".")+7"")
    endif
    "新建文件後,自動定位到文件末尾
    autocmd BufNewFile * normal G
endfunc 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"鍵盤命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

nmap <leader>w :w!<cr>
nmap <leader>f :find<cr>

" 映射全選+複製 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY
map <F12> gg=G
" 選中狀態下 Ctrl+c 複製
vmap <C-c> "+y
"去空行  
nnoremap <F2> :g/^\s*$/d<CR> 
"比較文件  
nnoremap <C-F2> :vert diffsplit 
"新建標籤  
map <M-F2> :tabnew<CR>  
"列出當前目錄文件  
map <F3> :tabnew .<CR>  
"打開樹狀文件目錄  
map <C-F3> \be  
"C,C++ 按F5編譯運行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
    exec "w"
    if &filetype == 'c'
        exec "!g++ % -o %<"
        exec "! ./%<"
    elseif &filetype == 'cpp'
        exec "!g++ % -o %<"
        exec "! ./%<"
    elseif &filetype == 'java' 
        exec "!javac %" 
        exec "!java %<"
    elseif &filetype == 'sh'
        :!./%
    endif
endfunc
"C,C++的調試
map <F8> :call Rungdb()<CR>
func! Rungdb()
    exec "w"
    exec "!g++ % -g -o %<"
    exec "!gdb ./%<"
endfunc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""實用設置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 設置當文件被改動時自動載入
set autoread
" quickfix模式
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>
"代碼補全 
set completeopt=preview,menu 
"容許插件  
filetype plugin on
"共享剪貼板  
set clipboard+=unnamed 
"從不備份  
set nobackup
"make 運行
:set makeprg=g++\ -Wall\ \ %
"自動保存
set autowrite
set ruler                   " 打開狀態欄標尺
set cursorline              " 突出顯示當前行
set magic                   " 設置魔術
set guioptions-=T           " 隱藏工具欄
set guioptions-=m           " 隱藏菜單欄
"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 設置在狀態行顯示的信息
set foldcolumn=0
set foldmethod=indent 
set foldlevel=3 
set foldenable              " 開始摺疊
" 不要使用vi的鍵盤模式,而是vim本身的
set nocompatible
" 語法高亮
set syntax=on
" 去掉輸入錯誤的提示聲音
set noeb
" 在處理未保存或只讀文件的時候,彈出確認
set confirm
" 自動縮進
set autoindent
set cindent
" Tab鍵的寬度
set tabstop=4
" 統一縮進爲4
set softtabstop=4
set shiftwidth=4
" 不要用空格代替製表符
set noexpandtab
" 在行和段開始處使用製表符
set smarttab
" 顯示行號
set number
" 歷史記錄數
set history=1000
"禁止生成臨時文件
set nobackup
set noswapfile
"搜索忽略大小寫
set ignorecase
"搜索逐字符高亮
set hlsearch
set incsearch
"行內替換
set gdefault
"編碼設置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"語言設置
set langmenu=zh_CN.UTF-8
set helplang=cn
" 個人狀態行顯示的內容(包括文件類型和解碼)
"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
"set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
" 老是顯示狀態行
set laststatus=2
" 命令行(在狀態行下)的高度,默認爲1,這裏是2
set cmdheight=2
" 偵測文件類型
filetype on
" 載入文件類型插件
filetype plugin on
" 爲特定文件類型載入相關縮進文件
filetype indent on
" 保存全局變量
set viminfo+=!
" 帶有以下符號的單詞不要被換行分割
set iskeyword+=_,$,@,%,#,-
" 字符間插入的像素行數目
set linespace=0
" 加強模式中的命令行自動完成操做
set wildmenu
" 使回格鍵(backspace)正常處理indent, eol, start等
set backspace=2
" 容許backspace和光標鍵跨越行邊界
set whichwrap+=<,>,h,l
" 能夠在buffer的任何地方使用鼠標(相似office中在工做區雙擊鼠標定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 經過使用: commands命令,告訴咱們文件的哪一行被改變過
set report=0
" 在被分割的窗口間顯示空白,便於閱讀
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮顯示匹配的括號
set showmatch
" 匹配括號高亮的時間(單位是十分之一秒)
set matchtime=1
" 光標移動到buffer的頂部和底部時保持3行距離
set scrolloff=3
" 爲C程序提供自動縮進
set smartindent
" 高亮顯示普通txt文件(須要txt.vim腳本)
au BufRead,BufNewFile *  setfiletype txt
"自動補全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
    else
        return a:char
    endif
endfunction
filetype plugin indent on 
"打開文件類型檢測, 加了這句才能夠用智能補全
set completeopt=longest,menu

 

 

若是出現can not find 這些錯誤

能夠設置vim目錄

let $VIMRUNTIME="/usr/share/vim/vim70"set runtimepath=/usr/share/vim/vim70

相關文章
相關標籤/搜索