一、文本編輯器VIM:
vim和vi的差別
vim介紹:
vim是unix作業系統中的文本編輯器
vim=vi+IMproved:加入了多級撤銷、文法高亮和自動補全、
支援多種插件、可通過網絡協定(HTTP/SSH)編輯檔案、支援多檔案編輯、可編輯壓縮格式的檔案
vimrc配置
rc=run+command:每一行作為一個指令進行執行
分系統級别的vimrc和使用者級别的vimrc
快捷鍵
eg:
1、終端輸入
vim test
表示已vim文本編輯器打開test.txt,這時為普通模式
2、進入之後輸入
:
進入編輯模式
3、當輸入
3.1
:h vimrc
表示幫助顯示vimrc的資訊,這時可以檢視什麼時vimrc的定義,如果要退出幫助界面回到編輯界面,輸入
3.2
:q
直接enter鍵即可
3.3
:q!
表示不儲存目前修改,直接退出
3.4
/××××
表示高亮顯示内容為××××的内容
3.5
××××?
表示查找内容為××××的位置
3.6
點選
i
表示進入插入模式,這時開始可以修改檔案
3.7
點選
Esc
表示退出編輯模式
4、若打開之後輸入
:version
可得到vim的版本資訊,同樣以3的退出方式退出vim編輯器
5、可在終端輸入
vim ~/.vimrc
打開vimrc檔案
6、vimrc中的注釋方式為單引号
"
開始
7、終端可輸入
clear
清除曆史指令
vim四種不同模式
普通模式:打開檔案之後的預設模式,可以進行移動查找删除修改等操作
可視模式:可對一整區操作
打開檔案之後,輸入
v
即可進入可視模式,這個時候移動光标即可選中一整塊區域,如果想删除,直接點選
d
即可删除這塊内容
插入模式:可添加文本
打開檔案之後,輸入
i
即可進入插入模式,這個時候就可以在檔案中添加内容
指令模式:和普通模式類似
即先輸入
:
再輸入其他指令
如上面的
:version
可檢視版本
在學習下面的操作之前,可vim一個檔案,再輸入
:h operator
檢視支援的操作指令
二、移動、跳轉與縮進
光标的移動
h左移;l右移;j下移;k上移;$移動到行尾;0(包含縮進)或shift+6(不包括縮進)移動到行首
單詞和字元串移動
w/W正向移動到下一個單詞開頭
b/B反向移動
e/E正向移動下一單詞結尾
ge反向
跳轉
ctrl+f/F下一頁
ctrl+b/B上一頁
ctrl+d/u向下/上翻半頁
G跳轉至檔案的最後一行
{g}+ctrl+g/G檢視檔案資訊/{g}更加詳細
<line_number>gg/G跳轉到指定行
縮進
>>表示目前行右縮進
<<表示目前行左縮進
:m,n>表示進入指令模式,m到n行縮進
:m>n等同于:m,m+n-1表示指令模式m行開始共n行縮進一次
三、剪切、複制、粘帖、撤銷和恢複重做(vim當中對應的單詞為delete、yank、put、undo和redo(ctrl+r))
首先
:reg
進入寄存器
剪切:
dd表示删除整行
複制:
yy表示複制整行
yw表示複制目前光标單詞
y2w表示複制正向兩個單詞(可以為n個)
p/P表示粘帖到光标後/光标前
四、調換字元:
vim打開檔案之後,查找某個字元可直接點選
f+
需要查找的字元(eg:空格或其他字元)
+x
就會跳到最近查找字元的位置,并且删除該字元,這時再按下
p即可進行粘貼
五、組合删除:
格式為:[count]operation([count]{motion})
eg:2d3w表示正向删除三個單詞;5dw表示正向移動5次删除單詞
x/X表示删除光标下/前單個字元
dw表示删除一個單詞
d{hljk}表示删除上下左右一個操作前的字元
d$表示删除光标到行尾的字元
d^或d0表示删除光标到行首的字元
六、修改、查找和替換
插入:
shift+i/A表示插入模式并移動到行首/尾
a/i表示光标後/前插入
[n]+O/o:表示行前/後插入n次
[n]+i:表示插入模式重複n次,即寫入要插入的内容之後,按下Esc,會自動填充n遍到文本當中
轉換:
~表示單個大小寫的轉換
g~w表示單詞大小寫轉換
g~$/g~~表示整行大小寫轉換
gU/uw表示單詞轉換為大/小寫
查找:
F/f+字元:表示反向/正向查找單個字元
t+字元:表示查找字元前一個字元
dt+字元:删除光标到查找字元間的字元
/+字元:指令行查找,再跳過n進行next的切換
替換(substitute):
[range]s[ubstitute]/{pattern}/{string}/[flags]
s/going/rolling/g:表示目前行所有going替換為rolling
%s/going/rolling/g:表示%比對所有範圍,所有範圍都進行替換
shift+r/R:表示進入替換模式,可以直接替換
r:單個字元的替換,可直接修改
cw:修改單個單詞,就會删除目前單詞,再進行替換(change word)
c$:修改光标之後行内容,就會删除從目前位置到行尾的内容
七、vim寄存器/贈查删改等正常操作/vim組合規律
寄存器:
有多種,且每種功能也不一樣
無名寄存器:預設寄存器
數字寄存器:0用于複制專用寄存器,1-9對應不同的寄存器
有名寄存器:26個英文字母
黑洞寄存器:隻想删除,想當于删除
八、緩沖區與多檔案編輯/多視窗與标簽分組/文本對象和宏/visual模式
緩沖區和多檔案編輯
緩沖區:buffer是記憶體中的緩沖區域,用于臨時存放vim打開過的檔案
緩沖區清單:
指令檢視緩沖區清單
:files
:buffers
:ls
緩沖區清單訓示狀态:
a表示激活緩沖區,緩沖區被加載且顯示
h表示隐藏緩沖區,緩沖區被加載但不顯示
%表示目前緩沖區
#表示交換緩沖區
=表示隻讀緩沖區
+表示已經更改緩沖區
-表示不可更改緩沖區
緩沖區清單的操作:
:bp表示上一個緩沖區(previous)
:bn表示下一個緩沖區(next)
:bf表示第一個緩沖區(first)
:bl表示最後一個緩沖區(last)
:buffer Nmuber或File_name表示指定緩沖區
:ball表示編輯所有緩沖區
ctrl+^/b#表示切換到前一個buffer
:bd + ×××.txt表示删除名字為×××的緩沖區(delete)
:%bd表示删除所有緩沖區
多視窗操作(分屏)及标簽分組
标簽包括多個視窗,相當于容納一系列視窗的容器,每個視窗包括一個buffer
分屏操作:(w可表示為window)
eg:vim -o4 buf-*表示垂直方向打開四個已buf開頭的檔案
vim -O/on表示水準/垂直分屏
ctrl+w c/q表示關閉目前視窗/最後視窗時退(close,quit)
ctrl+w s表示上下分割目前打開的檔案(split)
:sp filename表示上下分割,并打開一個新的檔案
ctrl+w v表示左右分割目前打開的檔案(vsp)
:vsp filename表示左右分螢幕,并打開一個新的檔案
移動分屏和尺寸變換:
ctrl+w K表示向上移動
ctrl+w J表示向下移動
ctrl+w H表示向左移動
ctrl+w L表示向右移動
ctrl+w +表示增加高度
ctrl+w -表示減少高度
ctrl+w =表示所有屏高度一緻
标簽操作:
:tabnew表示建立标簽
:tabfind+×××.txt表示查找并在新标簽中打開檔案
:tabs顯示已打開标簽頁的清單
:tabclose表示關閉目前頁的标簽
:tabonly表示僅保留目前标簽頁打開
:tabn/p/first/last表示移動到下/上/第一/最後一個标簽頁(next/previous/first/last)
:tabm表示將目前頁放置到指定位置
标簽操作和指令鍵:
gt/T表示移動到下/上一個标簽
{i}gt表示移動到i位置的标簽
:tabe編輯标簽中的某個檔案
tabm 0/tabm表示移動目前tab到第一個/最後一個(m表示move)
tabm{i}表示移動目前tab到i+1位置
檔案對象和宏:
文本對象是在可視化模式下的表現,一般包括
w:word s:sentence p:paragrapg 塊對象
可視化模式下的指令
viw表示選中單詞
vis表示選中句子
vip表示選中段落
vi(表示選中圓括号中的内容
vi[表示選中中括号中的内容
vit表示選中标簽中的内容
同時可以帶上數字,進行組合操作
eg:v3aw表示選中三個單詞,包括中間的兩個間隔空格
v3iw表示選中三個單詞,指兩個單詞和一個空格,總共三個
宏的簡單操作(類似于函數,將你的操作進行存儲,再進行批量操作):
qa開始錄制宏存到寄存器a中
qA追加宏在a寄存器中追加
[email protected]執行n遍a寄存器中的操作(@表示調用寄存器,執行完畢之後直接點選q即可退出寄存器)
@@再執行一遍上一次操作
:let @a= '編輯宏a寄存器
:n,mnormal @a表示n到m行執行寄存器a宏操作
visual模式
在可視化模式下,可以對一個文本塊進行整體操作
三種子模式:
v表示激活面向字元的可視模式 V/shift+v表示激活面向行的可視模式 Ctrl+v表示激活面向列塊的可視模式
可視化操作:
gv表示重新選擇上一次的選中區域
o表示切換選取邊界,即在選中區域的兩端進行切換
具體實踐:
eg:進行整行的替換
先V選中整行,再r+&即將整行變成&