1. VIM的四种常见模式
一.启动Vim
1.双击桌面的图标,就可以启动Vim(是图形界面的)
2.在开始菜单---点--运行 接着输入 vim 或者gvim,就可以启动Vim或Gvim了.
二.Vim的模式
1.Vim常用模式.
命令模式(command-mode)
插入模式(insert-mode)
可视模式(visual-mode)
正常模式(normal-mode)
2.如何进入这些模式
①.正常模式
正常模式主要用来浏览和修改文本内容的
一般的,打开Vim都是正常模式。在任何模式下,只要按下 Esc 键就可以返回正常模式。
②.插入模式
插入模式则用来向文本中添加内容的
i 在光标所在字符前开始输入文字并进入插入模式
a 在光标所在字符后开始输入文字并进入插入模式
o (字母o) 在光标所在行的下面单独开一新行来输入文字并进入插入模式
s 删除光标所在的字符并进入插入模式
I 在行首开始输入文字并进入插入模式。此行首指第一个非空白字符处。如果行首有空格,则在空格之后输入文字并进入插入模式
A 在行尾开始输入文字并进入插入模式。不必管光标在此行的什麽地方,只要按 A 就会在行尾等着您输入文字。
O (大写字母O) 在光标所在行的上面单独开一新行来输入文字并进入插入模式。
S 删除光标所在行并进入插入模式
③可视模式
可视模式相当于高亮选取文本后的普通模式。
可视模式具有子模式,以行为单位进行选取的可视行模式,使用“V”键进入(也就是Shift+v);和以块为单位进行选取的可视块模式,使用“Ctrl+v”键进入。
④命令模式
命令模式则多用于操作文本文件(而不是操作文本文件的内容),例如保存文件;或者用来改变编辑器本身的状态,例如设定多栏窗口、标签或者退出编辑器……
三.模式的转换
① 其它模式==>正常模式
按 Esc键
②正常模式==>插入模式
按 i 在光标前插入
按 I 在行首插入
按 a 在光标后插入
按 s 删除光标所在的字符再插入
按 A 在行末插入
按 o 在当前行之下新建行
按 O 在当前行之上新建行
按 S 删除光标所在行再插入
③ 正常模式==>命令模式
按 : (shift 加 分号)
④ 正常模式==>可视模式
按 v 可视模式
按 V 可视块模式
2. Vim常用命令
1、跳转翻页
在命令行下直接输入:行号 比如跳到500行,输入:500即可
:101 跳转到101行
Ctrl+f 向下翻页
Ctrl+b 向上翻页
Ctrl+d 向下翻半页
Ctrl+u 向上翻半页
ctrl+e 向下滚动一行
ctrl+y 向上滚动一行
n% 到文件n%的位置。
zz 将当前行移动到屏幕中央。
zt 将当前行移动到屏幕顶端。
zb 将当前行移动到屏幕底端
2、整体缩进的操作:
在命令行模式下,按住shift+v进入可视行选择状态,使用shift加上下左右方向键选择好整体的代码块,然后再按住shift+>或者shift+< 向右或者向左缩进即可整体缩进。
3、Vim多行缩进技巧
首先进入命令状态,然后按v进入visual状态,一定要在可视状态,选择多行()注意这里的选择可不是用鼠标选择,而是使用shift+方向键进行选择,用>或<缩进或缩出
4、撤销命令
命令模式下按 u撤销
返回 ctrl+r
5光标移动
0 移动到行首
w 光标以单词向前移动 一直按w
nw 光标向前移动n个单词光标到单词的第一个字母上
B 移动到上一个单词开头,忽略标点
Enter 把光标移至下一行第一个非空白字符
b 与w相反
^ 移动光标到行首第一个非空字符上去
$ 移动光标到行尾第一个非空字符上去
% 移动到与制匹配的括号上去(),{},[],<>等。
nG 跳转到第n行。
可视模式
v 可视模式
V 选择行 shift+v
CTRL-V or CTRL-Q 选择块
G 移动到最后一行
gg 移动到第一行
h 左移一个空格
l 右移一个空格
下一行 j
上一行 k
E 跳到单词词尾 e 也是词尾 有区别 很有用 大写E跳跃跨度大
fc 把光标移到同一行的下一个c字符处
Fc 把光标移到同一行的上一个c字符处
M 把光标移到屏幕中间一行。
L 把光标移到屏幕最底端一行。
6复制粘贴
y 复制选择的内容
ye 复制一个单词 (光标要在首字母)
yw 复制一个单词(光标到单词尾)
yaw 复制光标当前所在处的单词
y0 复制当前光标到行首
y$ 复制光标到行尾
yy 复制当前一行
5yy 从当前行开始复制5行
viw 选中光标当前所在处的单词
yiw 复制光标当前所在处的单词
p 粘贴
x 可视模式下,x为剪切选择内容:%y+ enter 复制全部内容
:35,45 y+ 复制特定行 复制35到45行
7、删除操作
dw 删除一个单词,需将光标移到单词的第一个字母上,按dw,如果光标在单词任意位置,用daw
dd 删除一行
cw 修改一个单词
D 删除当前行光标后内容
d^ 删除光标到行首的字符
d$ 删除光标到行尾的字符
ndd 删除当前光标n行
:g/^\s*$/d 删除只有空白的行
删除光标后的所有内容 直到文章结尾 dG
删除光标前的所有内容 直到文章开头 dgg
删除具有特定关键词的行
:g/state/d 删除具有单词state的行
:%d 删除全文
:100,200 d 删除100行到200行
d1G或dgg 剪切光标以上的所有行。
dG 剪切光标以下的所有行。8撤销返回操作
命令模式下:
u 返回
CTRL+R 撤销
9、显示你曾经输入过的字符
在命令模式下:按ctrl+p 或者 键盘的向上箭头
10 保存退出
存盘:
:q! :不存盘退出
:e! :放弃修改文件内容,重新载入该文件编辑
:wq :存盘退出
:w :存盘
:browse o :用浏览器打开文件
:browse w :用浏览器保存文件
:wqa :保存并关闭所有文件
:qa :关闭所有文件
:browse wa :用浏览器保存所有文件
11 查找命令
查找
fx :移动到一个指定的字符,单字符查找命令是最有用的移动命令之一。”fx” 命令向前查找本行中的字符 x。提示:”f” 表示 “Find”。
/pattern :正方向搜索一个字符模式 从文件开头往结尾处搜索
?pattern :反方向搜索一个字符模式 从文件结尾往开头处搜索
然后按n 继续向下找 按大写N向上搜索
精确查找整个单词 :如果你输入 “/the”,你也可能找到 “there”。要找到以 “the” 结尾的单词,可以用:
/the\>
“\>” 是一个特殊的记号,表示只匹配单词末尾。类似地,”\<” 只匹配单词的开头。 这样,要匹配一个完整的单词 “the”,只需:
/\
把光标放到某个单词上面,然后按*号键,表示查找这个单词。”#” 命令在反向完成相同的功能。
查找整个单词:/\
:set hlsearch :高亮显示查找到的单词
:set nohlsearch :关闭改功能
:set ignorecase 忽略大小写的查找
:set noignorecase 不忽略大小写的查找
12 替换命令
[addr]s/源字符串/目的字符串/[option],我们可以看出addr和option是可以缺省不填的,他们各个字段的意思是:
[addr]代表检索范围,缺省表示当前行,1,10表示1到10行,% 代表整个文件等价于1 , $ ,而 . , $ 代表当前行到文件末尾
s代表替换的意思
option代表操作类型,缺省只对第一个匹配的字符进行替换,g代表全局替换,c代表操作时确认,gc可以组合使用:%s/^/#/ 全文的行首加入 # 字符,批量注释的时候非常有用
:%s= *$== 将所有行尾多余的空格删除
:g/^$/d 这里的g表示对文章中所有符合要求字符串执行替换操作,^表示行首,$表示行尾,整个意思是:将所有的空行删除命令模式:
简单指令
有无/g:有/g 表示所有,无则表示每一行第一个
:%s/string1/string2 在当前文件中,用string2 替换每一行的第一个string1 无需确认
:%s/string1/string2/g 在当前文件中,用string2 替换每一行的所有string1 无需确认
:%s/string1/string2/c 在当前文件中,用string2 替换所有的string1 需要一个一个确认
:line1,line2 s/string1/string2/g:在行line1至line2中间将所以string1替换为string2
:line1,line2 s/string1/string2/c:在行line1至line2中间将string1替换为string2,需要一个一个确认
:n, $s/sring1/string2 / 替换第 n 行开始到最后一行中每一行的第一个 string1为 string2 (空表示为最后一行)
:., $s/sring1/string2 / 替换当前行到最后一行中每一行的第一个 string1为 string2 (空表示为最后一行)
13内容转移
写文件
:n1,n2 write temp.c 将本文件中的n1,到n2行写入temp.c这个文件中去
:n1,n2 co n3 :将 n1 行到 n2 行之间的内容拷贝到第 n3 行下。
:n1,n2 m n3 :将 n1 行到 n2 行之间的内容移至第 n3 行下。
:n1,n2 d :将 n1 行到 n2 行之间的内容删除。
:n1,n2 w filename :将 n1 行到 n2 行之间的内容保存到文件 filename 中
使用剪贴板
"*y :将内容复制到剪贴板
"*p :将剪贴板的内容粘贴出来
14 文件切换与打开
同时打开多个文件 :gvim file1 file2 file 3
切换到下一个文件:bn
切换到上一个文件:bp
15 移动命令
查找替换:
way1:
/【word】 :查找某个word
? 命令功能与 “/” 的功能类似,但是是反方向查找
cw【newword】:替换为新word
n: 继续查找
.: 执行替换
way2:
:s/string1/string2/g:在一行中将string1替换为string2,g表示执行用c表示需要确认
:num1,num2 s/string1/string2/g:在行num1至num2中间将string1替换为string2
:1,$ s/string1/string2/g:在全文中将string1替换为string2
如果替换时需要确认,在g后面加上一个c(confirm)
如果要全文搜索,在”s/”前面加上一个%,例如”:% s/”
16删除重复行
http://blog.gdsyzx.edu.cn/sense/?p=1129
17列插入
1: 定位光标
2: CTRL+v #进入Visual Mode。
3: j #选择要在哪些行加入?!
4: I #一定是大写!
5: 输入要插入的文本
6: ESC
18多界面操作
命令 :vs 多个竖立界面
命令 :sp 多个横向界面
目录跳转选择 :E
上跳行 W
下跳行 B
界面跳转: ctrl+w 再按w或者方向键19 查看行号:set nu
20 排序:sort
21 标记:ma `a
使用标记标注位置:便于快速跳转
m{a-z}: 标记光标所在位置,局部标记,只用于当前文件。
m{A-Z}: 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。
`{a-z}: 移动到标记位置。
‘{a-z}: 移动到标记行的行首。
`{0-9}:回到上[2-10]次关闭vim时最后离开的位置。
“: 移动到上次编辑的位置。“也可以,不过“精确到列,而”精确到行 。如果想跳转到更老的位置,可以按C-o,跳转到更新的位置用C-i。
`”: 移动到上次离开的地方。
`.: 移动到最后改动的地方。
:marks 显示所有标记。
:delmarks a b – 删除标记a和b。
:delmarks a-c – 删除标记a、b和c。
:delmarks a c-f – 删除标记a、c、d、e、f。
:delmarks! – 删除当前缓冲区的所有标记。
:help mark-motions 查看更多关于mark的知识。
22 插入
i: 在光标前插入;一个小技巧:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+
:r filename在当前位置插入另一个文件的内容。
:[n]r filename在第n行插入另一个文件的内容。
:r !date 在光标处插入当前日期与时间
23文本对象
aw:一个词
as:一句。 :连续没有空格的多行
ap:一段。 :连续没有空格的多行
ab:一块(包含在圆括号中的)。例化时用到
y, d, c, v都可以跟文本对象
24模式匹配:执行操作
还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,
语法为 :[range]g/pattern/command
例如 :%g/^xyz/normal dd。
表示对于以一个空格和xyz开头的行执行normal模式下的dd命令。
关于range的规定为:
如果不指定range,则表示当前行。
m,n: 从m行到n行。
0: 最开始一行(可能是这样)。
$: 最后一行
.: 当前行
%: 所有行
24分屏操作
vim -o file1 file2:水平分割窗口,同时打开file1和file2
vim -O file1 file2:垂直分割窗口,同时打开file1和file2
:E 跳到目录 选中文件 o打开文件
Ctrl+W ctrl+w 切换窗口
25水平分割
:sp 水平分割出同样大小的文件
:sp filename 水平分割窗口,并在新窗口中显示文件filename
:nsp 水平分割出一个n行高的窗口
ctrl+w +f 水平分割出一个窗口,并在新窗口打开名称为光标所在词的文件
26垂直分割
:vs 把当前窗口分割成竖直分布的两个窗口
:vne 垂直分割出一个新窗口
27大小写切换
选中:gu 小写 gU 大写
:m,n gU 从m行到n行 全部大写
单词virtul全部大写:??
某个单词大小写切换:ESC==>鼠标双击单词==>gu 或者gU
27缩进缩出-自动排版
正常模式下,按两下>;光标所在行会缩进。
如果先按了n,再按两下>;,光标以下的n行会缩进。
对应的,按两下<;,光标所在行会缩出。
如果在编辑代码文件,可以用=进行调整。
在可视模式下,选择要调整的代码块,按=,代码会按书写规则缩排好。
或者n =,调整n行代码的缩排
:130,140 >> 第130行到140行缩进
28文件目录
:pwd 显示当前文件目录
29 改写文件
c[n]w: 改写光标后1(n)个词。
c[n]l: 改写光标后n个字母。
c[n]h: 改写光标前n个字母。
[n]cc: 修改当前[n]行。
[n]s: 以输入的文本替代光标之后1(n)个字符,相当于c[n]l。
[n]S: 删除指定数目的行,并以所输入文本代替之。
注意,类似cnw,dnw,ynw的形式同样可以写为ncw,ndw,nyw。
参考文章
http://www.cnblogs.com/zeushuang/archive/2012/11/16/2772830.html
http://hi.baidu.com/ui176/item/b00ae7c0eeaba52847d5c0c5