vimrc配置文件
vimrc配置文件
轉自:https://www.ruanyifeng.com/blog/2018/09/vimrc.html
Vim 是最重要的編輯器之一,主要有下面幾個優點。
- 可以不使用鼠標,完全用鍵盤操作。
- 系統資源占用小,打開大文件毫無壓力。
- 鍵盤命令變成肌肉記憶以后,操作速度極快。
- 服務器默認都安裝 Vi 或 Vim。
Vim 的配置不太容易,它有自己的語法,許許多多的命令。我總是記不清楚,所以就整理了下面這篇文章,列出主要配置項的含義。
一、基礎知識
Vim 的全局配置一般在/etc/vim/vimrc或者/etc/vimrc,對所有用戶生效。用戶個人的配置在~/.vimrc。
如果只對單次編輯啟用某個配置項,可以在命令模式下,先輸入一個冒號,再輸入配置。舉例來說,set number這個配置可以寫在.vimrc里面,也可以在命令模式輸入。
:set number配置項一般都有"打開"和"關閉"兩個設置。“關閉"就是在"打開"前面加上前綴"no”。
" 打開 set number" 關閉 set nonumber上面代碼中,雙引號開始的行表示注釋。
查詢某個配置項是打開還是關閉,可以在命令模式下,輸入該配置,并在后面加上問號。
:set number?上面的命令會返回number或者nonumber。
如果想查看幫助,可以使用help命令。
:help number二、基本配置
(1)
set nocompatible不與 Vi 兼容(采用 Vim 自己的操作命令)。
(2)
syntax on打開語法高亮。自動識別代碼,使用多種顏色顯示。
(3)
set showmode在底部顯示,當前處于命令模式還是插入模式。
(4)
set showcmd命令模式下,在底部顯示,當前鍵入的指令。比如,鍵入的指令是2y3d,那么底部就會顯示2y3,當鍵入d的時候,操作完成,顯示消失。
(5)
set mouse=a支持使用鼠標。
(6)
set encoding=utf-8使用 utf-8 編碼。
(7)
set t_Co=256啟用256色。
(8)
filetype indent on開啟文件類型檢查,并且載入與該類型對應的縮進規則。比如,如果編輯的是.py文件,Vim 就是會找 Python 的縮進規則~/.vim/indent/python.vim。
三、縮進
(9)
set autoindent按下回車鍵后,下一行的縮進會自動跟上一行的縮進保持一致。
(10)
set tabstop=2按下 Tab 鍵時,Vim 顯示的空格數。
(11)
set shiftwidth=4在文本上按下``(增加一級縮進)、<<(取消一級縮進)或者==(取消全部縮進)時,每一級的字符數。
(12)
set expandtab由于 Tab 鍵在不同的編輯器縮進不一致,該設置自動將 Tab 轉為空格。
(13)
set softtabstop=2Tab 轉為多少個空格。
四、外觀
(14)
set number顯示行號
(15)
set relativenumber顯示光標所在的當前行的行號,其他行都為相對于該行的相對行號。
(16)
set cursorline光標所在的當前行高亮。
(17)
set textwidth=80設置行寬,即一行顯示多少個字符。
(18)
set wrap自動折行,即太長的行分成幾行顯示。
set nowrap關閉自動折行
(19)
set linebreak只有遇到指定的符號(比如空格、連詞號和其他標點符號),才發生折行。也就是說,不會在單詞內部折行。
(20)
set wrapmargin=2指定折行處與編輯窗口的右邊緣之間空出的字符數。
(21)
set scrolloff=5垂直滾動時,光標距離頂部/底部的位置(單位:行)。
(22)
set sidescrolloff=15水平滾動時,光標距離行首或行尾的位置(單位:字符)。該配置在不折行時比較有用。
(23)
set laststatus=2是否顯示狀態欄。0 表示不顯示,1 表示只在多窗口時顯示,2 表示顯示。
(24)
set ruler在狀態欄顯示光標的當前位置(位于哪一行哪一列)。
五、搜索
(25)
set showmatch光標遇到圓括號、方括號、大括號時,自動高亮對應的另一個圓括號、方括號和大括號。
(26)
set hlsearch搜索時,高亮顯示匹配結果。
(27)
set incsearch輸入搜索模式時,每輸入一個字符,就自動跳到第一個匹配的結果。
(28)
set ignorecase搜索時忽略大小寫。
(29)
set smartcase如果同時打開了ignorecase,那么對于只有一個大寫字母的搜索詞,將大小寫敏感;其他情況都是大小寫不敏感。比如,搜索Test時,將不匹配test;搜索test時,將匹配Test。
六、編輯
(30)
set spell spelllang=en_us打開英語單詞的拼寫檢查。
(31)
set nobackup不創建備份文件。默認情況下,文件保存時,會額外創建一個備份文件,它的文件名是在原文件名的末尾,再添加一個波浪號(?)。
(32)
set noswapfile不創建交換文件。交換文件主要用于系統崩潰時恢復文件,文件名的開頭是.、結尾是.swp。
(33)
set undofile保留撤銷歷史。
Vim 會在編輯時保存操作歷史,用來供用戶撤消更改。默認情況下,操作記錄只在本次編輯時有效,一旦編輯結束、文件關閉,操作歷史就消失了。
打開這個設置,可以在文件關閉后,操作記錄保留在一個文件里面,繼續存在。這意味著,重新打開一個文件,可以撤銷上一次編輯時的操作。撤消文件是跟原文件保存在一起的隱藏文件,文件名以.un~開頭。
(34)
set backupdir=~/.vim/.backup// set directory=~/.vim/.swp// set undodir=~/.vim/.undo//設置備份文件、交換文件、操作歷史文件的保存位置。
結尾的//表示生成的文件名帶有絕對路徑,路徑中用%替換目錄分隔符,這樣可以防止文件重名。
(35)
set autochdir自動切換工作目錄。這主要用在一個 Vim 會話之中打開多個文件的情況,默認的工作目錄是打開的第一個文件的目錄。該配置可以將工作目錄自動切換到,正在編輯的文件的目錄。
(36)
set noerrorbells出錯時,不要發出響聲。
(37)
set visualbell出錯時,發出視覺提示,通常是屏幕閃爍。
(38)
set history=1000Vim 需要記住多少次歷史操作。
(39)
set autoread打開文件監視。如果在編輯過程中文件發生外部改變(比如被別的編輯器編輯了),就會發出提示。
(40)
set listchars=tab:?■,trail:■ set list如果行尾有多余的空格(包括 Tab 鍵),該配置將讓這些空格顯示成可見的小方塊。
(41)
set wildmenu set wildmode=longest:list,full命令模式下,底部操作指令按下 Tab 鍵自動補全。第一次按下 Tab,會顯示所有匹配的操作指令的清單;第二次按下 Tab,會依次選擇各個指令。
另一篇總結
以下是另一篇博客的總結:
https://blog.51cto.com/zpf666/2335640
"~/.vimrc "vim config file "date 2018-12-26 "Created by bert "blog:http://blog.51cto.com/zpf666 """"""""""""""""""""""""""""""""""" """=>全局配置<=""" """"""""""""""""""""""""""""""""""" "關閉vi兼容模式" set nocompatible"設置歷史記錄步數" set history=1000"開啟相關插件" "偵測文件類型" filetype on "載入文件類型插件" filetype plugin on "為特定文件類型載入相關縮進文件" filetype indent on"當文件在外部被修改時,自動更新該文件" set autoread"激活鼠標的使用" set mouse=a set selection=exclusive set selectmode=mouse,key"保存全局變量" set viminfo+=!"帶有如下符號的單詞不要被換行分割" set iskeyword+=_,$,@,%,#,-"通過使用: commands命令,告訴我們文件的哪一行被改變過" set report=0"被分割的窗口間顯示空白,便于閱讀" set fillchars=vert:\ ,stl:\ ,stlnc:\""""""""""""""""""""""""""""""""" """=>字體和顏色<=""" """"""""""""""""""""""""""""""""" "自動開啟語法高亮" syntax enable"設置字體" "set guifont=dejaVu\ Sans\ MONO\ 10 set guifont=Courier_New:h10:cANSI"設置顏色" "colorscheme desert"高亮顯示當前行" set cursorline hi cursorline guibg=#00ff00 hi CursorColumn guibg=#00ff00"高亮顯示普通txt文件(需要txt.vim腳本)" au BufRead,BufNewFile * setfiletype txt""""""""""""""""""""""""""""""" """=>代碼折疊功能<=""" """"""""""""""""""""""""""""""" "激活折疊功能" set foldenable "set nofen(這個是關閉折疊功能)""設置按照語法方式折疊(可簡寫set fdm=XX)" "有6種折疊方法: "manual 手工定義折疊" "indent 更多的縮進表示更高級別的折疊" "expr 用表達式來定義折疊" "syntax 用語法高亮來定義折疊" "diff 對沒有更改的文本進行折疊" "marker 對文中的標志進行折疊" set foldmethod=manual "set fdl=0(這個是不選用任何折疊方法)""設置折疊區域的寬度" "如果不為0,則在屏幕左側顯示一個折疊標識列 "分別用“-”和“+”來表示打開和關閉的折疊 set foldcolumn=0"設置折疊層數為3" setlocal foldlevel=3"設置為自動關閉折疊" set foldclose=all"用空格鍵來代替zo和zc快捷鍵實現開關折疊" "zo O-pen a fold (打開折疊) "zc C-lose a fold (關閉折疊) "zf F-old creation (創建折疊) "nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>""""""""""""""""""""""""""""""""""" """=>文字處理<=""" """"""""""""""""""""""""""""""""""" "使用空格來替換Tab" set expandtab"設置所有的Tab和縮進為4個空格" set tabstop=4"設定<<和>>命令移動時的寬度為4" set shiftwidth=4"使得按退格鍵時可以一次刪除4個空格" set softtabstop=4 set smarttab"縮進,自動縮進(繼承前一行的縮進)" "set autoindent 命令打開自動縮進,是下面配置的縮寫 "可使用autoindent命令的簡寫,即“:set ai”和“:set noai” "還可以使用“:set ai sw=4”在一個命令中打開縮進并設置縮進級別 set ai set cindent"智能縮進" set si"自動換行” set wrap"設置軟寬度" set sw=4"行內替換" set gdefault"""""""""""""""""""""""""""""""""" """=>Vim 界面<=""" """""""""""""""""""""""""""""""""" "增強模式中的命令行自動完成操作" set wildmenu"顯示標尺" set ruler"設置命令行的高度" set cmdheight=1"顯示行數" set nu"不要圖形按鈕" set go="在執行宏命令時,不進行顯示重繪;在宏命令執行完成后,一次性重繪,以便提高性能" set lz"使回格鍵(backspace)正常處理indent, eol, start等" set backspace=eol,start,indent"允許空格鍵和光標鍵跨越行邊界" set whichwrap+=<,>,h,l"設置魔術" set magic"關閉遇到錯誤時的聲音提示" "關閉錯誤信息響鈴" set noerrorbells"關閉使用可視響鈴代替呼叫" set novisualbell"高亮顯示匹配的括號([{和}])" set showmatch"匹配括號高亮的時間(單位是十分之一秒)" set mat=2"光標移動到buffer的頂部和底部時保持3行距離" set scrolloff=3"搜索逐字符高亮" set hlsearch set incsearch"搜索時不區分大小寫" "還可以使用簡寫(“:set ic”和“:set noic”)" set ignorecase"用淺色高亮顯示當前行" autocmd InsertLeave * se nocul autocmd InsertEnter * se cul"輸入的命令顯示出來,看的清楚" set showcmd"""""""""""""""""""""""""""""""""""" """=>編碼設置<=""" """""""""""""""""""""""""""""""""""" "設置編碼" set encoding=utf-8 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936"設置文件編碼" set fileencodings=utf-8"設置終端編碼" set termencoding=utf-8"設置語言編碼" set langmenu=zh_CN.UTF-8 set helplang=cn""""""""""""""""""""""""""""" """=>其他設置<=""" """"""""""""""""""""""""""""" "開啟新行時使用智能自動縮進" set smartindent set cin set showmatch"在處理未保存或只讀文件的時候,彈出確認" set confirm"隱藏工具欄" set guioptions-=T"隱藏菜單欄" set guioptions-=m"置空錯誤鈴聲的終端代碼" set vb t_vb="顯示狀態欄(默認值為1,表示無法顯示狀態欄)" set laststatus=2"狀態行顯示的內容" set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}"粘貼不換行問題的解決方法" set pastetoggle=<F9>"設置背景顏色" set background=dark"文件類型自動檢測,代碼智能補全" set completeopt=longest,preview,menu"共享剪切板" set clipboard+=unnamed"從不備份" set nobackup set noswapfile"自動保存" set autowrite"顯示中文幫助" if version >= 603set helplang=cnset encoding=utf-8 endif"設置高亮相關項" highlight Search ctermbg=black ctermfg=white guifg=white guibg=black"""""""""""""""""""""""""""""""" """=>在shell腳本開頭自動增加解釋器以及作者等版權信息<=""" """""""""""""""""""""""""""""""" "新建.py,.cc,.sh,.java文件,自動插入文件頭" autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()" "定義函數SetTitle,自動插入文件頭" func SetTitle()if expand ("%:e") == 'sh'call setline(1, "#!/bin/bash")call setline(2, "#Author:bert")call setline(3, "#Blog:http://blog.51cto.com/zpf666")call setline(4, "#Time:".strftime("%F %T"))call setline(5, "#Name:".expand("%"))call setline(6, "#Version:V1.0")call setline(7, "#Description:This is a production script.")endif endfunc總結
- 上一篇: 恒易贷现在还款中但是没到账
- 下一篇: 资金账簿是什么