Vim學習筆記 大刀闊斧

2021-08-25 02:47:16 字數 3993 閱讀 6331

9.1 命令的記錄與回放

1. 操作步驟

a. q命令: 將後續的動作記錄到名為的暫存器中,其中給出的暫存器名字》必須是a到z之間的乙個字母.

b. 執行你要執行的操作,按下q以結束對命令的記錄.

c. @命令:執行剛剛記錄下來的巨集.

2. 舉個例子

#include "stdio.h"

#include "fcntl.h"

#include "unist.h"

#include "stdli.h"

詳細的操作步驟:

qa   :開始將後續的命令記入到暫存器a中.

^    :將游標移到行首.

i#include ":在該行之前插入#include.

$    :將游標移動到行尾.

a.h":在行尾加上.h"字元.

j    :移動到下一行.

q    :停止記錄.

@a   :執行記錄的巨集,可以加計數命令,3@a.

@@   :重複上一次巨集的命令.

3. 編輯巨集的內容

a. "ap命令  :顯示巨集的內容

b. "ad$命令 :將編輯好的巨集的內容再一次的放入暫存器中.

c. qa命令   :向暫存器a中追加內容.

9.2 替換

1. 通用形式

:[range]subtitute/from/to/[flags] :對乙個指定的範圍執行替換操作,range指範圍,from被替

換的內容,與搜尋命令所用的正規表示式類似,to替換為的內容,flags指一些常用的標記.

如:s/the /these /g

the these the these the these the these

如:s/one\/two/one or two/g

s=one/two=one or two=g 功能一樣.

one/two one/two one/two one/two one/two one/two

2. 常用選項

range  :作用範圍,range=% 範圍為所有行,而預設只作用於當前行.

flags  :標記,flags=g (global) 將改變一行所有符合目標字串的全部字元進行替換.

flags=c (confirm):在執行每個替換前請求使用者確認

y 好吧,yes 直接進行替換

n 不,no 先留下

a 全部,all

q 退出,quit

l 把現在這個修改結束後進行退出,last

ctrl-e  向上滾屏一行

ctrl-y  向下滾屏一行

9.3 命令的作用範圍 range的範圍

:45,49s/this/that/g     :對第45行到第49行的文字執行替換操作.

:33s/this/that/g        :對指定行進行替換操作.

:.,$s/this/that/g       :當前行到最後一行範圍,如%=1,$.

:?^chapter?,/^chapter/s=this=that=g    :使用搜尋模式來指定作用範圍.

:?^chapter?+1,/^chapter/-1s=this=that=g    :增與減行的範圍操作.

:.+3,$-5s/this/that/g   :將當前行的下三行到倒數第六行的作用操作.

:'t,'bs/this/that/g   :使用標記確定操作範圍.

:'<,'>s/this/that/g   :visual模式確定的範圍.

:'>,$s/this/that/g   :從上一次visual模式時選定的文字區域的結束處到文字尾的這樣區域

:.,.+4s/this/that/g  :.代表當前行到.+4從當前行到向下的4行,一共5行.

9.4 全域性命令

:[range]global//  :找到符合某個匹配模式的行,然後將命令作用於這些行上,全域性命令的預設作用範圍是整個檔案.

:g=//=s/foobar/barfoo/g      :整個檔案中包含//的行,進行替換操作.

:g=//=d                      :整個檔案中包含//的行,進行刪除操作.

9.5 visual block模式

1. 插入文字

istring:在文字塊的每行的行首,進行插入文字.

astring:在文字塊的每行的行尾,進行插入文字.

2. 改變文字

cstring:修改文字塊的文字,僅會修改文字塊的內容.

cstring:修改文字塊的文字,會修改文字塊尾部的內容.

3. 改變文字在大小寫

~ :交換大小寫 (abc->abc)

u :將小寫變大寫 (abc->abc)

u :將大寫變小寫 (abc->abc)

4. 填充命令

rx命令:  以字元x進行文字塊的填充操作.

5. 左右移動

《命令 :會使你的文字向左移動乙個shift單位.

>命令 :會使你的文字向右移動乙個shift單位.

:set shiftwidth=4

6. 將多行內容粘接起來

j命令  :使文字塊縱跨的所有文字被連線為一行.

gj命令 :如果你想保留那些前導空白和字尾的空白時,可以使用.

9.6 讀寫檔案

1. 讀取檔案

:read filename      :讀入檔案的內容放在當前行.

:$read filename     :追加到檔案的最後.

:0read filename     :把檔案放在第一行的上面.

:80read filename    :把檔案放在指定行的上面.

2. 寫入檔案

:write filename     :沒有指定乙個範圍時該命令將寫入整個檔案的內容.

:.,$write filename  :當前行到檔案尾的內容寫入檔案,如果檔案存在則失敗.

:.,$write! filename :強制當前行到檔案尾的內容寫入檔案,會進入覆蓋操作.

:.write filename    :將當前行寫入檔案中.

:.write >> filename :將當前行的內容追加到檔案中.

9.7 格式化文字

:set textwidth=72      :鍵入文字的時候每行的內容能自動調節到適應當前設定的寬度,每一行都》會自動調整到只包含最多72個字元,vim進行格式化時不會打斷你的單詞.

:gqap                  :gq為vim的乙個格式化操作符,ap是乙個本文物件,a paragraph.

:gg gqg                :格式化整個檔案的內容.

:gqgq                  :格式化當前行,可以與.重複命令一起使用.

:gqj                   :格式化當前行和它下面的一行.

9.8 改變大小寫

guw命令                :gu是變小寫的操作符,w是位移.

guw命令                :gu是變大寫的操作符,w是位移.

g~w命令                :將字母的大小寫進行反轉,大寫變小寫,小寫變大寫.

gugu命令               :使一整行變為小寫,簡寫為guu,同理gugu guu g~g~ g~~.

9.9 使用外部程式

sort < input.txt > output.txt

!5gsort       :!過濾操作符,5g為移動命令,決定了將哪個區域送到過濾程式中.

!!date        :!!命令過濾當前行,date命令顯示當前時間.

:read !ls     :讀取當前目錄下的內容.

:write !wc    :將文字寫入乙個命令wc中,wc命令是統計行數,單詞數,字元數.

大刀闊斧,抽絲剝繭 評紅黑樹系列文章

大刀闊斧,抽絲剝繭 評紅黑樹系列文章 二零一一年一月三十日 i 教你透徹了解紅黑樹 ii 紅黑樹演算法的層層剖析與逐步實現 iii 教你徹底實現紅黑樹 紅黑樹的c原始碼實現與剖析 iv 一步一圖一 一定要讓你真正徹底明白紅黑樹 眾所周知,紅黑樹作為二叉查詢樹的一種,在linux核心中,在眾多的資料結...

大刀闊斧,抽絲剝繭 評紅黑樹系列文章

大刀闊斧,抽絲剝繭 評紅黑樹系列文章 二零一一年一月三十日 i 教你透徹了解紅黑樹 ii 紅黑樹演算法的層層剖析與逐步實現 iii 教你徹底實現紅黑樹 紅黑樹的c原始碼實現與剖析 iv 一步一圖一 一定要讓你真正徹底明白紅黑樹 眾所周知,紅黑樹作為二叉查詢樹的一種,在linux核心中,在眾多的資料結...

vim學習筆記

首先安裝vim,接著進行最基本命令的聯絡。在命令列模式下輸入 vimtutor 會開啟乙個文件,按照文件上的步驟進行最基本的使用練習。1 檢視文件編碼 開啟乙個在windows下的文字時中文顯示亂碼,於是網上搜了一下,首先是檢視編碼 set fileencoding 2 查詢替換 s aaa bbb...