首先先来介绍一下vim的常用按键
基本命令
按键 | 描述 |
---|---|
h或←(向左箭头) | 光标向左移动一个字符 |
j或↓(向右箭头) | 光标向下移动一个字符 |
k或↑(向上箭头) | 光标向上移动一个字符 |
i或→(向左箭头) | 光标向右移动一个字符 |
[Ctrl]+[f] | 屏幕向下移动一页,相当于[Page Down]按键 ※ |
[Ctrl]+[b] | 屏幕向上移动一页,相当于[Page Up]按键 ※ |
[Ctrl]+[d] | 屏幕向下移动半页 ※ |
[Ctrl]+[u] | 屏幕向上移动半页 ※ |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n | 20n 条状到第20行 |
0或[Home] | 光标移动到当前行最前面 ※ |
$或[End] | 光标移动到当前行最后面 ※ |
H | 光标移动到当前屏幕的最上方那一行的第一个字符 |
M | 光标移动到当前屏幕最中间那一行的第一个字符 |
L | 光标移动到当前屏幕最下方那一行的第一个字符 |
G | 移动到当前文件的最后一行 ※ |
nG | n为数字,代表移动到这个文件的地n行,20G会跳转到当前文件的第20行 |
N[Enter] | n为数字,代表光标向下移动n行 |
查找与替换
按键 | 描述 |
---|---|
/word | /向下查找 /word表示向下查找名称为word的字符串 n为下一个 N为上一个 |
?word | 向上查找一个名称为word的字符串 n为下一个 N为上一个 |
:s/vivian/sky/ | 替换当前行第一个 vivian 为 sky |
:s/vivian/sky/g | 替换当前行所有 vivian 为 sky |
:n,$s/vivian/sky/ | 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky |
:n,$s/vivian/sky/g | 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky |
n | 为数字,若 n 为 .,表示从当前行开始到最后一行 |
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) | 替换每一行的第一个 vivian 为 sky |
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) | 替换每一行中所有 vivian 为 sky |
:s#vivian/#sky/# | (可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符 )替换当前行第一个 vivian/ 为 sky/ |
:%s+/oradata/apras/+/user01/apras1+ | (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/ |
删除、复制、粘贴
按键 | 描述 |
---|---|
x,X | x向后删除一个字符 X向前删除一个字符 |
nx | n为数字 表示向后删除几个字符 |
dd | 删除光标所在行(整行) |
ndd | 向下删除n行 |
d1G | 删除光标当前所在行到当前所编辑文档的第一行 |
dG | 删除光标所在行到最后一行数据 |
d$ | 从当前光标所在位置开始删除到本行末尾 |
d0 | 删除光标所在行到本行开头 |
yy | 复制光标所在行 |
nyy | 从当前光标开始向下复制n行包括当前行 |
y1G | 复制光标所在行到本文档第一行所有数据 |
yG | 复制光标所在行到本文档最后一行的所有数据 |
y0 | 复制光标所在字符到该行句首的所有数据 |
y$ | 复制光标所在字符到该行句尾的所有数据 |
p,P | 将复制的内容进行粘贴 (小写)p粘贴在当前行下一行 (大写)P当前行的上一行 |
u | 撤销修改 |
. | 重复当前命令 |
一般模式切换到编辑模式
按键 | 描述 |
---|---|
i,I | 進入插入模式(Insert mode):i 為『從目前游標所在處插入』, I 為『在目前所在列的第一個非空白字元處開始插入』。 (常用) |
a,A | 進入插入模式(Insert mode):a 為『從目前游標所在的下一個字元處開始插入』, A 為『從游標所在列的最後一個字元處開始插入』。(常用) |
o,O | 進入插入模式(Insert mode):這是英文字母 o 的大小寫。o 為『在目前游標所在的下一列處插入新的一列』; O 為在目前游標所在處的上一列插入新的一列!(常用) |
r,R | 進入取代模式(Replace mode):r 只會取代游標所在的那一個字元一次;R會一直取代游標所在的文字,直到按下 ESC 為止;(常用) |
一般指令模式切換到指令列模式的可用按鈕說明
按键 | 描述 |
---|---|
:w | 將編輯的資料寫入硬碟檔案中(常用) |
:w! | 若檔案屬性為『唯讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案權限有關啊! |
:q | 離開 vi (常用) |
:q! | 若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。注意一下啊,那個驚嘆號 (!) 在 vi 當中,常常具有『強制』的意思~ |
:wq | 儲存後離開,若為 :wq! 則為強制儲存後離開 (常用) |
ZZ | 這是大寫的 Z 喔!若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存後離開! |
:w | [filename] 將編輯的資料儲存成另一個檔案(類似另存新檔) |
:r | [filename] 在編輯的資料中,讀入另一個檔案的資料。亦即將 『filename』 這個檔案內容加到游標所在列後面 |
:n1,n2 w [filename] | 將 n1 到 n2 的內容儲存成 filename 這個檔案。 |
:! command | 暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如『:! ls /home』即可在 vi 當中察看 /home 底下以 ls 輸出的檔案資訊! |
vim | 環境的變更 |
:set nu | 顯示行號,設定之後,會在每一列的字首顯示該列的行號 |
:set nonu | 與 set nu 相反,為取消行號! |
博主推荐链接
常用的一些快捷键
Ctrl-W 左右切换
Ctrl-o 执行后退,使用 Ctrl-i 执行前进
Ctrl-d 减少缩进,使用 Ctrl-t 增加缩进
Ctrl-x 数字加大 Ctrl-a 全选并复制
Ctrl-c 退出历史编辑,但此时历史编辑窗口不关闭 等于Esc
:e! 返回上次保存后的状态删除
echo > 文件 删除文档内容
echo >>文件 aaa 追加文件末尾