oeasy教您玩转vim - 49 - # 命令进阶
命令进阶
回忆上节课内容🤔
我们上次研究vim的历史
为什么会有行编辑器这种东西
竟然是当年
没有显示器只有纸的时代的无奈之举
vim进化到今天
依然还有好多人使用
而且ssh连接的时候直接vim就很方便
命令行还有什么好玩的么?🤔
缩进控制
我们学习过用<kbd><</kbd><kbd><</kbd>、<kbd>></kbd><kbd>></kbd>控制缩进
<kbd><</kbd><kbd><</kbd> 向左一个
shiftwidth
<kbd>></kbd><kbd>></kbd>向右一个
shiftwidth
如果忘了的话,可以
:h 'shiftwidth'
如果我们想要多行进行控制呢?
所有行向左一个
shiftwidth
a标记
到结尾
向右一个shiftwidth
20-40
行向右一个shiftwidth
:20,40>
:'a,$>
%<

范围添加分号结尾
我们如果想要给从4到10行添加分号结尾,应该如何呢?
:4,10normal A;
A是normal模式下的命令在行尾进入插入模式
在最后的位置插入
;
首先是
range
,先打上:4,10
然后让这个范围内的东西进入
normal
格式再:4,10normal
切换为normal
模式打一个空格,后面打上命令
A;
整体的命令为
:4,10normal A;
思考
如果我想在
8,15
行添加//
应该如何做呢?动手试一试!
但是这些都是执行
vim
的内部命令我想要执行外部命令
比如
shell
中的ls
可以么?
直接执行外部命令
要直接执行外面的命令比如
ls
我们在前面加上
!
就可以!javac oeasy.java
!source o2z.sh
!python3 %
比如
:!ls
更复杂一些的
这很方便,直接在vi里面就可以执行命令了
而且编译运行能看到报错的结果🤩
直接G跳到出错那行就可以!
可以直接修改,很爽!!!
超爽!!!
不过这一行命令执行完了就没了
看不见前面执行的结果了
我想一直看见前面的命令和执行结果
可以么?
进入命令模式 ex-mode
在
Normal
模式下直接按下<kbd>Q</kbd>进入Ex-mode
全屏执行命令格式
可以执行各种命令行
:ls
:1,3d
:1,7p
:visual
退回到正常模式可视化模式
visual
是vi
名字的来源vi
就是ed
+ 可视化模式visual
能直接挂起vim运行命令么?
跳到shell
我们知道我们是从
shell
运行vim
然后进来的如果我们想退出
vim
的话需要保存并退出:wq
如果我不想保存并退出
就想切到外面
把
vim
整个进程先挂起放到后台我们就 <kbd>ctrl</kbd>+<kbd>z</kbd>
我们就挂起
vim
切出去了在
shell
运行完命令之后fg
就可以把vim
切回到前台fg的意思是foreground前台

但是我们可以直接不挂起
vim
的情况下执行
shell
命令么?
分屏终端 :term
:term
上面切出一个窗口
执行命令
exit
退出shell

上下切换
<kbd>ctrl</kbd>+<kbd>w</kbd> <kbd>j</kbd> 切换到下方窗口
<kbd>ctrl</kbd>+<kbd>w</kbd> <kbd>k</kbd> 切换到上方窗口
可以切来切去
一边修改一边运行
这个
:term
什么意思
:term 帮助
什么不会,
:h
什么:h :term
总结
我们这次研究范围命令执行方法
批量控制缩进
:20,40>
批量执行普通模式下的命令
:4,10normal A;
直接切换到
全屏命令模式
ex-mode
Q
执行外部命令
!javac oeasy.java
新开一个termianl窗格
:term
这个方式真的很爽!
在
vi
什么都干了!命令模式本身可以再提高效率吗?🤔
下次再说 *
[Github地址] ( https://github.com/overmind1980/oeasyvim)
[Gitee地址] ( https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼] ( https://www.lanqiao.cn/courses/2840)