[TOC]
>[success] # vi/vim
1. 在Linux下一般使用**vi編輯器來編輯文件**,vi既可以**查看文件也可以編輯文件**,因此可以理解成.'**windows平臺**'的文本編輯器'**記事本**'
2. **vim是vi的升級版本**,具備更多的功能
3. vi如果目標文件不存在,會創建新的文件。但是如果新文件沒做編輯,退出后還會消失
>[danger] ##### vi/vim -- 工作模式
~~~
1.linux 的操作形式導致了 'vi/vim'不能像我們使用'windows'筆記本那樣簡單的圖形化隨意操作,需要使用配合各種指令
使用習慣上也是分為三種模式
1.1.'命令模式':進入vim默認的模式,esc 進入
1.2.'編輯模式':按i進入的'a/i/o'也可以進入
1.3.'底行(末行)模式':按下":"(冒號)之后進入到的模式
2.如圖可以看出使用模型為
2.1.通過'vi/vim' 進入文件或者創建文件,此時進入文件為'不可編輯形式'
2.2.此時想編輯文本即進入'編輯模式' 需要輸入'a/i/o' 此時可以進入對應的編輯模式
2.3.當想進入保存或者退出文件編輯等操作使用需要通過輸入":" 進入末行模式
注意:無論是進入末行模式 還是 編輯模式 都需要通過命令模式進入,也就是 '命令和末行相互切換',
'命令和編輯模式相互切換',但是'末行和編輯無法進行相互切換'
~~~
| 模式名 | 含義 |
| --- | --- |
| 命令模式 | 等待輸入的模式 |
| 輸入模式 | 編輯模式,用于輸入文本 |
| 底行(尾行、末行)模式 | 可以輸入指令,搜索,保存 |


>[danger] ##### 初次使用
1. 進入vi之后,是處于「**命令行模式(command mode)**」,您要切換到「**插入模式(Insert mode)**」才能夠輸入文字
2. 「**插入模式(Insert mode)**」,只能一直輸入文字,如果您發現輸錯了字,想用光標鍵往回移動,將該字刪除,就要先按一下「**ESC**」鍵轉到「**命令行模式(command mode)**」再**刪除文字**
3. 退出vi及保存文件,在「**命令行模式(command mode)**」下,按一下 **:** 冒號鍵進入
>[danger] ##### vi/vim 使用
~~~
'注' : 當'vim/vi' 打開不存在的文件的時候,默認會創建文件
1.'vim/vi 文件名' -- 打開或創建文件
2.'a/i/o' 進入編輯模式
2.1.i -- '進入插入模式在光標的當前位置'
2.2.I -- '進去插入模式并且光標到當前行開頭'
2.3.a -- '進去插入模式并且光標到當前光標的下一位'
2.4.A -- '進去插入模式并且光標到當前行的末尾'
2.5.o -- '進去插入模式并且光標到當前光標的下一行產生空行'
2.6.O -- '進入插入模式并且光標到當前行的上一行產生空行'
3.寫完代碼之后,按下esc,退出編輯模式
4.輸入冒號,進入底線命令格式,輸入
4.1.':wq!' -- 強制寫入文件內容且退出vim/vi, write-寫 quit-退出 !-強制性的
4.2.":q!" -- 不保存強制退出
~~~
* 插入
| 命令 | 含義 |
| --- | --- |
| i | 在當前位置插入 |
| a | 在當前光標右邊插入 |
| A | 在當前光標右的行末插入文件 |
| o | 在光標所在行的下方插入一行并切換到輸入模式 |
| O | 在光標所在行的上方插入一行并切換到輸入模式 |
| s | 刪除當前光標位置并插入 |
* 底行模式
| 命令 | 含義 |
| --- | --- |
| :w | 把寫入保存到硬盤中 |
| :q | 退出當前VI編輯器打開的文件 |
| :wq! | 強制保存 |
| :s/old/new | 把光標所在行的old替換成new |
| :s/old/new/g | 把所有行的old替換成new |
>[danger] ##### 想給文本顯示行號標記
~~~
1.顯示行':set nu'
2.取消':set nonu'
~~~
>[danger] ##### 移動光標
~~~
1.有些電腦鍵盤沒有上下左右鍵因此在命令模式移動光標
1.1.h -- 左
1.2.l -- 右
1.3.j -- 下
1.4.k -- 上
2.'G' -- 移動光標到文檔尾行
3.'gg' -- 移動標到文檔第一行
4.'G+數字' -- 可以移動光標到指定行,例如移動到11行 '11G',可以直接(':+數字')
5.'^' -- 移動光標到這一行的開頭 (數字0 也有一樣的效果)
6.'$' -- 移動光標到這一行的結尾
7.'H' -- 移動光標到屏幕首行注意是屏幕所能展示的文章首行
8.'M' -- 移動到光標到屏幕的中間一行
9.'L' -- 移動光標到屏幕的尾行
10.'w(e)' -- 移動光標到下一個單詞
11.'b' -- 移動到光標上一個單詞
~~~
| 命令 | 含義 |
| --- | --- |
| h | 光標左移 |
| j | 光標下移 |
| k | 光標上移 |
| l | 光標右移 |
>[danger] ##### 分頁
~~~
1.'ctr1+f' -- 下一頁
2.'ctrl + b' -- 上一頁
~~~
| 命令 | 含義 |
| --- | --- |
| ctrl+f | 向下翻頁 |
| ctrl+b | 向上翻頁 |
| ctrl+d | 向下翻半頁 |
| ctrl+u | 向上翻半頁 |
| 0 | 移到文章的開頭 |
| G | 移動到文章的最后 |
| $ | 移動到光標所在行的"行尾" |
| ^ | 移動到光標所在行的"行首" |
| w | 光標跳到下個字的開頭 |
| e | 光標跳到下個字的字尾 |
| b | 光標回到上個字的開頭 |
| #l | 光標移到該行的第#個位置,如:5l,56l |
>[danger] ##### 搜索(查找)文字
| 命令 | 含義 |
| --- | --- |
| / | 輸入/可以在當前的文件中查找該字符串 |
| n | 查找下一個 |:
| Shift-N | 查找上一個 |
~~~
1.'/' 查找順序向下查找字符串 ,舉個例子想查找文本中'我'這個字,輸入'/我' 然后回車,使用'n'進行跳轉下一個字符串
2.'?' 查找順序向上查找字符串,其他同理
// ----------------上面查找的是任意字符串,下面的只能針對單詞------------------
3.'*' -- 查找整個文檔,匹配'光標'所在的所有'單詞',按下n查找下一處,N上一處
4.'#' -- 查找整個文檔,匹配'光標'所在的所有'單詞',按下n查找下一處,N上一處
5.'%' -- 找到括號的另一半
~~~
>[danger] ##### 復制、刪除、粘貼、更改
| 命令 | 含義 |
| --- | --- |
| dd | 刪除光標所在行 |
| y | 進入塊模式后可以復制選中內容 |
| yw | 復制單詞 |
| yy | 復制光標所在的行 |
| p | 在光標所在行的下方粘貼 |
| P | 在光標所在行的上方粘貼 |
|x|刪除當前字符|
* 復制
~~~
1.'yy' -- 拷貝光標所在行內容
2.復制多行 'yy行數' 例如 復制3行'yy3'(當前行往下三行,包括當前行)
3.'y$' 復制當前光標位置到這一行的結尾字符
4.'#yy' -- 例如,「6yy」表示拷貝從光標所在的該行"往下數"6行文字。
~~~
* 粘貼
~~~
1.'p' -- 粘貼復制內容
2.'數字+p' -- 將復制內容粘貼幾遍,例如'2p' 將復制內容粘貼兩次
~~~
* 剪切(等同刪除)
~~~
注:如何配合'p' 則是剪切功能,如果只是單純使用下面指令'刪除'
1.'dd' -- 刪除光標所在'行',如果在使用'p' 怎將內容粘貼出來(5dd刪除光標所在5行)
2.'d$' -- 刪除從當前'光標'到'這一行的結尾' (等同'D') ,同理配合'p'
3.'#dd' -- 從光標所在行開始刪除#行
4.'dG' -- 刪除當前行到文檔尾部的內容,同理配合'p'
5.'x' -- 向后刪除字符,同理配合'p'
6.'X' -- 向前刪除字符,同理配合'p'
7.'#x' -- 例如,「6x」表示刪除光標所在位置的"后面"6個字符。
8.'#X' -- 例如,「20X」表示刪除光標所在位置的"前面"20個字符
~~~
* 更改
~~~
1. 'cw' -- 將光標所在處的字到字尾處字刪掉并且進入編輯模式
2. 'c#w' -- 例如,「c3w」表示更改3個字,刪掉并且進入編輯模式
~~~
>[danger] ##### 撤銷 和 重做
| 命令 | 含義 |
| --- | --- |
| u | 撤消最后執行的一次命令 |
~~~
1.'u' -- 撤銷上一步操作
2.'ctrl +r'相當于 'win的ctrl+y'
~~~
>[danger] ##### 替換指定字符
~~~
1.r+新字符 -- 字符替換,光標選中按r 在輸入新字符
~~~
| 命令 | 含義 |
| --- | --- |
| r | 替換當前位置字符 |
>[danger] ##### 批量操作(選取功能)
~~~
在正常模式下摁:
1.v -- 字符可視模式
2.V -- 行可視模式
3.ctrl+v -- 塊可視模式
配合插入可以分配插入或者配合刪除剪切這樣進行批量操作
舉例子配合'd' 就可以批量刪除,配合'I' 就可以批量摻入文字
~~~
>[info] ## 快捷操作
~~~
1.刪除光標所在位置到行尾的內容并進入編輯模式C(大寫字母)
2.快速保存并退出ZZ
~~~
>[info] ## swp 文件
[鏈接](https://blog.csdn.net/qq_42200183/article/details/81531422)
>[info] ## 鍵位圖

- 安裝-VMware 虛擬機
- 遠程連接
- Windows -- wsl
- Linux -- 認識 Linux 和操作系統
- Linux -- Linux 和 windows 對比
- Linux -- 命令提示符
- Linux -- 文件目錄
- Linux -- 文件類型
- Linux -- 絕對和相對路徑
- Linux -- 常用快捷鍵
- Linux -- 三種幫助命令
- 幫助命令 -- man
- 幫助命令 -- help
- 幫助命令 -- info
- Linux -- 指令
- alias -- 設置別名
- history -- 查看歷史命令
- cd -- 更改目錄(切換文件夾)
- pwd -- 打印目錄
- ls -- 列出文件內容
- mkdir -- 創建文件夾
- rmdir -- 刪除一個空的目錄
- touch -- 創建普通文件/修改時間
- cp -- 復制粘貼
- mv -- 移動和重名
- rm -- 刪除
- cat/tac -- 查看純文本文件
- more/less -- 分頁讀取信息
- head -- 從文本開頭查看
- tail -- 從文本結尾查看
- cut -- 提取片段
- sort -- 排序
- uniq -- 去重
- wc -- 統計文件的行數、單詞、字節數
- tr -- 替換、縮減或刪除字符
- find -- 文件查找
- grep -- 文件當中匹配字符
- 管道 -- |
- locate -- 第三方文件查找
- whereis -- 查找二進制/源代碼文件 路徑
- which -- 查找環境變量
- 壓縮和解壓
- ln -- 鏈接
- wget -- 下載指定的url資源
- 重定向 -- << /< />/> >
- 邏輯控制 -- &&
- echo -- 輸出指定內容
- date/cal -- 查看日期和日歷
- Linux -- 進程管理
- Linux-- ps 指令
- vi/vim - 文本編輯器
- 更多
- Linux-- 開關機命令
- Liunx -- 退出登錄
- Linux-- 查看登錄用戶信息
- Linux -- 環境變量
- Linux -- 用戶
- Linux -- 文件管理
- 文件權限設置 -- chmod
- 更改文件的擁有者 -- chown
- 默認權限 -- umask
- Linux -- 用戶
- 新建/刪除用戶 -- useradd/userdel
- 修改用戶屬性 -- usermod/chage
- 新建/刪除用戶組 -- groupadd/groupdel
- 用戶切換 -- su/sudo
- 用戶/用戶組的配置文件
- 用戶家目錄被刪除解決
- last、 lastlog命令查看用戶詳細的登錄信息
- Linux -- shell
- Linux -- 管道符號
- shell -- 執行
- shell -- 變量
- shell -- 字符串
- shell -- 數組
- Shell -- declare 設置變量屬性
- shell -- 數學計算
- shell -- 變量作用域
- shell -- 位置參數變量
- shell -- read
- shell - if 語句
- shell -- test
- shell -- case
- Linux -- 循環
- Linux -- 軟件包管理