vim使用總結

2021-06-04 20:42:34 字數 4209 閱讀 5372

1. vim 將檔案從dos格式轉換到unix格式

vim file.txt

:set fileformat=unix

:w2. 刪除文字中的^m

三種行尾格式如下:

unix : \n

dos : \r\n

mac : \r

這意味著,如果你試圖把乙個檔案從一種系統移到另一種系統,那麼你就有換行符方面的麻煩。

因為ms-dos及windows是回車+換行來表示換行,因此在linux下用vim檢視在windows下寫的**,行尾後「^m」符號。

在vim中解決這個問題,很簡單,在vim中利用替換功能就可以將「^m」都刪掉,鍵入如下替換命令列:

:%s/^m//g

注意:上述命令列中的「^m」符,不是「^」再加上「m」,而是由「ctrl+v」、「ctrl+m」鍵生成的,或者ctrl+v,再按回車。

或者使用這個命令:

:% s/\r//g

3. vim中將tab轉換成空格 

在vim中,有時需要將tab轉換成space。使用ret命令(replace tab)。

[range]ret[ab]! [new-tabstop]

舉例:將第一行到檔案尾的tab轉換成space,每個tab用4個space替代。

:set expandtab

:%ret! 4

如果沒有給定4,則用當前的tab寬度設定替換為space。

:set tabstop=4        設定tab寬度為4個字元

:set shiftwidth=4     設定自動縮排為4個字元

:set expandtab        用space替代tab的輸入

:set noexpandtab      不用space替代tab的輸入

4. 刪除指定行每行固定的前幾個字元

例如,從第3行到第10行,每行的前3個字元刪除

:3, 10s/^...//

5. gvim的配置

6. 顯示歷史命令

q: 進入命令歷史編輯

7. visual模式下的拷貝,複製和貼上

參考:進入vim中visual模式,visual模式進入,可以有三種方式:

(1)在普通模式(normal)下,直接按鍵 v  就可以進入預設visual模式,可以使用j/k/h/l 進行文字選擇

對於選中的文字進行如下按鍵:

(1.1)d   ------ 剪下操作

(1.2)y   -------複製操作

(1.3)p   -------貼上操作

(1.4)^  --------選中當前行,游標位置到行首(或者使用鍵盤的home鍵)

(1.5)$  --------選中當前行,游標位置到行尾(或者使用鍵盤的end鍵)

(2)visual line模式  按鍵v可以進入

按鍵v之後,進入visual line模式,使用 j/k鍵可以選中一行或者多行

(3)visual block模式,按鍵ctrl + v可以進入

按鍵ctrl+v之後,進入visual block模式,使用 j/k/h/l鍵可以選中一塊

注:在塊模式下,可以進行多列的同時修改,修改方法是:

首先進入塊模式 ctrl+ v

使用按鍵j/k/h/l進行選中多列

按鍵shift + i 進行 塊模式下的插入

輸入字元之後,按鍵esc,完成多行的插入

8. vim tab 設定為4個空格

在.vimrc中新增以下**後,重啟vim即可實現按tab產生4個空格:

set ts=4  (注:ts是tabstop的縮寫,設tab寬4個空格)

set expandtab

對於已儲存的檔案,可以使用下面的方法進行空格和tab的替換:

tab替換為空格:

:set ts=4

:set expandtab

:%retab!

空格替換為tab:

:set ts=4

:set noexpandtab

:%retab!

9. vim拷貝格式錯亂問題

有時候,複製文字(尤其是**)到 vim,會出現格式錯亂的問題。看樣子,應該是自動縮排惹得禍。本文不去深究原因,直接給出解決方法。

1. paste 模式

執行如下命令,進入 paste 模式:

:set

paste

進入 paste 模式後,按 i 鍵進入插入模式,然後再粘帖,文字格式不會錯亂了。但粘帖後還需要按 進入普通模式並執行如下命令結束 paste 模式:

:set

nopaste

顯然,這樣非常麻煩。下面我們進行改進。

2. 快捷鍵一

我們可以利用設定快捷鍵來簡化上面的兩個命令。在 ~/.vimrc 中加入如下兩行:

map

<

f10>

:set

paste

<

cr>

map

<

f11>

:set

nopaste

<

cr>

這樣,在普通模式下按 f10 (你也可以用自己喜歡的按鍵)就會進入 paste 模式,按 i 進入插入模式後粘帖,然後按 回到普通模式,再按 f11 結束 paste 模式。

這樣雖然方便了,但占用了兩個按鍵。下面我們繼續改進。

3. 快捷鍵二

在 ~/.vimrc 中加入如下內容:

setpastetoggle

=<

f11>

這樣就可以把上面的 f10 和 f11 合併為乙個快捷鍵來切換 paste 模式了。

還有更好的辦法麼?當然!

4. vim 暫存器一

關於 vim 暫存器的詳細資訊請執行命令 「:help registers」 檢視。

對於「剪下板」這個概念,linux 下有兩個東西:乙個叫做選擇緩衝區(x11 selection buffer),另乙個才是剪下板(clipboard)。滑鼠或鍵盤選擇內容時,內容實時進入緩衝區,然後按中鍵將內容插入游標所在位置;滑鼠或鍵盤選擇內容後,按ctrl-c(或shift-ctrl-c)或選單中的「複製」,內容進入剪下板,然後按ctrl-v(或shift-ctrl-v)或選單中的「粘帖」將內容插入游標所在位置。關於這兩者的詳細資訊,請自行搜尋,此處不深究。

vim 的暫存器 「* 對應系統緩衝區, 暫存器 「+ 對應系統剪下板。

如果你是把選擇的內容(在系統緩衝區中)粘帖到 vim ,只需在普通模式下執行如下命令:

"*p

對應的,如果你是把複製的內容(在系統剪下板中)粘帖到 vim,只需在普通模式下執行如下命令:

"+p

怎麼樣?格式沒有錯亂了吧?

這樣雖然簡便很多了,但還是需要輸入三個字母,並且這三個字母都得使用右手小拇指輸入,甚至其中的兩個字母還需要 shift 鍵配合!

還有更簡單的辦法。

5. vim 暫存器二

在 ~/.vimrc 裡加入如下內容:

setclipboard

=unnamed

然後只需在普通模式下按 p 即可把系統緩衝區中的內容粘帖到 vim 中,就像粘帖用 yy 命令得到的內容一樣,並且格式不錯亂。

如果把上面的一行換成如下內容:

setclipboard

=unnamedplus

普通模式下按 p 粘帖的內容就是系統剪下板裡的內容了。

這已經足夠簡便了。在搜尋此問題的過程中,我還看到了另外一些辦法。

6. 快捷鍵三

在 ~/.vimrc 裡加入如下內容:

inoremap

insert

>

<

esc>:

setl paste

<

cr>

gir>+<

esc>:

setl nopaste

<

cr>gi

這樣,你就可以在插入模式下使用 shift-insert 快捷鍵在粘帖系統剪貼簿中的內容了。

把上面一行替換成如下內容同樣可以達到相同的效果:

inoremap

insert

>

<

esc>

"+p`]a

注意,這可是在插入模式下哦!比起第 5 節提到的方法,這種方法省去了一次 按鍵進入普通模式和一次 i 按鍵重新回到插入模式。

至此,你需要做的只是:

VIM使用總結

一 關於如何搭建成ide可以參考下面兩篇文章 2.vi vim使用高階 目錄 add 把vim打造成ide 整理,修訂 對si比較熟悉的,可以看看下面這篇,有si和vim功能的對比 從source insight到vim 二 新建乙個工程需要執行的操作 1.cscope rbq 生成cscope.i...

Vim使用總結

前言vim是乙個超級牛的編輯器,可以說是專為程式設計師設計的編輯器,強大的有些不可思議 不過其學習曲線稍顯陡峭,前兩天在網上找到乙個小圖表,比較全,如果對錶中所列的命令學習熟悉以後,處理日常的文字就已經足夠,所以貼出來,大家參考參考。vim的牛b之處不在於其功能之繁多,更不在於其學習曲線之陡峭,而在...

Vim使用總結

一般模式 切換到命令模式按shift 組合鍵,切換到插入模式按鍵i i a a r r s s中之一 插入模式 切換到一般模式按esc鍵 命令模式 鍵入相應命令按enter鍵後即處於一般模式 檢視模式 一般模式下鍵入v或v進入檢視模式,退出按esc 顯示行號在命令模式 螢幕下方出現 下,鍵入set ...