1. 程式人生 > >vim 設定大全,超級全

vim 設定大全,超級全

1.獲取幫助

 WHAT PREPEND    EXAMPLE ~

      Normal mode command      (nothing)   :help x

      Visual mode command  v_   :help v_u

      Insert mode command  i_   :help i_<Esc>

      Command-line command  :   :help :quit

      Command-line editing  c_   :help c_<Del>

      Vim command argument  -   :help -r

      Option  '   :help 'textwidth'

      檢視錯誤資訊 (nothing)  :help E37

2.命令

編輯命令:     

a 新增字元

A 從行尾新增字元

             i(Insert)       插入

I 從行第一個字元開始插入

x(效仿打字機) 刪除一個字元

d(delete) 刪除

dd 刪除一整行

J 刪除回行符(合併兩行) 合行後中間加一個空格

gJ 刪除回行符,合行後首尾空格不去除

u(undo) 撤銷上一步操作

U(undo) 撤銷一整行操作(此操作算為一次操作,可用u撤銷)

Ctrl+R(redo) 從做撤銷的操作

i 在當前位置插入

o 在游標的下面插入新行

O 在游標的上面插入新行

r 替換游標下的字元,加上計數器表示連續替換多個字元為一個字元

R 替換整行字元

. 重複上一次更改

p 貼上預設暫存器中的內容,可用計數器

y 複製選中內容到預設暫存器

~ 切換當前字母大小寫

g~ 切換字母大小寫

gU 將字母切換成大寫

gu 將字母切換成小寫

g~~ g~g~ 切換整行字母大小寫

gUU gUgU

guu gugu

> 在visual模式下將選中的內容右移,前面填充空格

< 在visual模式下將選中的內容左移,前面的空格刪除

:{range}read patch 在當前行的下面插入檔案patch中的內容,如果指定了range 則插入到range中最後的一行下面,這裡的range可以用特殊的行號0

:{range}read !{command} 將命令的輸出插入到檔案中

gq 格式化所選文字

:[range]m[ove] {address} 把選中的文字移動到address下面

:[range]co[py] {address} 把選中的文字複製到address下面

等價的:

x=dl

X=dh

D=d$

C=c$

s=cl

S=cc

位移命令:

  在普通模式下 hjkl 代表 左下上右

w 往後跳一個單詞,游標停在第一個字母上

b 往前挑一個單詞,游標停在第一個字母上

e 往後跳一個單詞,游標停在最後一個字母上

ge 往前跳一個單詞,游標停在最後一個字母上

$ 跳到行尾,可用計數器向下跳多行

0 跳到行首算上空白

^ 跳到行尾不算上空白,加上計數器沒有效果

f 向後查詢字元,用計數器表示查詢到第幾個匹配字元

F 向前查詢字元,用計數器表示查詢到第幾個匹配字元

t

T

; 跳到下一個匹配的字元

, 跳到上一個匹配的字元

% 匹配括號 前面加數字表示跳轉到檔案的百分比

G   前面加數字跳轉到明確的行,不加數字表示跳轉到檔案的最後一行

gg 跳到檔案的第一行

H(Home) 跳到螢幕的最上方一行

M(Middle) 跳到螢幕的中間一行

L(Last) 跳到螢幕的最下面一行

CTRL-U(up) 將螢幕向上滾動半個螢幕的文字

CTRL-D(down) 將螢幕向下滾動半個螢幕的文字

CTRL-E 將文字向上提一行

CTRL-Y 將文字向下拉一行

CTRL-F 將螢幕向下滾動一屏

CTRL-B           將螢幕向上滾動一屏

CTRL-]   跳轉到標籤內部

CTRL-T   跳轉到父標籤

  CTRL-O     跳轉到更老的jump點

  CTRL-I     跳轉到更新的jump點,與<TAB>功能相同

` 跳轉到某標籤的游標位置

' 跳轉到某標籤的行首

文字物件:(很像計數器+位移命令)

a     包括前後空格

       i                不包括前後空格

w 單詞

s 句子

p 段落

其他命令:

------------------多檔案-------------------------

vim one.c two.c three.c   通過VIM同時編輯三個檔案

:next  編輯下一個檔案  可以用計數器 :2next

:wnext  儲存並編輯下一個檔案

:args  顯示開啟VIM時編輯的檔案列表

:previous  編輯上一個檔案 可以用計數器

:wprevious  儲存並編輯上一個檔案

:first  編輯第一個檔案(沒有w版本)

:last  編輯最後一個檔案(沒有w版本)

:args *.txt  從新編輯檔案列表,未儲存檔案將提示,可以用萬用字元,可以用強制符

-------------------多視窗----------------------------------

vim -o one.txt two.txt 水平多個視窗開啟多個檔案

vim -O one.txt two.txt   垂直多個視窗開啟多個檔案

:all 為列表中的檔案各開一個視窗(可vertical)

:split 上下分割當前視窗,在上面開啟新視窗

:vsplit 左右分割窗體,在左邊開啟新視窗

:split two.c 在新視窗編輯檔案

:3split alpha.c 設定新視窗的高度

:new 建立新視窗建立新檔案在當前視窗上面

:vnew 建立新視窗建立新檔案在當前視窗左面

:vertical new 等同於vnew

:vertical 加在任何分割視窗的命令前面,使其垂直分割

CTRL-W w 視窗切換

CTRL-W CTRL-W 和CTRL+W w一樣

:close 關閉視窗

:only 關閉其他所有視窗

CTRL-W + 增大視窗,可以用計數器

CTRL-W - 減小視窗,可以用計數器

15CTRL-W _ 指定當前視窗高度為15

CTRL-W _ 最大化當前視窗

CTRL-W h move to the window on the left

CTRL-W j move to the window below

CTRL-W k move to the window above

CTRL-W l move to the window on the right

CTRL-W t move to the TOP window

CTRL-W b move to the BOTTOM window

CTRL-W H move window to the far left

CTRL-W J move window to the bottom

CTRL-W K move window to the top

CTRL-W L move window to the far right

:qall 退出所有視窗

:wall 儲存所有檔案

:wqall 儲存並退出所有檔案

:qall! 放棄儲存退出所有檔案

------------------------檔案對比--------------------------

vimdiff a.c b.c 對比兩個檔案的差別

zc 關閉摺疊

zo 開啟摺疊

-----------------------tab欄------------------------------

gT 反向的gT

:tab split 通過一個新tab開啟當前檔案

:tab help

:tabonly 除了當前的tab其它的都關閉

-----------------------GUI選項----------------------------

:set guioptions 設定GUI的選項 T代表toolsbar l代表左滾動條

:behave xterm 把滑鼠設定成Xterm模式

:behave mswin 把滑鼠設定成mswin模式

'mouse' in which mode the mouse is used by Vim

'mousemodel' what effect a mouse click has

'mousetime' time between clicks for a double-click

'mousehide' hide the mouse while typing

'selectmode' whether the mouse starts Visual or Select mode

:set selectmode+=mouse 通過滑鼠選擇文字進入選擇模式,選擇模式下輸入字元會使用新字元替換之前選中的字元。

-------------------------其它的---------------------------

:{range}write>>logfile 將當前內容追加到指定檔案中

:{range}write 儲存,後面加路徑為另存為

:{range}write {command} 將當前檔案儲存到command中表示把當前檔案作為被呼叫命令的引數 如 :write !wc 返回當前檔案的字元數

:w :write的縮寫

:edit(e) 開啟,編輯

ZZ         儲存並退出

zz   將游標所在行移至視窗中間

:q   退出

vim -R file 用只讀模式開啟file unix中view file等效,通過w!可以強制存檔

vim -M file 用只讀模式開啟file 通過 :set modifiable :set write 可以去除這種保護

vim -r file 用swp檔案恢復當前開啟檔案,恢復一個還沒有命名儲存的檔案時用 vim -r "" ,其中file可以是被恢復的原檔案,也可以是用於恢復的交換檔案(VIM會根據交換檔案自動找到原檔案)

vim -r 列出當前可用的所有交換檔案,然後選擇用哪個恢復

:recover 用交換檔案恢復當前檔案

:set shortmess 選擇關閉資訊提示功能

:saveas move.s 將當前檔案另存為move.s

:file move.c 將當前檔案重新命名為move.c

{command}!   強制符

!{motion}{program} 執行外部程式 輸入完!{motion}部分後命令會自動跳轉到命令列部分,會通過motion部分的內用呼叫program然後用返回結果覆蓋調motion選擇的部分 例如:!5Gsort<Enter>

!! 在當前行執行程式 相當於 :.!

:jumps 列出跳轉記錄

:marks 列出所有標籤

:reg 檢視暫存器內的內容

<ESC>     取消命令

CTRL-G     顯示行數等資訊

m 建立標籤,用a-z 是局域標籤,A-Z是全域性標籤

v 進入visual模式

V 進入visual模式,以行為物件

CTRL-V 進入visual模式,以矩形為物件

o 在以矩形為單位的visual模式時 游標對角切換

O 在以矩形為單位的visual模式時 游標平角切換

"{a-Z,+,*等} 選擇暫存器複製\剪下\貼上 大寫字母表示追加

'" 跳到上次退出此檔案時的位置

'. 跳到最後編輯此檔案的位置

:TOhtml 把當前檔案轉化成HTML格式

:source $VIMRUNTIME/syntax/2html.vim  把2html.vim轉化成HTML顯示在螢幕上

g Ctrl-G 統計字數,可以在visual模式下選擇要統計的字元

---------------------------------------------------------------

3.配置與設定

在布林型引數前加no表示關閉選項

配置項支援-= 和 +=

拷貝預設的配置檔案:      :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc

VIM的預設安裝路徑:/usr/share/vim

VIM的預設配置檔案路徑: ~/.vim/

VIM的預設外掛檔案路徑: ~/.vim/plugin/

VIM的預設檔案型別配置檔案路徑: ~/.vim/ftplugin/

VIM的預設文件安裝路徑: ~/.vim/doc

檔案型別配置檔案多檔案的配置方式:

ftplugin/<filetype>.vim

ftplugin/<filetype>_<name>.vim

ftplugin/<filetype>/<name>.vim

mkdir $VIM/vimfiles/ftplugin/fortran

$VIM/vimfiles/ftplugin/fortran/too.vim


  高亮字型設定的路徑:$VIMRUNTIME/syntax

配色方案的路徑:$VIMRUNTIME/colors   ~/.vim/colors

生成幫助檔案的tags:               :helptags ~/.vim/doc

檢視本地新增的所有幫助檔案:  :help local-additions

開啟配置檔案 :edit $MYVIMRC

檢視版本和一些檔案配置資訊        :version

把所有選項攝製成預設              :set all&

檢視所有和預設不一樣的設定        :set

開啟設定視窗  :options

配置命令:

在所有配置項後面新增&表示設定為預設值

:set showmode                       顯示當前的模式

:set compatible?                       檢視當前是否為相容模式

:set number                       顯示行號

:set ruler                       在螢幕右下角顯示游標位置

:set ignorecase                        搜尋乎略大小寫

        :set hlsearch                       設定搜尋結果高亮

:nohlsearch       關閉當前搜尋結果的高亮

:set incsearch                       (incomplete)在輸入單詞的同時顯示搜尋結果

:set wrapscan                       搜尋到檔案底部的時候從檔案的開頭繼續搜尋反之亦然

:set wrap       是否自動換行

:set whichwrap       設定那些命令可以跨行b是backspace s是Space 具體檢視'whichwrap'

:set sidescroll       設定左右自動滾動的觸發字元數

:set scrolloff       設定上下自動滾動的觸發行數

:set compatible                        是否與vi相容

:set backspace=indent,eol,start        設定在Insert模式下backspace鍵可以刪除 行前的自動縮排,回行,和進入插入模式時游標之前的字元

:set autoindent                        自動縮排(在Insert中回車或者在正常模式下o)

:set backup       覆蓋一個檔案時備份它

:set history       設定命令和搜尋的歷史記錄數量

:set showcmd       在右下角顯示按鍵命令

:set list       製表符高亮

:set listchars=tab:>-,trail:-       設定製表符的替換字串

:set iskeyword       設定關鍵字的組成字母@表示a-Z

:set cmdheight       設定命令區高度

:map Q gq       設定對映

:map <F5> i{<Esc>ea}<Esc>       對映F5的功能為給一個單詞加{}

:set shiftwidth       設定左右移動的距離

:set joinspaces       設定合行後的空格數

:set textwidth       設定文字的寬度

:set updatetime       設定多長時間沒有編輯檔案就自動存檔,毫秒為單位

:set updatecount       設定輸入多少字元後自動存檔

:set directory       設定檢視在哪裡儲存交換檔案

:set autowrite       自動存檔,此存檔是在必要時刻自動儲存不像word那樣隔幾分鐘存一次

配置檔案中的特殊用法:

autocmd 自動執行命令

autocmd FileType text setlocal textwidth=78 設定 文字檔案 文字寬度為78

手動設定檔案的高亮配置檔案:

在檔案開頭或者結尾寫入  # vim: syntax=make

在VIM中執行shell的時候可以配置shell備置列表如下:

'shell' specifies the program that Vim uses to execute external programs.

'shellcmdflag' argument to pass a command to the shell

'shellquote' quote to be used around the command

'shellxquote' quote to be used around the command and redirection

'shelltype' kind of shell (only for the Amiga)

'shellslash' use forward slashes in the command (only for MS-Windows and alikes)

'shellredir' string used to write the command output into a file

4.搜尋

搜尋支援正則表示式

/ 向後搜尋

? 向前所搜

n 下一個匹配項

N 上一個匹配項

* 從上向下搜尋單詞

# 從下向上搜尋單詞

搜尋單詞: /\<the\>  這樣指定了單詞的開始和結尾

5.常用套路技巧:

套路:

x delete character under the cursor (short for "dl")

X delete character before the cursor (short for "dh")

D delete from cursor to end of line (short for "d$")

dw delete from cursor to next start of word

db delete from cursor to previous start of word

diw delete word under the cursor (excluding white space)

daw delete word under the cursor (including white space)

dG delete until the end of the file

dgg delete until the start of the file

技巧:

'* 是選區暫存器(用滑鼠中鍵)  '+ 是貼上暫存器(一般是選單裡的複製貼上選項)

Insert模式和Replace模式可以用Insert鍵切換

將Doe,John 替換成 John Doe 用如下方法:

:%s/\([^,]*\),\(.*\)/\2 \1/        其中\1 表示正則表示式中第一個匹配部分,整句的匹配部分用 \0表示

反序排列的方法:

首先到要反序的第一行,用mt標註當前位置,然後到要替換的反序的最後一行,輸入命令:'t+1,.g/^/m 't 可以用.範圍(global預設是%)然後編輯反射這樣就可以挑出想要的內容,還可以不確定範圍用0代替 't將對整個檔案進行反序

挑選文字的方法:

:map <F4> :.g/^/co 'p<enter> :normal <c-o><enter> 需要首先用mp定義p的位置

6.配色方案:

命令:

:syntax on       開啟語法高亮

:syntax clear       清楚當前的語法高亮

:syntax off       關閉語法高亮

:syntax manual       將高亮模式設定為手動

:set syntax=ON       設定以上選項後,用這個命令開啟語法高亮

:filetype on       開啟檔案型別檢測

:set filetype       設定當前檔案型別

:plugin on       使用檔案型別外掛

:indent on       開啟檔案型別自動縮排

        :set background       手動配置背景色(VIM一般會自動推斷終端的背景色) 此命令必須放置在 :syntax enable 前 否則不起作用

:syntax reset       vim重新設定預設顏色

:runtime syntax/colortest.vim       檢視配色方案的例項

:colorscheme       選擇配色方案

:colorscheme mine       一直使用自己的配色方案

CTRL-L       重繪VIM的螢幕

配色方案檔案中的關鍵字及作用:

配色方案的路徑:$VIMRUNTIME/colors   ~/.vim/colors

term attributes in a B&W terminal

cterm attributes in a color terminal

ctermfg foreground color in a color terminal

ctermbg background color in a color terminal

gui attributes in the GUI

guifg foreground color in the GUI

guibg background color in the GUI

可以這樣設定:highlight Comment ctermfg=green guifg=green

7.命令記錄與回放

q{a-z} 用於開始記錄巨集,放在暫存器裡面的命令可以當成文字粘貼出來,大寫字母表示追加

q 結束巨集

@{a-z} 執行巨集

@@ 用上一次執行巨集的暫存器執行巨集

8.搜尋替換

:[range]substitute/from/to/[flags] 搜尋替換的格式 substitute縮寫為s,=和+也可以用於分隔符

[range] 預設為當前行

[flags] 預設指替換第一個

g(gloabl) 替換範圍內全域性

p(print) 顯示替換的最後一行

e 告訴VIM未找到匹配時不要報錯

c(confirm) 每次替換要求使用者確認

y Yes; make this change.

n No; skip this match.

a All; make this change and all remaining ones without further confirmation.

q Quit; don't make any more changes.

l Last; make this change and then quit.

CTRL-E Scroll the text one line up.

CTRL-Y Scroll the text one line down.

9.全域性命令

:[range]global/{pattern}/{command} 全域性命令的一般形式,其中global可以縮寫成g,command必須是:命令,正常模式下的命令可以通過 :normal實現

10.命令範圍

任何命令都可以有一個範圍

{number} number是行號,指定一行

{number},{number} 指定多行,包含指定的兩行,這裡的number可以是一個搜尋模式, ?abc?  表示向上搜尋abc /abc/ 表示向下搜尋abc ,當開始行大於結束行的時候它會問你是否交換兩個引數,可以在任何number後面新增偏移量,例如: .+1,$-3  或者 ?a?+1,/b/-1等等,還可以在visual模式下選擇範圍當按下:時會出現 :'<,'> 這時的作用範圍即是選區開始的字元到選區結束的字元,要注意的是即使是CTRL-V進入的塊選區也是以行為基本單位

. 游標的當前行

1 第一行

$ 最後一行

% 相當於 1,$

'a-z' number還可以用mark表示

`< 上一個選區開始的位置

`> 上一個選區結束的位置

'< 上一個選區開始的行

'> 上一個選區結束的行

5: 就是在:前面加計數器將會在命令欄開啟 :.,.+4 可以用任意的計數器

*.需要注意的:

1. d2e 和 d2w 的區別

2. cw 和 ce 的結果一樣,都是c2e的結果

3. ^命令加上計數器沒有效果

4. Y和yy 的結果一樣,都是yy的結果,如果想用Y的效果只能y$了

  5. vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> 這句沒看懂      05.2* The example vimrc file explained

6. autocmd BufReadPost *

   \ if line("'\"") > 1 && line("'\"") <= line("$") |

   \   exe "normal! g`\"" |

   \ endif

沒看懂 05.2* The example vimrc file explained

7. 關於自定義高亮 檢視 mysyntaxfile     和  syntax

8. 關於自定義檔案型別 檢視    new-filetype|