浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

very good

Vim基本操作 - KlniuWiki

Vim基本操作

来自KlniuWiki
跳转到: 导航, 搜索

目录

 [隐藏

1 打开文件

vim -c cmd file 
在打开文件前,先执行指定的命令;
vim -r file 
恢复上次异常退出的文件;
vim -R file 
以只读的方式打开文件;
vim -y num file 
将编辑窗口的大小设为num行;
vim + file 
从文件的末尾开始;
vim +num file 
从第num行开始;

2 模式

正常模式 
可以使用快捷键命令,或按:输入命令行。
插入模式 
可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。
可视模式 
正常模式下按v可以进入可视模式,在可视模式下,移动光标可以选择文本。
块选择模式 
正常模式下按ctrl+v进入。
替换模式 
正常模式下,按R进入。

3 光标移动

命令模式:

[number] [action] object

或者

[action] [number] object

number为执行次数;action为命令;object为执行对象

   k          上
h   l      左  右
   j           下
以单词为单位向右移动光标,支持计数,如3w,向右移动3个单词。
向右移动一个单词,不把符号或标点当作单词处理
向左移动一个单词,把符号或标点当作单词处理,如3b,向前移动3个单词。
向左移动一个单词,不把符号或标点当作单词处理
向右移动一个单词,光标在单词的尾字母处,如3e,向后移动3个单词。
向右移动一个单词,光标在单词的尾字母处,如3e,向后移动3个单词,但忽略其他边界字符。
ge 
向左移动一个单词,光标在单词的尾字母处,如3ge,向前移动3个单词。
gE 
向左移动一个单词,光标在单词的尾字母处,如3ge,向前移动3个单词,但忽略其他边界字符
移动到该行第一个非空格的字符处
到行首
$Snbsp;
到行尾
gg 
到页首
到页末
行号+G 
跳转到指定行
Ctrl+g 
查询当前行位置和当前文件位置
fx 
向右跳到本行字符x处(x可以是任何字符)
Fx 
向左跳到本行字符x处(x可以是任何字符)
tx 
和fx相同,区别是跳到字符x前
Tx 
和Fx相同,区别是跳到字符x后
CTRL+U 
向上滚动半屏
CTRL+D 
向下滚动半屏
 % 
跳转到与当前光标下的括号相匹配的字符上记数+% 跳转到正文的某个部分,如"50%"将会把光标定位在文件的中间。
跳转到本屏幕的开始
跳转到本屏幕的中间
跳转到本屏幕的结尾
zz 
把当前行置为屏幕正中央
zt 
把当前行置于屏幕顶端
zb 
把当前行置于屏幕底端

4 退出Vi

ZZ 
退出vi并保存
:q!  
退出vi,不保存
:wq 
退出vi并保存

5 重复操作

重复上一次操作

6 自动补齐

C-n 
匹配下一个关键字
C-p 
匹配上一个关键字

7 插入

在光标下方新开一行并将光标置于新行行首,进入插入模式。
同上,在光标上方。
在光标之后进入插入模式。
同上,在光标之前。
在当前光标处进入插入模式
在行首进入插入模式
进入替换模式,直到按下Esc
:r filename 
在当前位置插入另一个文件的内容。
:r !date 
在光标处插入当前日期与时间。同理,:r!command可以将其它shell命令的输出插入当前文档。

8 删除

dl 
删除当前光标下的字符,同 x 功能一样,建议将 x 映射为其他功能。(用"c"命令代替"d"这些命令就都变成更改命令)。
dh 
删除当前光标左边的字符,同 X 功能一样,建议将 X 映射为其他功能。(用"c"命令代替"d"这些命令就都变成更改命令)。
dw 
删除光标之后的单词剩余部分,包括空格。(用"c"命令代替"d"这些命令就都变成更改命令)。
de 
删除光标之后的单词剩余部分,不包括空格。(用"c"命令代替"d"这些命令就都变成更改命令)。
db 
删除自当前光标至前一个单词的开始。(用"c"命令代替"d"这些命令就都变成更改命令)。
diw 
删除当前光标所在的单词(不包括空白字符)。(用"c"命令代替"d"这些命令就都变成更改命令)。
daw 
删除当前光标所在的单词包括空白字符)。(用"c"命令代替"d"这些命令就都变成更改命令)。
d$Snbsp;
删除光标之后的该行剩余部分,同 D 功能一样,建议将 D 映射为其他功能。(用"c"命令代替"d"这些命令就都变成更改命令)。
dd 
删除当前行。(用"c"命令代替"d"这些命令就都变成更改命令)。
cl 
功能和 dl 相同,删除当前光标下的字符,区别在于完成删除操作后进入 INSERT MODE,同 s 功能相同,建议将 s 映射为其他功能。
ch 
功能和 dh 相同,删除当前光标左边的字符,区别在于完成删除操作后进入 INSERT MODE。
cw 
功能和 dw 相同,删除光标之后的单词剩余部分,区别在于完成删除操作后进入 INSERT MODE。
ce 
功能和 de 相同,删除光标之后的单词剩余部分,区别在于完成删除操作后进入 INSERT MODE。
c$Snbsp;
功能和 d$ 相同,区别在于完成删除操作后进入 INSERT MODE,同 C 功能一样,建议将 C 映射为其他功能。
cc 
也是删除当前行,然后进入 INSERT MODE,同 S 功能相同,建议将 S 映射为其他功能。
ci[ 
删除一对 [] 中的所有字符并进入插入模式
ci( 
删除一对 () 中的所有字符并进入插入模式
ci< 
删除一对 <> 中的所有字符并进入插入模式
ci{ 
删除一对 {} 中的所有字符并进入插入模式
cit 
删除一对 HTML/XML 的标签内部的所有字符并进入插入模式
ci” ci’ ci` 
删除一对引号字符 (” 或 ‘ 或 `) 中所有字符并进入插入模式
删除一个换行符。
dG 
删除当前行至文件尾的内容(用"c"命令代替"d"这些命令就都变成更改命令)。
dgg 
删除当前行至文件头的内容 (用"c"命令代替"d"这些命令就都变成更改命令)。

9 更改字符

rx 
将当前光标下的字符更改为x(x为任意字符)
更改当前光标下的字符的大小写
xp 
交换两个字母。

10 定位及文件状态

CTRL-g 
显示当前编辑文件中当前光标所在行位置以及文件状态信息。
SHIFT-G 
则直接跳转到文件中的某一指定行

11 可视模式

进入行选择模式。
CTRL-v 
进入块选择模式。
vi[ 
选择一对 [] 中的所有字符
vi( 
选择一对 () 中的所有字符
vi< 
选择一对 <> 中的所有字符
vi{ 
选择一对 {} 中的所有字符
vit 
选择一对 HTML/XML 的标签内部的所有字符
vi” vi’ vi` 
选择一对引号字符 (” 或 ‘ 或 `) 中所有字符

12 键盘宏操作

qcharacter 
开始录制宏,character为a到z的任意字符
终止录制宏
@character 
调用先前录制的宏

13 恢复误操作

撤销最后执行的命令
修正之前对该行的操作
Ctrl+R 
Redo

14 查找与替换

/字符串 
在当前文件正向查找相应的字符串。继续查找同一个字符串,按n或/(ENTER),若要反向继续查找,按Shift+N,.*[]^%~$ 在Vi中具有特殊含义,若需要查找则应该加上转义字符"\"
 ?字符串 
在当前文件反向查找相应的字符串。继续查找同一个字符串,按n或/(ENTER),若要反向继续查找,按Shift+N,.*[]^%~$ 在Vi中具有特殊含义,若需要查找则应该加上转义字符"\"
 % 
查找配对的括号
:s/old/new/g 
在当前行替换old为new,若没有g则表示只替换一个。若要每个替换都向用户询问则应该用gc选项。
:#,#s/old/new/g 
在两行之间替换old为new,#,#代表的是两行的行号。
:%s/old/new/g 
替换整个文件中的每个匹配串。
:%s/^/xxx/g 
在每一行的行首插入xxx,^表示行首。
:%s/$/xxx/g 
在每一行的行尾插入xxx,^表示行尾。
向下搜索光标所在词。
向上搜索光标所在词。
:set hlsearch 
设置高亮
:set nohlsearch 
关闭高亮
:nohlsearch 
关闭当前已经设置的高亮
:set incsearch 
设置增量查找
:set noincsearch 
关闭增量查找

15 剪切、复制与粘贴

[n]x 
剪切光标右边n个字符,相当于d[n]l。
[n]X 
剪切光标左边n个字符,相当于d[n]h。
复制在可视模式下选中的文本。
yy or Y 
复制整行文本。
y[n]w 
复制一(n)个词。
y[n]l 
复制光标右边1(n)个字符。
y[n]h 
复制光标左边1(n)个字符。
y$Snbsp;
从光标当前位置复制到行尾。
y0 
从光标当前位置复制到行首。
:m,ny 
复制m行到n行的内容。
y1G或ygg 
复制光标以上的所有行。
yG 
复制光标以下的所有行。
删除(剪切)在可视模式下选中的文本。
d$ or D 
删除(剪切)当前位置到行尾的内容。
d[n]w 
删除(剪切)1(n)个单词
d[n]l 
删除(剪切)光标右边1(n)个字符。
d[n]h 
删除(剪切)光标左边1(n)个字符。
d0 
删除(剪切)当前位置到行首的内容
[n] dd 
删除(剪切)1(n)行。
:m,nd 
剪切m行到n行的内容。
d1G或dgg 
剪切光标以上的所有行。
dG 
剪切光标以下的所有行。
在光标之后粘贴。
在光标之前粘贴。

16 分割窗口

:split(
sp) [filename] : 水平分割窗口,如果指定文件名,则在新窗口内打开文件。
:nsplit(
nsp) [filename] : 水平分割出一个n行高的窗口,如果指定文件名,则在新窗口内打开文件。
:new 
水平分割出一个窗口,并编辑一个新文件。
:vsplit(
vsp) : 把当前窗口分割成水平分布的两个窗口,如果指定文件名,则在新窗口内打开文件。
:vnew 
垂直分割出一个新窗口。
ctrl+w + 
当前窗口增高一行。也可以用n增高n行。
ctrl+w - 
当前窗口减小一行。也可以用n减小n行。
ctrl+w_ 
当前窗口扩展到尽可能的大。

17 缩进缩出

[n]>> 
正常模式下,按两下>,即>>光标所在行会缩进。如果先按了n,再按>>,光标以下的n行会缩进。
[n]<< 
正常模式下,按两下<,即<<光标所在行会缩出。如果先按了n,再按<<,光标以下的n行会缩出。
[n]= 
如果在编辑代码文件,可以用=进行调整,在可视模式下,选择要调整的代码块,按=,代码会按书写规则缩排好,或者n=,调整n行代码的缩排。

18 多标签编辑

:tabe filename 
在新的标签中打开一个文件。
:tabn 
切换到下一个标签。
:tabp 
切换到上一个标签。

19 外部命令、文件保存与删除

:!cmd 
cmd即代表外部命令,比如:ls,列出当前目录文件。
:w 
保存文件内容默认文件名。
:w TEST 
保存文件内容至TEST文件。
:!rm TEST 
删除TEST文件。
:#,# w TEST 
保存两行之间文件内容至TEST文件。其中#,#代表两行号。
:e file 
关闭当前编辑的文件,并开启新的文件。如果对当前文件的修改未保存,vi会警告。
:e! file 
放弃对当前文件的修改,编辑新的文件。
:e+file 
开始新的文件,并从文件尾开始编辑。
:e+n file 
开始新的文件,并从第n行开始编辑。
:enew 
编辑一个未命名的新文档。
:e 
重新加载当前文档。
:e!  
重新加载当前文档,并丢弃已做的改动。
:wq 
保存并退出。
:x 
保存并退出。
:saveas newfilename 
另存为
:q! 或 ZZ 
不保存退出

20 其他

:set fileencodings 
查看编码
:set fileencodings 编码 
设置编码,例如set fileencodings=utf-8,gb2312
:set nu 
设置行号
:set nonu 
取消行号显示
posted on 2012-11-12 16:26  lexus  阅读(238)  评论(0编辑  收藏  举报