linux vi 编辑器的学习
1.为什么要学习vi?
因为vi是所有 UNIX-like 系统都会默认内置的文本编辑器,而且很多程序都调用vi的接口进行编程,所以学了不亏。
VIM是VI的高级版本,多了代码高亮等一些高级功能。
2.VI的模式
总共有三种: 一般命令模式,编辑模式,命令行模式
刚进入一个文件就是一般命令模式,按下 i l o O a A r R 进入编辑模式,可以操作文本,按下ESC退出编辑模式,在编辑模式按 : 则进入命令行模式,可以输入特定命令执行替换,查找,退出等操作。
3.常用命令
[n] + h j k l 分别往左 下 上 右 移动 n 个字符
PAGEUP 上一页 PAGEDOWN 下一页
[n] + <space> 往后移动 n 个字符
HOME 光标所在行的第一个字符 END 光标所在行的最后
G 移动到最后一行 [n]G 移动到第n行 gg 移动到第一行,相当于 1G [n]<ENTER> 往下移动 n行
/[word] 查找关键字 word 查找到后按n则查找下一个 大写N 上一个
:[n1],[n2]s/[word1]/word2/g 在 第 n1 到 n2 行中查找 word1 并替换为 word2
:1,$s/[word1]/word2/g 第 1 到 最后 行中查找 word1 并替换为 word2
:1,$s/[word1]/word2/gc 第 1 到 最后 行中查找 word1 并替换为 word2,带有确认选项
x 后删除一个字符 X 前删除一个字符 [n] x 后删除n个字符
dd 删除一行 [n]dd 删除n行 d1G 删除光标到第一行 dG 光标到最后 d$ 光标到该行最后 d0 光标到该行开始
以上删除都带有剪切
yy 复制当前行 [n]yy 向下复制n行 y1G yG y$ y0 同删除
p P 向上/下粘贴
J 该行和下一行合并 u 撤销 [Ctrl] + r 前进
小数点 . 重复前一个操作
i I 当前光标插入,I 所在行第一个非空格符开始插入
a A 光标所在下一个字符插入 A 所在行最后一个字符插入
o O 插入新行, O 上一行插入
r R 只替换一个字符 大写 无限制
:w 写入硬盘,相当于保存 :w! 强制写入和权限有关 :q 退出 :q! 强制退出 :wq 保存后退出
ZZ 有修改则保存退出,否则不保存退出 :w[filename] 保存成另一个文件 :r [filename] 追加filename 的内容到光标后
:set nu 设置行 :set nonu 取消行
:! [commond] 暂时退出执行 commond命令
4. 缓存的处理
如果在编辑vim的时候意外关闭,会生成,XXX.swp缓存文件,这时候重新打开会出现报错界面
解决方法: O 只读方式打开 E 编辑方式打开 R 加载缓存 D 删除缓存 Q 退出vim A 忽略
个人觉得,没用直接rm -rf 删了吧,这样就不会一直提示报错界面了
5.可视区块
v 选中光标经过的地方 V 选中光标经过的行 Ctrl + v 矩阵选中 y 复制选中的地方 d 删除选中的地方 p 粘贴
6.vim编辑多个文件
vim hosts /etc/hosts 后面加多个文件就可以同时编辑多个文件
:n 编辑下一个文件 :N 编辑上一个文件 :files 列出正在编辑的文件
7.多窗口功能
:sp [filename] 即可在当前界面打开filename的内容
可以通过 Ctrl + w + j/方向键下 Ctrl + w + k/方向键下上 上移或者下移
:close关闭当前窗口 Ctrl + w +q 不知道为啥没用
8.补全功能
Ctrl + x 然后输出 Ctrl + n 文件内容作为关键字补全
Ctrl + x 然后输出 Ctrl + n目录文件名作为关键字补全
Ctrl + x 然后输出 Ctrl + o 拓展名语法补充补全 比如在html文件中,输入style 然后紧跟着输入b,执行命令后就会出现 background等单词.
9. 换行转换
Dos系统和Linux系统的换行符号不同,会造成在Dos系统编辑的文件在linux无法运行
使用 dos2unix unix2dos 来互相转换
9.编码转化
iconv -f utf8 -t gbk welcome.txt -o welcomt_gbk.txt
把utf8编码的welcome.txt 转化为 gbk编码的welcome.txt,并 -o 保留源文件