【linux笔记】vim
启动和退出
启动
vi

退出
q
强制退出
q!
编辑模式
vi foo.txt
创建一个文件,启动后,是命令模式,是不能编辑的,键盘上的按键对应不同的命令。

插入模式
按键盘上的i,进入插入模式

保存内容
:w
移动光标
| 按键 | 光标动作 |
|---|---|
| L | 右移一位 |
| H | 左移一位 |
| J | 下移一行 |
| K | 上移一行 |
| 数字 0 | 至本行开头 |
| ^ | 至本行第一个非空字符 |
| $ | 至本行的末尾 |
| w | 至下一个单词或标点的开头 |
| W | 至下一个单词的开头,越过标点 |
| b | 至上一个单词或标点的开头 |
| B | 至上一个单词的开头,越过标点 |
| Ctrl-F或Page Down | 下一页 |
| Ctrl-B或Page UP | 上翻一页 |
| number-shift-g | 将光标移动到第n行 |
| G | 移动到文件最后一行 |
添加文本
| A | 在文件末尾添加 |
| o | 在当前行的上方加入一行 |
| O | 在当前行的下方加入行 |
删除文本
| u | 撤销操作(vi只可以撤销一步) |
| x | 删除当前字符 |
| 3x | 删除3个字符 |
| dd | 删除当前行 |
| 5dd | 删除5行 |
| dW | 当前字符到下一个字符的起始 |
| d$ | 当前字符到行的末尾 |
| d0 | 当前字符到行的起始 |
| d^ | 当前字符到第一个非空字符 |
| dG | 当前行到末尾 |
| d20G | 当前行到文件第20行 |
剪切、复制和粘贴文件
dd就是剪切操作
| 复制命令 | |
|---|---|
| yy | 当前行 |
| 5yy | 5行 |
| yW | 当前字符到下一个单词开始 |
| y$ | 当前字符到行尾 |
| y0 | 当前字符到行首 |
| y^ | 当前字符到当前行的第一个非空字符 |
| yG | 当前行到文件结尾 |
| y20G | 当前行到第20行 |
p命令将复制的内容粘贴到当前行的下方,P命令将复制的内容粘贴到当前行的上方。
合并行
将光标所在行与下一行合并,J
行内搜索
f在行内进行搜索,并将光标移至搜索到的下一个指定字符。
搜索整个文件
“/”搜索单词,命令n去找下一个
全局搜索和替换
使用ex命令来执行几行之内或整个文件的搜索和替换操作。
:%s /Line/line/gc
| 组成 | 含义 |
|---|---|
| : | 分号用于启动一条ex命令 |
| % | 确定了操作作用的范围。%代表从第一行到最后一行。还可以表示为1,5.。或者是1,$.从第一行到最后一行。如果不指定,知识适用于第一行。 |
| s | 指定了具体的操作,本次为替换操作 |
| /Line/line | 搜索和替换的文本 |
| g | 代指global,如果缺失,那么只替换每一行第一个 |
| c | 在每次替换前,向用户发出询问 |
加入c后出现

他们大的功能是
| 功能键 | 行为 |
|---|---|
| y | 执行替换 |
| n | 跳过本次替换 |
| a | 执行此次替换和之后的所有替换 |
| q | 停止替换 |
| l | 执行此次替换后退出 |
| Ctrl-E,Ctrl-Y | 分别是向下滚动和向上滚动 |
编辑多个文件
vi file1 file2 file3 ...
切换文件
切换下一个文件
:n
切换上一个文件
:N
查看正在编辑的文件列表
:buffers
切换文件
:buffer 2
载入更多文件
:e ls-output.txt
插入整个文件
将光标移动到插入位置
:r foo.txt