編輯模式
- i 當前字符的前一個字符
- I 進入到首個字符進行編輯
- a 當前字符的後一個字符進行編輯
- A 進入當前的行尾進行編輯
末行模式
命令 | 英文 | 功能 |
---|---|---|
:w | write | 保存 |
:q | quit | 退出,如果沒有保存是不允許退出的 |
:q! | quit | 強制退出 |
:wq | write&quit | 保存並退出 |
:x | 保存並退出 |
重複次數
- 先輸入一個數字在輸入複製的命令也可以是其他命令,表示重複執行這個命令多少次
移動和選擇
- h 左邊移動
- j 向下移動
- k 向上移動
- l 向右移動
行內移動
- w 向右邊移動一個單詞
- b 向左邊移動一個單詞
- 0 表示移動到行首
- ^ 移動到第一個不是空白字符的位置
- $ 移動到行尾
- 舉一反三:向後移動三個單詞 3w
行數的移動
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件頂部 |
G | go | 文件末尾 |
數字gg | go | 移動到對應數字的行 |
數字G | go | 移動對應數字的行數 |
:數字 | 移動到對應數字的行數 |
屏幕移動
命令 | 英文 | 功能 |
---|---|---|
Ctrl+b | back | 向上翻頁 |
Ctrl+f | forward | 向下翻頁 |
H | Head | 屏幕頂部 |
M | Middle | 屏幕中間 |
L | Low | 屏幕底部 |
段落的移動
命令 | 功能 |
---|---|
{ | 上一段落 |
} | 下一段落 |
括號切換
命令 | 功能 |
---|---|
% | 匹配成對的[] {} () |
標記
- 在開發的時候,某一塊代碼可能需要稍後處理,例如編輯查看
- 此時使用m增加一個標記,這樣就會快速的找到指定的位置
- 標記名稱可以使az或者AZ中的任意一個字母
- 添加了標記行的代碼被刪除後,標記也會被刪除
- 如果在其他行添加了相同的標記,之前添加的標記就會被替換掉
標記
命令 | 英文 | 功能 |
---|---|---|
mX | mark | 添加標記x,x是az或者AZ之間的任意一個字母 |
'X | 直接定位到X標記所在的位置 |
選中文本
命令 | 英文 | 功能 |
---|---|---|
v | 可視模式 | 從光標位置開始按照正常的模式選擇文本 |
V | 可視模式 | 選中光標經過的完整行 |
Ctrl+v | 可視化模塊 | 垂直方向選中文本 |
撤銷和恢復撤銷
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤銷上次命令 |
Ctrl+r | redo | 恢復撤銷命令 |
刪除文本
命令 | 英文 | 功能 |
---|---|---|
x | cut | 刪除光標所在字符,或選中文字 |
d(移動命令) | delete | 刪除移動命令對應的內容 |
dd | delete | 刪除光標所在的行 |
D | delete | 刪除至行尾 |
舉一反三:
dw #從光標的位置向後刪除一個單詞
d0 #從光標的位置刪除到行首
d} #刪除這一段到段尾
ndd # 從光標的位置向下連續刪n行
d代碼行G # 從光標所在的行刪除到指定的代碼行
d'a # 從光標所在位置刪除至標記a之間所有的代碼
替換
r replace 替換當前這個字符
R replace 替換光標後面的字符
查找
/python 查找所有Python的字符串
n: 查找下一個
N:查找上一個
替換
全局替換
:%s/舊文本/新文本/g
可視區塊替換
😒/舊文本/新文本/g
確認替換
:%s/舊文本/新文本/gc
//執行命令的時候會提示是否需要替換這個舊文本
- y yes
- n no
- a all
- q quit
- l last 最後一個,並把光標移動到行首
- ^E 向下滾屏
- ^Y 向上滾屏
插入命令
在vi的操作中有6種編輯模式需要我們來掌握
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在當前字符的前插入文本 | |
I | insert | 在行首插入文本 | |
a | append | 在當前字符後添加文本 | |
A | append | 在行末添加文本信息 | |
o | 在當前行後面插入空白行 | ||
O | 在當前行的上面添加空白行 |
編輯命令和數字的連用
例如在開發中需要輸入100個*號,如果一個個輸入,那就太麻煩了
- 輸入100,表示需要重複輸入10次
- 輸入i進入編輯模式
- 輸入*也就是重複的文字
- 按下Esc返回到嗎嗎,命令模式,返回後vi就會把之前2,3步的操作執行99遍
這也就提示我們在編輯之前千萬不要按數字
對多行代碼添加註釋
在python中如果要註釋代碼需要在行首添加一個#
在開發過程中,我們經常需要給多行進行註釋步驟如下:
- 在命令模式下使用0進入行首
- 按住Ctrl+V進入可視化模塊
- 使用HJKL左下上右進行選擇需要註釋的行
- 使用I 注意是大寫的進入編輯模式
- 給其中一行添加註釋
- 使用Esc命令返回命令模式,就會自動註釋選中的行了
末行命令擴展
命令 | 英文 | 功能 |
---|---|---|
:e . | edit | 打開內置的文件瀏覽器,瀏覽當前目錄下的文件 |
:n 文件名 | new | 新建文件 |
:w 文件名 | write | 另存爲,但是任然編輯的是當前文件 |
拷貝和移動文件
序號|命令|對應的英文|作用
01|tree[目錄名]|tree|以樹狀圖列出目錄結構
02|cp 源文件 目標文件|copy 複製文件或者目錄
mv|mv 源文件 目標文件|move|移動文件或者目錄
cp 是複製文件的命令,是將文件或者目錄複製到另外一個目錄中去
選項|含義
-f|已經存在的目標文件直接覆蓋
-i|覆蓋文件前會提示
-r|若給出的源文件是目錄文件,則cp將遞歸複製該目錄下的所有子目錄和文件,目標文件必須是一個目錄名
rm 命令
使用rm刪除文件不能恢復
rm -f 強制 忽略不存在的文件,無需提示
rm -r 遞歸刪除目錄下的文件刪除文件夾時必須添加此參數
查看命令
- cat命令 查看內容比較少的文件,會一次性展示所有的內容
- -b 對非空行輸出編號
- -n 對所有的行輸出編號
- more more命令可以用於顯示內容,每次只顯示一頁的內容
- 空格 顯示下一屏
- Enter 一次滾動手冊頁的一行
- b 回滾一屏
- f 前滾一屏
- q 退出
- /word 搜索相關的字符串
grep命令
使用grep對文件進行搜索,模式查找
hbubuntu~: grep -i biaoge hello.py //顯示包含biaoge的行,忽略大小寫
hb$ubuntu~: grep -v biaoge hello.py //顯示不包含biaoge的行
兩種獨特的模式查找
^a 行首,搜索以a開頭的行
ke$ 行尾以ke結束的行
重定向文件操作 > 和 >>
- echo hello python > a.txt 將hello python文件寫入到a.txt這個文件中
也就是將需要輸入到控制檯中的信息重定向到文本信息中,這類的命令還有ll cat - echo hello world >> a.txt # 這個表示在a.txt這個文件中追加相應的內容
管道|
在 linux中可以理解爲管道是一個命令的輸出通過管道作爲另一個命令的輸入
常用的管道命令有 more grep
hbKaTeX parse error: Expected 'EOF', got '#' at position 35: …| grep Desktop #̲ 這裏表示查找桌面目錄列表下面…ubuntu~: ls -lha ~ | more 分屏顯示查詢列表信息
關機選項
shutdown [選項] [時間]
# shutdown -r now 重新啓動 表示現在立刻重啓
# shutdown now 立刻關機
# shutdown 默認一分鐘後自動關機
# shutdown 20:25 今天晚上8點25分鐘關機
# shutdown +10十分鐘後關機
# shutdown -c 取消之前的關機計劃
SSH客戶端的簡單實用
ssh [-p port] user@remote
ssh -p 22 [email protected]
scp 命令
scp就是secure copy 是一個在linux下來進行遠程拷貝文件的命令
# 把本地當前目錄下的 01.py 文件複製到遠程 家目錄下 Desktop/01.py
scp -P port 01.py hb@192.168.60.10:Desktop/01.py
# 把遠程家目錄下的 Desktop/01.py 文件 複製到本地當前目錄下的 01.py文件
scp -P port hb@192.168.60.26:Desktop/01.py 01.py
# 加上 -r 選項可以傳送文件夾
# 把當前目錄下的demo 文件件 複製到遠程家目錄下
scp -r demo user@192.168.60.29:Desktop
# 把遠程 家目錄下的Desktop複製到當前目錄下的demo文件夾
scp -r user@192.168.60.29:Desktop demo
設置服務器免密碼登錄
在命令行裏面輸入 ssh-keygen 三次回車後就生成了加密文件
ssh-copy-id -p port user@remote 可以遠程服務器記住我們的公鑰
配置別名
ssh 每次登錄都需要輸入 ssh -p port user@remote 時間久了就會很麻煩
- 在 .ssh文件夾中創建一個config文件
2.在config文件中添加一下內容
Host mac
HostName ip地址 # 遠程的ip
User hongbiao # 遠程的用戶名
Port 22
3 下次我們登錄的時候就只用 ssh mac 就可以了
ls 擴展
- ls -l 可以查看文件夾下的詳細信息 從左到右依次爲:
- 權限 第一個字符如果是d 表示的是目錄
- 硬鏈接數 通俗的講就是有多少種方式可以訪問當前的目錄或者文件
- 擁有者 家目錄下文件/目錄 的擁有者通常都是當前用戶
- 組 在linux中很多時候 會出現組名和用戶名相同的情況
- 大小
- 時間
- 名稱