vim操作指南

. 重复上次更改
* 正向查找字符串 # 反向查找
; 向后查找一行内相同的字符,, 向前查找
% 跳转到于当前光标相匹配的括号上去 适用() [] {}

退出 ZZ

移动

命令 功能说明 说明 对立命令
h 移动 l
j 移动 k
w 移动word 光标word第一个字符 e
b 移动word 光标word第一个字符 ge
f 向右查找符合的字符 F
t 在当前行上向右查找字符,把光标停留在字符的上一个位置 T

插入

命令 功能说明 说明 对立命令
i 当前光标之插入 a
I 当前行第个字符插入 A
o 当前行新启一行插入 O

删除

命令 功能说明 说明 对立命令
c 删除并进入插入模式 后面跟范围 c$ cw
d 只是删除,不进入插入模式
x 删除一个字符
J

替换模式

命令 功能说明 说明 对立命令
R 进入替换模式
gR 进入虚拟替换模式 按照屏幕实际现实宽度来替换
r 替换一个字符然后又回到普通模式
gr 替换一个字符虚拟替换模式又回到普通模式

可视模式

是指vim分别用于操作字符文本,行文本或块文本,可视模式有三个子模式,支持相互切换

命令 功能说明 说明 对立命令
v 激活面向字符的可视模式
V 激动面向行的可视模式
ctrl+v 激动面向列的可视化模式
gv 重选上次的高亮选区
o 切换其活动端点
U 在可视化模式下转换为大写
u 可视模式下转换为小写

格式化

命令 功能说明 说明 对立命令
< 左移动 >
= 自动格式化

CTRL 命令

命令 用途
ctrl + h 删除前一个字符
ctrl + w 删除前一个单词
ctrl + u 删除至行首
ctrl + [ 切换到普通模式
ctrl + o 切换到插入-普通模式
ctrl + g 在可视模式和插入模式来回切换
ctrl +w 分别为删除至上一个单词的开头和行首
ctrl + d 会让vim现实补全列表,用tab会遍历提示,shift+tab会反向遍历提示

命令模式

: 切换到命令模式

命令 简写 功能说明 说明 对立命令
:write 写文件
:edit 新编辑文件
:split 窗口分割
:prev :next
:bprev :bnext
:copy :t :[range]copy {address} 把指定范围拷贝到{address}所指定的行之下
:move :m :[range]move {address} 把指定范围移动到{address}所指定的行之下
:normal 执行普通模式命令
:delete :d :[range]delete [x] 删除指定范围到寄存器X中
:yank :y :[range]yank [x] 复制指定范围的行
:put :[line]put [x] 在指定的行后粘贴寄存器x中的值
:s :[range]s/{pattern}/{string}/[flags] :substitute
:g :[range]g/{pattern}/{cmd}

:[number] 会被识别为行号
:{start},{end} 会被识别为一个范围
可视化模式选择行,切换命令行输入
地址偏移:{address}+n
address 行号、位置标记、查找模式
. 当前行

范围选择语法

符号 地址
1 文件第一行
$ 文件最后一行
0 虚拟行,位于文件第一行上方
. 光标所在行
'm 包含位置标记m的行
'< 高亮选择的起始行
'> 高亮选择的结束行
% 整个文件

重复命令

命令 说明
@: 重复上次ex命令, :寄存器缓存的最后一条命令,再次支持需要@@
@@
ctrl+r 复制光标下的单词
ctrl+w 映射项目会复制光标下的单词到命令行

移动

G 会把光标定位到由命令计数指定的行上 33G 移动到33行上 没有计数G 会把光标移动到最后一行
gg 移动到第一行
50% 把光标移动到文件的50%的样子
H 当前显示页的最首行
M 当前显示页的中间行
L 当前显示页的最尾行
Ctrl+G 显示当前行位置
:set number 显示行号
:set ruler 显示当前光标和位置
CTRL+U 使文本向下滚动半屏
CTRL+D 将窗口向下移动半屏幕
CTRL+E/Y 向上/向下滚动
CTRL+F/B 向前滚动一整屏
zz/t/b 把当前行移动到屏幕中央/顶端/底部

set hlsearch
`` 回跳到起跳点
CRTL+O 跳转到你更早停留光标的位置
CRTL+I 跳转到后来停留光标的更新位置
:jumps 命令记录跳转位置
m a 将当前光标下的位置记录为a a-z 一共有26个自定义
要跳转命令 `{mask} {mask}就是我们设置标记名字
:marks 列出所有标记

第四章小幅改动

d命令 后面跟移位命令 将删除从当前光标到移位符号终点的文本
c命令 与d命令类似,不过删除后,光标置于insert模式
dd 可以删除一整行
cc 命令可以改变整行,任然保持原来的缩进
x = dl X = dh D = dC = c s = cl S = cc

r 不是一个操作命令符,它等待你键入下一个字符用以替换当前光标下的那个字符。
5rx 直接替换 光标开始的5个字符
r<enter> 删除当前字符,插入一个换行符

重复改动 . 命令 会重复你做出的所有修改,
v 使编辑模式进入visual line模式, 按 esc 推出visual模式
ctrl + v 进入 visual block模式
o 命令让visual 模式下 光标去另一头 在矩形文本内容选择时, 有4个角, 0可以让你到对角线上去
p/P 在光标之后/之前插入数据
xp 删除这个字符 然后插入字符后面
y 操作符命令会把文本复制到一个寄存器中,然后用p命令把它取回来
y2w 复制两个单词
yy 复制一整行
Y 也是复制一整行
y$ 复制当前到行后
在y和p命令前加一个 *号 是把当前内容放到剪切板里面 和从剪切板里面取出来
daw aw是一个文本对象
aw is as 文本对象,可以用操作符号加文本对象

R 让vim 进取repalce模式, 再此模式下,每个键入的字符都会替换掉当前光标下的字符,直到你潜入esc结束模式
~ 改变光标下的字符的大小写

制定你的VIM

:$MYVIMRC 打开已经有的自定义配置文件

语法亮色

终端上颜色代码0表示暗色,1表示亮色, 而2位数字的颜色代码中
十位数字4表示背景色,3表示前景色, 个位数字0表示黑色,1为红,2为
绿,3黄4蓝5紫6 青,7为白。以;分隔不同的项,m结束一个定义,如
echo -e "\e[1;32mthis is green \e[0;37m"
会显示亮绿色。然后恢复为暗白色

:syntax enable 打开彩色
:syntax reset
:syntax clear
:syntax off
:set filetype 设置文件类型
:set background=dark
:set background=light
:colorscheme evening 颜色主题

多文件编辑

:edit 文件名 重新打开文件
:write 保存文件
:hide edit 文件名 隐藏当前文件,不关闭 打开新文件
vim 文件1 文件2 文件3
:next 切换文件
:wnext 先保存 再切换
:args 查看当前编辑的文件
:previous 移动到前一个文件
:wprevious 保存移动到前一个文件
:last 移动到最后一个文件
:first 移动到第一个文件
:set autowrite 自动存盘
ctrl+^ 切换文件
ctrl+o 跳转到文件较早位置
ctrl+i 跳转到文件较后位置
:marks M 文件标记

:set backup 设置文件备份
:set backupext = .bak 设置文件备份的后缀
:set patchmode=.orig 保存原始文件

:write >> logfile 将文件集中写道文件中
:saveas move.c 文件另存为重新命名
:file move.c文件重新命名

窗口分割

:split [filename] 分割窗口, 支持:3split filename 按照三等分
crtl+W 切换选中
:close/:quit/ZZ 关闭当前选中窗口
:only 会关闭除了现在选择的窗口的其他窗口
:new 打开一个新窗口,编辑
:vnew
:vsplit 垂直分割
:qall 关闭所有
:wall 保存所有
vim -o filename1 filename2 filename3 多窗口打开

vimdiff 比较两个文件的差异
:vertical diffsplit filename 垂直打击比较两个文件的差异
:vertical diffpatch filename 对文件执行patch,补丁会打到文件的副本上,文件本身不得修改

]c 直接向前跳转到下一个不同之处
[c 直接向后跳转到下一个不同之处
dp 当对比两文件不一直时候 把另外一个文件的内容放到这个文件来
do

大幅改动

命令注册(宏)

  1. q{register} 注册后续动作记录到进名为{register}的寄存器中,给出的寄存器名字必须是a到z
  2. 执行你的操作
    3 按下q结束对命令的记录
  3. @{register} 来调用对刚刚命令的运行功能
    注意: 按下了 @a 第二次重复执行 只需要按下@@
    修改寄存器的东西
命令 内容
G 移动到文件最后
o<ESC> 生成新的一行
"np 将寄存器n的内容置于改行,你会该命令像你键入普通文本一样
{edits} 修改错误部分逻辑
O 到行首
”ny$ 将正确的结果回存到寄存器n中
dd 删除这行草稿

现在可以用 @n来回放正确的命令宏

追加命令
qC 寄存器名字变成大写,就是向已经存在的寄存器中追加命令
替换
:[range]substitute/from/to/[flags] 该命令将由[range]指定的行中的字符,“from”替换成“to”
substitute 命令的缩写是 s
[range]
不指定.默认替换当前行 % = 1,直接所有行, 1,5 一到5行 使用正则表达式,/^begin/,/end/ 以begin 开始的,以end结束
使用模式 /^begin/+2 以begin开始的位置 下移动2行 -1 上移动一行
使用标签 't,'b 在标签t和b之间
visual模式下,输入: 就会自动补全 选择范围'<,'>
'< 表示上次visual模式的开始区域的 '> 是结束区域 '>,$ 上次visual结束地方到文件末尾
.,.+4 当前行到当前行+4
[flags] p 列出最后一行被改变的行 c 确认标识符

全局命令
:[range]global/{pattern}/{command} g 是global的缩写的命令
g+//+s/foobar/barfoo/g 命令是替换所有以//开始的行里面的 foobar 替换成barfoo

VISUAL BLOCK
ctrl+v 进入block模式
然后移动光标来调整选择区域,按下I 插入文本,推出insert模式,奇迹般的插入了多行
A 追加文本
c 改变文本
~ 交换大小写
U 小写转换大写
u 大写转换为小写
rx 以x字符填充字符
</> 左/右移动 :set shiftwidth=4 移动的宽度
J 链接句子

读写部分文件
:read filename 当前文件追加到该行之后
:read filename 在文件的尾部追加文件 写入指定文本 :write filename :.,write tempo 把当前行到结束写入tempo文件中
如果tempo文件存在,可以给:.,$write! tempo 来执行
:write >> collertion 追加文件

格式文本
:set textwidth=72 设置一行最多72个字符
gq ap 格式化当前文件
gg gq G 格式化从第一行到最后一行
gu gU 改变大小写 guw 改变后面一个word的大小写

过滤器

! 启动一个过滤器
!5G 移动1到5行 !5Gsort 执行排序 sort 是liunx的排序程序
!! 过滤当前行

读取命令输出

:read !ls 读取当前目录的
:write !wc 写入wc的结果

ctrl+L 重新绘制屏幕

奇技

qq 开始录制,后续的操作记录在名为q的宏中
${操作}
:wnext
q 停止宏记录
@q 执行名为q的宏
999@q对其余文件执行同样的操作
:%/([^,]),(.)/\2 \1/ 单词换位置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 前言 能够查看官方文档的,请以官方文档为准。终端中使用 即可阅读官方教程,本文所有内容全部来自该教程,方便我不时阅...
    arobot阅读 1,236评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,310评论 0 5
  • 自我总结篇: 对文件的操作技巧: vim文件一个有三种状态:命令(浏览/输入命令转变末行模式),文本(添加/编辑/...
    小知大知阅读 771评论 0 0
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 30,619评论 3 48
  • 1. vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v ...
    路痴千行阅读 3,218评论 0 0