命令进阶
- 我们上次研究vim的历史
- 为什么会有行编辑器这种东西
- 竟然是当年
- 没有显示器只有纸的时代的无奈之举
- vim进化到今天
- 依然还有好多人使用
- 而且ssh连接的时候直接vim就很方便
- 命令行还有什么好玩的么?🤔
- 我们学习过用<kbd><</kbd><kbd><</kbd>、<kbd>></kbd><kbd>></kbd>控制缩进
- <kbd><</kbd><kbd><</kbd> 向左一个
shiftwidth - <kbd>></kbd><kbd>></kbd>向右一个
shiftwidth - 如果忘了的话,可以
:h 'shiftwidth'
- <kbd><</kbd><kbd><</kbd> 向左一个
- 如果我们想要多行进行控制呢?
:20,40>20-40行向右一个shiftwidth
:'a,$>a标记到结尾向右一个shiftwidth
%<- 所有行向左一个
shiftwidth
- 所有行向左一个
-
我们如果想要给从4到10行添加分号结尾,应该如何呢?
-
:4,10normal A;- 首先是
range,先打上:4,10 - 然后让这个范围内的东西进入
normal格式再 :4,10normal切换为normal模式- 打一个空格,后面打上命令
A;- A是normal模式下的命令在行尾进入插入模式
- 在最后的位置插入
;
- 整体的命令为
:4,10normal A;
- 首先是
-
思考
- 如果我想在
8,15行添加//应该如何做呢? - 动手试一试!
- 如果我想在
-
但是这些都是执行
vim的内部命令- 我想要执行外部命令
- 比如
shell中的ls可以么?
- 要直接执行外面的命令比如
ls - 我们在前面加上
!就可以- 比如
:!ls - 更复杂一些的
!javac oeasy.java!source o2z.sh!python3 %
- 比如
- 这很方便,直接在vi里面就可以执行命令了
- 而且编译运行能看到报错的结果🤩
- 直接G跳到出错那行就可以!
- 可以直接修改,很爽!!!
- 超爽!!!
- 不过这一行命令执行完了就没了
- 看不见前面执行的结果了
- 我想一直看见前面的命令和执行结果
- 可以么?
- 在
Normal模式下直接按下<kbd>Q</kbd> - 进入Ex-mode
- 全屏执行命令格式
- 可以执行各种命令行
:ls:1,3d:1,7p:visual退回到正常模式
- 可视化模式
visual是vi名字的来源 vi就是ed+ 可视化模式visual
- 能直接挂起vim运行命令么?
- 我们知道我们是从
shell运行vim然后进来的- 如果我们想退出
vim的话需要保存并退出:wq - 如果我不想保存并退出
- 就想切到外面
- 把
vim整个进程先挂起放到后台 - 我们就 <kbd>ctrl</kbd>+<kbd>z</kbd>
- 我们就挂起
vim切出去了
- 如果我们想退出
- 在
shell运行完命令之后fg就可以把vim切回到前台- fg的意思是foreground前台
- 但是我们可以直接不挂起
vim的情况下 - 执行
shell命令么?
:term- 上面切出一个窗口
- 执行命令
exit退出shell
- 上下切换
- <kbd>ctrl</kbd>+<kbd>w</kbd> <kbd>j</kbd> 切换到下方窗口
- <kbd>ctrl</kbd>+<kbd>w</kbd> <kbd>k</kbd> 切换到上方窗口
- 可以切来切去
- 一边修改一边运行
- 这个
:term什么意思
- 什么不会,
:h什么:h :term
- 我们这次研究范围命令执行方法
- 批量控制缩进
:20,40>
- 批量执行普通模式下的命令
:4,10normal A;
- 直接切换到
全屏命令模式ex-modeQ
- 执行外部命令
!javac oeasy.java
- 新开一个termianl窗格
:term
- 这个方式真的很爽!
- 在
vi什么都干了!
- 在
- 命令模式本身可以再提高效率吗?🤔
- 下次再说 👋
[Github地址] (





浙公网安备 33010602011771号