vim常用操作笔记


普通模式下
w 跳转到下个符号或者单词 b 跳转到上个符号或者单词,对应的大写的WB,跳转的尺度会更大些,比如 I'm 小写会默认是三个,大写会默认为一个

x 删除当前字母
dw 删除下个符号或者单词 db 删除上个符号或者单词
dt+字母  df+字母 删除到某个字母


复制
ctrl+v,然后用鼠标选择要复制的,然后 y,然后p进行粘贴


替换
:s/java/php  替换当前行第一个java为php
:s/java/php/g  替换当前行所有的java为php


:1,$s/java/php 替换第一行开始到最后一行的第一个java为php
:1,$s/java/php/g 替换第一行开始到最后一行的所有 java为php

:%s/java/php 替换每一行的第一个java为php
:%s/java/php/g 替换每一行的所有 java为php



vim = vi + IMproved 
多级撤销
语法加亮和自动补全
支持多种插件
通过网络协议(HTTP/SSH)编辑文件
多文件编辑
Vim可以编辑压缩格式文件(GZIP、ZIP等)

光标移动
h 左移
l   右移
j   下移
k   上移 
^/0  移动到行首/包含缩进空格
$ 移动到行尾


单词和字符传移动
w/W 正向移动到下一个单词开头
b/B 反向移动
e/E 正向移动下一个单词结尾
ge 反向移动词尾

跳转
ctrl+f/F 下一页
ctrl+b/B 上一页
ctrl+d/u  向上或者向上翻半页
gg 跳转到文件首行
<line_number>gg/G  跳转到指定行
G 跳转到文件最后一行
g+ctrl+g/G 查看文件信息/{g}更加详细

缩进 >右  <左
>> 或者 :>  右缩进
m,n> 或者 :m>(n-m+1) m到n行缩进   :3,5> 第3行到5行进行右缩进
m>n 等价于命令 :m,m+n-1>  m行开始共n行缩进一次   :3>3 第3行起包括第3行后3行进行右缩进


删除复制和粘贴

寄存器
类型 含义 表达方式 举例 特点
无名寄存器 默认寄存器 "" "" p=p 会被最后一条覆盖
数字寄存器 "+{0-9}缓存最近10次操作 "0  "{1-9} "0p "1p 0用于复制专用1-9 用于最近9次行删除或者修改记录

有名寄存器 26英文字母命名有名寄存器 "[a-z]/[A-Z] "ayw "A会通过^J追加到" a寄存器中
黑洞寄存器 有去无回 "_ "_dw 只想删除而不想覆盖 无名寄存器


按键操作
d = delete = cut 剪贴
y = yank 约等于 copy 类似于复制
p/P = put 约等于 paste 粘贴到光标后/光标前
u=undo 撤销之前操作
ctrl+r = redo 重做/恢复之前操作

yw 复制当前光标单词
y2w 复制正向两个单词
p/P = put 约等于 paste 粘贴到光标后/光标前
yy类似于dd 复制当前光标整行


组合删除
x/X 删除光标下/前单个字符
dw  删除一个单词,光标必须在词首
d{hjkl} 删除到上下左右一个操作前的字符
d$=D 删除光标到行尾的字符
d^ 删除光标到行首的字符 

dd 删除当前整行
{n}dd  向下删除n行,包括当前行
5dw 删除正向单词五次
3w 正向移动单词三次
D3w 正向删除3w动作
2d3w 正向删除3w动作两次



插入
shift + i/a 插入模式并移动到行首/尾
a/i 光标后/前插入
[n]O/o 行前/后插入n次
[n]+i 插入模式重复n次    // 按键 3i,输入hello,world! ,然后ESC ,会再多出四个此字符串

转换
~  单词字符大小写转换
g~w 单词大小写转换
g~$ 或者 g~~ 整行大小写转换  ,前者需要光标在行首
gU/uw 单词转换成大/小写

查找
F/f{char} 反向/正向查找单个字符
t{char}  查找字符前一个字符
dt{char}/df{space} 删除光标到查找字符间字符
/{char}  命令行查找 ,n向下查找 N向上查找


替换
s/going/rolling/g  当前行所有going替换成rolling
%s/going/rolling/g   %匹配所有范围

shift+r/R 替换模式
r  单个字符替换
cw 修改单个单词
c$/C 类似于d操作 修改光标之后行内容



缓冲区与多文件编辑

缓冲区
缓冲区列表
:files 
:buffers
:ls

缓冲区列表指示状态
标记 含义
a 激活缓冲区,缓冲区被加载且显示
h 隐藏缓冲区,缓冲区被加载但不显示
% 当前缓冲区
# 交换缓冲区
= 只读缓冲区
+ 已经更改缓冲区
- 不可改缓冲区,'modfiable'选项不置位
 
vim *.php 
缓冲区列表操作
:bp 上一个缓冲区
:bn 下一个缓冲区
:bf 到第一个缓冲区
:bl 到最后一个缓冲区
:buffer Number/File_name 指定缓冲区
:ball 编辑所有缓冲区
Ctrl+^/b# 切换到前一个buffer(交换buffer)
:qall! 退出全部缓冲区
:wall! 写入全部缓冲区
:badd 添加一个缓冲区,但不设置为当前缓冲区
:bd 删除缓冲区
:n,m/%bd 删除n到m编号/所有的缓冲区文件
:bufdo{CMD} bufdo set number
:E /:bd 打开文件目录列表/返回到最初的buffer
 
 
多窗口操作(分屏)与标签分组
分屏操作
指令 含义
vim -O/on 水平/垂直分屏 n:数字,分屏的数量,o:open
ctrl+w+c/q 关闭当前窗口/最后一个窗口时退
ctrl+w s 上下分割当前打开的文件
:sp filename 上下分隔,并同时打开一个新的文件
ctrl+w v 左右分隔当前打开的文件
:vsp filename 左右分隔,并打开一个新的文件


移动分屏和尺寸移动
指令 含义
ctrl+w K 向上移动
ctrl+w J 向下移动
ctrl+w L 向右移动
ctrl+w H 向左移动
ctrl+w + 增加高度
ctrl+w - 减少高度
ctrl+w = 让所有屏的高度一致
 


宏操作案例一
文件内容显示如下
1
2


100

需要以下操作

进入普通模式
在第一行写入1
按qa + yyp + (ctrl+a) 
按q退出
按98@a,则会出现1-100的数字   


宏保存
viminfo /vimrc file
保存历史和非空寄存器
vim启动时读取
容易被覆盖



可视化模式
三种子模式
v 激活面向字符的可视模式
V/shift+v 激活面向行的可视模式
ctrl+v 激活面向列块的可视模式

gv 重选上次的高亮选区
o 切换选取

分类:   程序积累  / 
标签:   vim
 /  浏览量:  181
2019-2-12 15:11 Tuesday
上一篇:  大小端模式 |  
下一篇:  Linux之awk命令