文本编辑工具vim
文章目录
选项
+N 打开文件后,让光标处于第N行,+默认为行尾
+/PATTERN
-b FILE 二进制方式打开文件
-d file1 file2 比较多个文件
-m file 只读打开文件
-e file 直接进入ex模式
##如果文件存在,则打开并显示内容
##文件不存在,第一次存盘时创建该文件
模式转换
命令模式 > 插入模式
i 在光标所在处输入
I 在光标所在行的行首输入
a 在光标后面输入
A 在光标所在行的行尾输入
o 在光标所在行的下方打开一个新行
O 在光标所在行的上放打开一个新行
命令模式的光标跳转
'字符间的跳转'COMMAND
h:左
l:右
j:下
k:上
******************************************************
N COMMAND: 跳转由N指定的个数的字符
4h 5j
'单词间的跳转'
w: 下一个单词的词首
e:
b:
#COMMAND
'当前页的跳转'
H (页首) M (页中间行) L:页底
zt: 将光标所在行移到屏幕顶端
zz: 将光标所在行移到屏幕中间
zb: 将光标所在行移到屏幕底端
'行首行尾跳转'
^ 跳转到行首的第一个非空白字符
0 (数字)跳转至行首
$ 跳转到行尾
'行间移动'
#G 或拓展命令模式下 跳转至第#行
G 最后一行
1G/gg 第一行
'句间移动' 以'.'隔开的视为句子
) 下一句
( 上一句
'段落间移动' 以'换行符'隔开视为段落
{ 下一段
} 上一段
命令模式的操作
字符编辑
x 删除光标所在的字符
#x 删除光标处起始的#个字符
xp 交换光标所在的字符及其后面字符的位置
~ 转换大小写
J 删除当前行后的换行符
替换命令(r,replace)
r 替换光标所在处的字符
R 切换成REPLACE模式
删除命令d
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw
de
db
#COMMAND
dd 删除光标所在行
#dd 多行删除
D 等效d$
复制命令y
y 复制,类似于d命令
y$
y0
y^
ye
yw
yb
yy 复制行
#yy 复制多行
Y 复制整行
粘贴命令p
p 缓冲区存的内容为整行,则粘贴'当前所在行的下方';否则,则粘贴到'当前光标所在处的后面'
P 缓冲区存的内容为整行,则粘贴'当前所在行的上方';否则,则粘贴到'当前光标所在处的前面'
改变命令c
c 修改后切换成插入模式
命令模式 > 插入模式
c$
c^
c0
cb
ce
cw
#COMMAND
cc 删除当前行并输入新内容,相当于S
##cc
C 删除当前光标到行尾,并切换成插入模式
撤销更改
u 撤销最近一次更改
#u 撤销最浅的多次修改
U 撤销光标落在这行后 所有对慈航的修改
ctrl -r 重做最后的撤销更改
. 重复前一个操作
#. 重复前一个操作#次
命令模式的操作组合
object | Change© | Delete(d) | Yank(y) |
---|---|---|---|
line | cc | dd | yy |
letter | cl | dl | yl |
word | cw | dw | yw |
Sentence ahead | c) | d) | y) |
Sentence behind | c( | d( | y( |
Paragraph above | c{ | d{ | d{ |
Paragraph below | c} | d} | d} |
扩展命令模式ex
r FILE 读取FILE的文件内容到当前文件中
w FILE 将当前文件内容写入到FILE文件中 ##如果文件存在,使用w!执行时会覆盖原始内容
地址定界
ex模式下:
N1,N2 ##N1起始行,N2为终止行
N1,+n ##N1起始行,加上N1+n行
. 代表当前行
$ 最后一行
% 全文
## Regex 正则表达式
/pattern/ 匹配pattern行
/pat1/,/pat2/
从第一次被pat1模式匹配到的行开始,到第一次被pat2匹配到的行结束
#,/pat/
/pat/,$
使用方式:后面追加编辑命令
d
y
w file:将范围内的行另存到指定的文件file中
r file:在指定位置插入指定文件中的所有内容
查找
/PATTERN 从光标所在处向文件尾部查找
?PATTERN 从光标所在处向文件头部查找
n 与命令同方向
N 与命令反方向
查找并替换
s/查找的内容/替换的内容/修饰符
针对查找的内容: 可以使用模式
针对替换的内容: 不能使用模式,但可以使用\1,\2等后向引用符号;可以使用&引用前面查找到的整个内容
修饰符:
i 忽略大小写
g 全局替换,默认情况下,每行只替换第一次出现的匹配内容,后续内容不进行替换
分隔符/可以替换为其他字符
s@/etc@/var@g 使用@作为分隔符
s#...#...#i
可视化模式
允许选择的文本块
v 面向字符
V 面向行
ctrl v 面向块
可视化键可用于在与移动键结合使用
w ) }
突出显示的文字可执行其他操作(d/y/等)
vim工具
存在26个命名寄存器和1个无命名寄存器,通常存放不同的剪切板内容,可以在不同会话之间共享
寄存器
寄存器名称格式: a,b,...z ("寄存器COMMAND 放在数字和命令之间)
3"tyy 表示复制3行到t寄存器中
"tp 表示将t寄存器的内容粘贴
如果未指定寄存器,则使用无命名寄存器
存在10个数字寄存器,数字寄存器不能再不同会话间共享
0存放最近复制的内容,1存放最近删除内容。当新的文本变更和删除时,1转存2,2转存3,以此类推。
标记与宏
ma 将当前位置标记为a,26个字符都可以做标记
'a 跳转到a标记的位置
qa 录制宏a,a为宏的名称
q 停止录制宏
@a 执行宏a
@@ 重新执行上次操作的宏
二进制文件编辑
vim -b FILENAME 打开二进制文件
拓展命令模式下:
%!xxd 转换为可读的16进制
插入模式下,编辑二进制文件
拓展命令模式下
%!xxd -r 转换为2进制
保存退出
多窗口查看文件内容
多文件分割
vim -o | -O FILE1 FILE2 [水平分割 | 垂直分割]
##窗口间切换
ctrl +w,Arrow[箭头:上下方向键]
单文件窗口分割
ctrl +w,s 水平分割
ctrl +w,v 垂直分割
ctrl +w,q 取消相邻窗口
ctrl +w,o 取消全部窗口
:wqall 退出
定制vim的工作特性
配置文件(永久)
全局: /etc/vimrc
用户: ~/.vimrc
单一进程的使用的特性设置:
行号(简写) number
显示行号: set nu
取消显示: set nonu
忽略字符的大小写(ignorecase)
启用: set ic
禁用: set noic
自动缩进(autoindent)
启用: set ai
禁用: set noai
复制保留格式(paste)
启用: set paste
禁用: set nopaste
显示Tab和换行符(^I / $)
启用: set list
禁用: set nolist
高亮搜索:
启用: set hlsearch
禁用: set nohlsearch
语法高亮:
启用: syntax on
禁用: syntax off
文件格式:
启用windows格式: set fileformat=dos
启用unix格式: set fileformat=unix
set ff=dos | unix
设置文本宽度:
set txtwidth=65(vim only)
set wrapmargin=15
设置光标所在行的标识线
启用: set cursorline //set cul
禁用: set nocursorline
更多的特性设置帮助
set 帮助
:help option-list
:set / :set all
vim内置帮助
:help
:help topic
使用q 退出help.txt文件
vimtutor
结尾
文章由博主Benjemin (linux小白)自行整理,书写风格和内容不一定由大家所接受,期待多多交流。
如有内容需要修改或者补充的欢迎大家指正,谢谢。