vi高级用法
vi启动选项
vi -R以只读方式打开文件
- :wq!强制写
view只读打开文件
多文件编辑
vim内部每个buffer打开一个文件,多个buffer可以打开同一个文件
可以只有一个窗口,也可以有多个tab标签
每个tab对应一个buffer,一个buffer可以对应多个tab
这里描述的vim使用方式,是希望能在vim中完成大多数工作,而不是频繁的退出vim
- 首先:tabnew创建一个标签
- 然后:e打开一个文件
- :tabnext在窗口上打开下一个tab
- :tabprevious在窗口上打开前一个tab
- :q或者:tabclose关闭tab
寄存器
vim中设计了特别的暂存机制——寄存器,用于保存拷贝和删除的文本
在命令模式下以”双引号开头引用这些寄存器
命令行模式:registers显示寄存器
有名寄存器
a-z,一共26个,供用户使用
编号寄存器
0-9,10个,vim自己使用,存放删除和拷贝的文本
- “0号寄存器是visual模式下拷贝的问题
- “1-”9号寄存器是dd删除、yy拷贝的行文本
缺省寄存器
- % 当前窗口对应的文件名
- # 当前窗口的其它文件名
- : 命令行模式最近输入的命令
- . 最近插入的文本
- “ 最近删除或拷贝的文本
剪切与粘贴
以寄存器作为剪贴板,vim的剪切与粘贴非常灵活
命令模式
- dd命令将删除行拷贝到””和”1寄存器,并且下压2-9号寄存器
- yy命令将拷贝行复制到””和”0寄存器
- p命令将缺省寄存器””内容拷贝到光标位置之后
- P命令将缺省寄存器””内容拷贝到光标位置之前
Visual模式
- 命令模式下v进入visual模式
- khjl或方向键移动光标
- y命令将选择内容拷贝到””和”0寄存器,y表示yank
Motion与range
motion是指移动光标的命令
拷贝与删除命令可与motion组合
- 命令=操作符+motion
- y$,d0
motion | 功能 |
---|---|
$ | 从光标到行尾 |
0 | 从光标到行首 |
e或w | 从光标到字尾 |
b | 从光标到字首 |
range是指行数
寄存器+[range]+d/y+[motion]组合,完成拷贝删除动作→寄存器
- “wdd 删除当前行到”w寄存器
- “z7yy 拷贝从当前光标开始算,一共7行,到”z寄存器
寄存器+p,将寄存器内容拷贝到光标后的位置上,完成寄存器→缓冲动作
光标快速定位
:n定位到第n行
:0或:1定位到第1行的行首
:$定位到最后一行的行尾
1G定位到第1行的行首
G或0G定位到最后一行的行首
nG定位到第n行的行首
Ctrl-g在命令行区域输出当前行号
Ctrl-End跳到最后一个字符或者G$
vim定制
让vim更舒服一些,修改.exrc或者.vimrc
:set命令
- :set all 显示所有选项
- :set 显示被修改的选项
- :set X? 显示选项X的值
执行shell命令
:shell命令切换到shell,exit回到vim
:!命令,执行shell命令
:r!命令,将shell命令输出粘贴到当前位置
tips
折叠
set foldenable
set foldmethod=indent
- zc 关闭折叠
- zo 打开折叠
设置交换文件目录
set directory^=$HOME/.vim/swap//
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小狐狸的被窝!
评论
WalineValine