<Vim>Vim基本操作

进入插入模式
NORMAL–>INSERT

	1. 光标前插入 i 
	2. 光标后插入 a 
	3. 在下面新建一行插入 o 
	4. 在行首插入 I 
	5. 在行尾插入 A 
	6. 在上面新建一行插入 O 
	7. 快速回到后一次编辑的地方,并进入插入模式 gi 

进入视图模式
NORMAL–>VISUAL

	1. 批量选择字符 v  (VISUAL) 
	2. 批量选择整行 V  (VISUAL LINE) 
	3. 批量选择区块 ctrl+v  (VISUAL BLOCK) 

进入普通模式
INSERT–>NORMAL

	1. ESC 
	2. ctrl+c (不推荐) 
	3. ctrl+[ (常用备选) 
	4. 自定义映射 

进入命令模式
NORMAL–>COMMAND

	1. 冒号 : 
	2. 正斜杠 / 
	3. 问号 ? 

分屏
COMMAND

	1. 竖分屏 :vs 
	2. 横分屏 :sp 
	vs--vertical split 
	sp--split 

替换
COMMAND

	全局替换 :% s/before/after/g 
	g--global 

界面操作
COMMAND

	设置行号 :set nu 

快速排错
INSERT

	1. 删除上一个字符 ctrl+h 
	2. 删除上一个单词 ctrl+w 
	3. 删除当前行 ctrl+u 

快速移动
NORMAL

	1. 移动到下一个以非空格分隔的单词开头 w 
	2. 移动到下一个以空格分隔的单词开头 W 
	3. 移动到下一个以非空格分隔的单词结尾 e 
	4. 移动到下一个以空格分隔的单词结尾 E 
	5. 移动到上一个以非空格分隔的单词开头 b 
	6. 移动到上一个以空格分隔的单词开头 B 

行间搜索移动(当前行范围内)
NORMAL

	1. 向后跳转到要查找的字符上 f+char 
	2. 向后跳转到要查找的字符前面 t+char 
	3. 向前跳转到要查找的字符上 F+char 
	<分号; 跳到下一个结果>|<逗号,跳到上一个结果> 

水平移动
NORMAL

	1. 移动到行首第一个字符 0 
	2. 移动到行尾后一个字符 $ 
	3. 移动到行首第一个非空字符 ^ 
	4. 移动到行尾后一个非空字符 g_ 

垂直移动
NORMAL

	1. 移动到上一句 ( 
	2. 移动到下一句 ) 
	3. 移动到上一段落 { 
	4. 移动到下一段落 } 

页面移动
NORMAL

	1. 移动到整个文件开头 gg 
	2. 移动到整个文件结尾 G 
	3. 返回到上一个位置 ctrl+o 
	4. 跳转到屏幕开头 H 
	5. 跳转到屏幕中间 M 
	6. 跳转到屏幕结尾 L 
	7. 向上翻页 ctrl+u 
	8. 向下翻页 ctrl+f 
	9. 将当前行置于屏幕正中间 zz

快速增删改查
增:
INSERT

直接写入内容 

删:
NORMAL

   1. 删除一个字符 x 
   2. 删除一个单词 dw/daw 
   3. 删除一个单词保留空格 diw 
   4. 删除当前行 dd 
   5. 删除到char之前 dt+char 
   d和x可以配合数字多次执行 

VISUAL

	视图模式配合x/d 实现批量删除 

改:
NORMAL

   1. 替换一个字符 r 
   2. 不断向后替换字符 R 
   3. 删除一个字符,并进入INSERT模式 s 
   4. 删除整行,并在行首进入INSERT模式 S 
   5. 删除一个单词,并进入INSERT模式 cw/caw 
   6. 删除整行,并在光标处进入INSERT模式 C 
   7. 删除一个单词,保留空格,并进入INSERT模式 ciw 
   8. 删除到char前,并进入INSERT模式 ct+char 

查:
COMMAND

   1. 向后搜索 / 
   2. 向前搜索 ? 

NORMAL

   3. 下一个结果 n 
   4. 上一个结果 N 
   5. 当前单词的下一个位置 * 
   6. 当前单词的上一个位置 # 

搜索替换
COMMAND

	替换命令  :<range> s /before/after/<flags> 
	替换范围<range>   
		 % 全部 
 		start,end  从第start行开始,匹配到end行结束 
	替换标志<flags>   
 		g 全局范围内执行替换 
 		c 交互执行,确认是否执行y/n  
 		n 不替换,只统计匹配到的次数  
 	正则匹配 
 	 	:% s/\<before\>/after/g 

多文件操作

  • Buffer 打开的一个文件的内存缓冲区
    1. Vim打开一个文件后会加载内容到缓冲区 
    2. 所有修改针对缓冲区,并不会直接保存到文件 
    3. 使用:w命令,才会把修改写入文件 
    4. 使用:ls列举当前缓冲区,使用:b n跳转到第n个缓冲区 
    5. :bpre上一个 :bnext下一个 :bfirst第一个 :blast后一个 
    6. :b 缓冲区名称(可用tab补全) 
    7. 打开不同的缓冲区 :e 文件名 
  • Window 窗口 Buffer可视化的分割区域
	1. 一个缓冲区可分割成多个窗口,每个窗口可以打开不同的缓冲区 
    2. 打开多个相同缓冲区,修改其中一个buffer会对所有的buffer生效 
    3. 水平分割(上下分屏) ctrl+w+s 或者 :sp 
    4. 垂直分割(左右分屏) ctrl+w+v 或者 :vs 
    5. 每个窗口可以无限的继续分割 
切换窗口 
	1. <ctrl+w> +w 循环切换 
    2. <ctrl+w> +h 切换到左边窗口 
    3. <ctrl+w> +j 切换到下边窗口 
    4. <ctrl+w> +k 切换到上边窗口 
    5. <ctrl+w> +l 切换到右边窗口 
移动窗口 
 	1. <ctrl+w> +H 当前窗口移动到左边窗口 
    2. <ctrl+w> +J 当前窗口移动到下边窗口 
    3. <ctrl+w> +K 当前窗口移动到上边窗口 
    4. <ctrl+w> +L 当前窗口移动到右边窗口
  • Tab 标签页 可以组织Window变成一个工作区
	1. 容纳一系列窗口的容器,类似虚拟桌面 
	2. 使用较多不好管理,通常多开2个 
	----
 	1. 在新标签页中打开(edit)文件 :tabe 文件名 
	2. 将当前窗口移动到一个新的标签页 <ctrl+w> +T 
	3. 关闭(close)标签页和其中所有窗口 :tabc 
	4. 只保留(only)活动标签页,关闭其他标签页 :tabo 
	----
	1. 切换到编号为N的标签页 :tabn N 或 Ngt 
	2. 切换到下一个标签页 :tabn 或 gt 
	3. 切换到上一个标签页 :tabp 或 gT 

文本对象
Text Object

	<number> + <command> + <text object> 
	次数 + 命令 + 文本对象 
 	1. iw 选中单词不包括空格 inner 
    2. aw 选中单词和后边的空格 around 
    类推到 W,s,p对象中 
基本文本对象: 
 	w: word 单词([a-zA-Z0-9_]) 
	W: WORD 字串(以空格分隔的单词) 
 	s:sentence 句子 
 	p:paragraph 段落 
扩展文本对象: 
 	() 圆括号代码块,显然对于编辑函数的参数,无论形参还是实参都很有用。 
 	{} 用于编辑 C 系风格的代码块,非常合适。 
 	[] 用于编辑数组或列表中的元素,非常合适。 
 	<> 用于编辑比如 C++,Java 等的模板或者泛型参数,是非常合适。或者编XML(HTML)开始标签。 
 	<tagName></tagName> 显然是用来编辑 XML(HTML)标签的。此文本对象以字符 t 
表示。 
    i: 选中对象里的内容,但不包括对象本身 
    a: 选中对象里的内容和对象本身 
举例: 
 	i(或者i) 选中( )中的内容,不包括小括号 
    a(或者a) 选中( )中的内容和括号本身

复制粘贴
NORMAL

 	1. 复制 + 粘贴 y + p 
    2. 剪切 + 粘贴 d + p 
    3. 配合VISUAL批量复制粘贴 
    4. 配合文本对象复制粘贴单词和句子等 
    5. 复制一个单词yiw 复制一行 yy 

INSERT

   1. 复制 ctrl+c 粘贴ctrl+v 
   2. vimrc中设置了autoindent会导致粘贴格式出错 
   3. 使用:set paste和:set nopaste 

寄存器

	1. 默认使用d删除和y复制的内容放到"无名寄存器" 
    2. 使用x删除一个字符再用p粘贴,可以实现字符的调换 
    3. 前缀 "寄存器名 可以指定寄存器,不指定默认存到无名寄存器 
    举例: "ayiw 复制一个单词存放到寄存器a中 
       "bdd 删除当前行存放到寄存器b中 
    4. 查看寄存器中内容 :reg 寄存器名 
    5. 粘贴放在寄存器a,寄存器b中的内容 "ap  "bp 
    6. 无名寄存器用""表示,大部分情况下省略不写 

寄存器分类

    1. 无名寄存器 ""(默认寄存器) 
    2. 有名寄存器 "[a-z] 
    3. 复制专用寄存器 "0 (使用y复制时,会同时拷贝到0号寄存器) 
    4. 系统的剪贴板 "+ (在Vim外粘贴复制内容,把外部内容粘贴进来) 
    命令:echo has('clipboard')输出1则支持系统剪贴板 
    5. 当前文件名 "% 
    6. 上次插入的文本 ". 
 	:set clipboard=unnamed 可以直接复制粘贴系统剪贴板的内容 
    交互系统剪贴板时,注意:set paste 保证粘贴格式 

宏macro
一系列命令的集合

   用宏[录制]一系列操作,在使用场景[回放] 
   宏可以非常方便地把一系列命令用于多行文本 

使用宏 NORMAL模式
录制:

 	使用q+字母,把宏存放在指定有名寄存器中 
    eg: 按qa开始录制 再按q结束录制,宏保存在寄存器a中 

回放:

 	按@+字母 回放指定寄存器中的宏 
    eg: 录制完毕后,在其他行@a,重复对上一行的一系列命令 

批量回放:

   1. 先进入视图模式VISUAL批量选择 
   2. :normal @+字母 批量回放宏 
   	: ctrl p 上一条命令 

常见补全

   1. 单词补全: ctrl+n  
   2. 文件名补全:ctrl+x后跟ctrl+f或者ctrl+xf  
   	向下选择补全项 ctrl+n 
   	向上选择补全项 ctrl+p 
   	插入当前文件名 :r! echo % 
   	插入当前文件完整路径 :r! echo %:p
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值