实验5 vim的使用
一、两种模式:
命令行模式和编辑模式(前者还有底行模式,命令行模式输入:就是底行模式)
切换方法:进入vim后默认在命令模式,可以通过输入a后者i进入编辑模式,或者(命令行模式下)通过输入:进入底行模式
编辑模式到命令模式:ESC
二、vim的进入和退出
进入:
1.vim 回车进入vim编辑文件
2. vim 文件名字,编辑某文件
3.vim file1 file2 ……编辑多个文件
4.vim –f file 上次编辑时发生系统崩溃,通过这个命令可以恢复。
退出:首先进入命令模式
1.:w 保存
2.:q 退出
3.:w filename 保存为某文件名
4.:x ZZ :wq 保存并退出
5.:q! 强制退出
三、编辑
1.怎么编辑
任何时候按下ESC键会进入普通模式.普通模式下可以按下: 来输入命令.
普通模式按下i或a 进入插入模式,这时你可以编辑文本。
2.简单编辑
- (命令行模式下)移动光标 :你可以直接用方向键来移动光标, 更vim些的做法是hjkl(hl为左右移动,kj为上下移动)
- 撤销操作 :u 或者命令模式下按下u
3.更快的编辑
现在你可以用vim写东西了.
我们需要更快的编辑
1.快速的定位光标:
- ^ 跳到行首 (类似功能键Home)
- $ 跳到行尾(类似功能键End)
- :n 跳到第n行
- :$ 跳到最后一行
2. 快速的编辑:
在命令模式下:
- dd 删除一行,剪切一行
- yy 复制一行
- p 粘贴
- r 单个字符替换(不要求) (先按r再按要替换成的字符)
- x删除一个字符(不要求)
3. 更精细的粘贴复制:
- :m,nd - 快速删除第m到第n行 (delete)
- :m,ny - 复制第m到第n行 (yank)
- :m,nmt - 第m行到第n行剪切到第t行(move)
- :m,ncot -第m行到第n行复制到第t行(copy to)
4. 操作回退,重复
u 操作回退
. 前进
5.对齐
gg=G 快速对齐整个文件(⽂本按语法对齐)
6.查找和替换
- :/字符串 从光标处向文件尾搜索
- :?字符串 从光标处向文件头
7. 多文件编辑
打开多个文件 vim file1 file2 file3 ……
- :n 编辑下一个文件
- :2n 编辑下两个文件
- :N 编辑前一个文件
- :f显示当前编辑文件信息
- :ls显示编辑的所有文件
- :e filename 再打开某文件
- :r!command 把命令的输出写入到当前位置(不要求)
- :r filename 读取filename文件,并将其内容添加到当前文件后
- :qa退出所有文件(不要求)
- (6)vi打开多文件
- vi a b c
- :n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
- :e# 回到刚才编辑的文件
- (7)文件浏览
- :Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
- :Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
- :ls 显示当前buffer情况
- (8)vi与shell切换
- :shell 可以在不关闭vi的情况下切换到shell命令行:可以用于进程前后台切换的部分内容
8.Vim中运行shell命令
- :sh 进入shell ,操作后,在终端输入exit,回到vim
三、vim环境设置命令(vim环境是指vim运行时的运行方式。在末行模式下,可以通过set命令进行设置。Set后面加选项名来进行该功能选项的设置,如果选项名前输入no,则表示关闭该选项)
也可在vim进入后在底行模式下(命令行模式下)设置
:set number在编辑文件时显示每行的行号等同于:set nu命令
:set nonumber
:set all 显示所有可以设置的选项
:set autoindent 自动缩进,与上一行相同
:set warn 显示未保存警告
:set ruler 屏幕底部显示光标所在行列位置
练习:
在底行模式下设置显示行号:
set nu;
显示光标位置:
set ruler;
在第19行下,添加printf(“I am parent!\n”):
:19
在第29行下,添加printf(“I am child1!\n”):
:29
在第46行下,添加printf(“I am child2!\n”)
:46
回退最后两次的操作,前进一次:
:u:u:.
查询文件中的read,标出行号
跳到第28行,删除它:
:28回车,按下dd
对齐整个文件:
命令模式下直接按gg=G
将第10行到第17行的内容复制到第19行以后
:10,17co19;
将第10行到第17行的内容移动到第5行以后:
:10,17m5
采用多文件编辑的方法,打开新文件yourname.c,将fifo.c的内容复制到新文件
:vim yourname.c fifo.c
:r fifo.c
:qa