列表:
Linux笔记——vim常用操作及扩展补充[手册]
Linux笔记——linux常用命令集合
Linux笔记——命令:awk
Linux笔记——命令:sed
Linux笔记——命令:grep
Linux笔记——命令:find
Linux笔记——命令:Sort,uniq,join,cut,paste,split
Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数
Linux笔记——条件测试test
Linux笔记——控制流
Linux笔记——shell补充:参数传递&函数等
Linux笔记——正则表达式入门及应用
Linux笔记——linux进程
Linux笔记——SVN命令总结
rpm&yum包管理命令总结
鉴于博客,表格&排版&颜色标记等等无法显示,大家可以下载这个笔记的资源
12个文档,不需要积分,以目录+表格+颜色标记形式
下载资源地址http://download.csdn.net/detail/wklken/3815477
The end! Thx! wklken的笔记
-----------------------------------------------
目的: 快速熟悉 or 复习 vim操作
学东西需要循序渐进,不断总结
版本1.0
录入时间2011.6.18
版本2.0
修改及补充 2011.7.4-2011.7-29
版本3.0
使用三个月后再次整理,补充一些常用且遗漏的命令等 2011.11.18
资料来源:手册+网络+书籍
以下是全文,可做训练稿用,也可作为手册用。
命令
1.打开文件操作... 1
2.存储及退出文件... 2
3.模式转换... 2
4.光标移动... 3
5.插入... 4
6.删除... 4
7.复制和黏贴... 5
8.查找... 5
9.替换... 6
10.编辑多个文件... 6
11.其他命令... 6
12分屏操作... 7
13 vim的帮助指令... 9
vi |
进入vi而不读入任何文件 |
vi filename |
进入vi并读入指定名称的文件(新、旧文件均可)。 |
vi +n filename |
进入vi并且由文件的第几行开始。 |
vi + filename |
进入vi并且由文件的最后一行开始。 |
vi +/pattern filename |
打开文件,并将光标置于第一个与pattern匹配的串处 |
vi filename....filename |
打开多个文件,依次进行编辑 |
vi -r filename |
在上次正用vi编辑时发生系统崩溃,恢复filename |
vimdiff fileA fileB |
比较编辑两个不同的文件 |
:wq 或者 :x |
存文件,并且退出vi. |
:q |
不作任何修改并退出vi。 |
:q! |
放弃任何修改并退出vi。 |
:w |
保存当前文件 |
:w filename |
存入指定文件,相当于另存为,但未退出vi(若未指定文件名则为当前工作的文件名)【保存,另存为】 |
:n1,n2 w ! command |
将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入【注意空格】例如 :1,4 w! grep tom |
:!command |
暂时退出vi并执行shell指令,执行完毕后再回到vi。【后期应该有用】 |
:r!command |
将命令command的输出结果放到当前行【强大】 |
:sh |
暂时退出vi到系统下,结束时按Ctrl + d则回到vi。 |
:e filename |
打开文件filename进行编辑[相当于退出当前的并打开另一个文件] |
:e! |
放弃修改文件内容,重新载入该文件编辑 |
:w !sudo tee % |
以普通用户身份打开的vim ,修改后以root身份保存 |
1) 命令行模式commandmode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
a i o 进入插入模式
:进入底行模式
2) 插入模式(Insertmode)
只有在Insert mode下,才可以做文字输入
按「ESC」键可回到命令行模式。
3) 底行模式(lastline mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
行
0 |
移到当前一行的开始[Home] |
$ |
移到当前一行的最后[End] |
k |
光标上移一行 |
j |
光标下移一行 |
Enter |
光标下移一行 |
n+ |
光标下移n行【按上档键 数字shift +】 |
n- |
光标上移n行 |
G |
移到文件的最后一行 |
nG或者:n |
移到文件的第n行 |
gg |
移动到文档的开始 |
[[ |
文件开始位置——开始行 |
]] |
文件结束位置——末尾行 |
H |
光标移至屏幕顶行 HEAD |
M |
移到屏幕的中间行开头 Middle |
L |
移到屏幕的最后一行 LAST |
( |
光标移至句首 |
) |
光标移至句尾 |
字符 默认1,可加n
h |
光标左移一个字符[回退键Backspace] |
l |
光标右移一个字符[空格键Space] |
单词 默认1,可加n
w |
光标跳到下个word的第一个字母 [常用] |
W |
移到下一个字的开头,忽略标点符号 |
b |
光标回到上个word的第一个字母 |
B |
移到前一个字的开头,忽略标点符号 BACK |
e |
光标跳到下个word的最後一个字母 |
E |
移到下一个字的结尾,忽略标点符号 END |
段落
{ |
移到段落的开头 |
} |
移到下一个段落的开头 |
屏幕
Ctrl+u |
向文件首翻半屏up |
Ctrl+d |
向文件尾翻半屏down |
Ctrl+f |
向文件尾翻一屏 forward |
Ctrl+b |
向文件首翻一屏back |
i |
在光标前开始插入字符 insert |
I |
在当前行首开始插入字符 |
a |
在光标位置后开始加字 append |
A |
在光标所在行的最后面开始加字 |
o |
在光标下加一空白行并开始加字 open |
O |
在光标上加一空白行并开始加字 |
r |
替换当前字符 |
R |
替换当前字符及其后的字符【当前及其后字符被覆盖】 |
s |
从当前光标位置处开始,以输入的文本替代指定数目的字符【默认删除光标所在字符,输入内容插入之】 |
S |
删除指定数目的行,并以所输入文本代替之【默认删除当前行内容,输入内容作为当前行新内容】 |
字符
nx |
删除由光标位置起始后的n个字符(含光标位置,按一个x表示删除光标所在的字符) |
nX |
删除由光标位置起始前的n个字符(含光标位置,按一个x表示删除光标所在的字符) |
d0 |
删至行首 |
d$ |
删至行尾 |
d回车 |
删除2行【包括光标一行】 |
单词
ndw |
删除光标处开始及其后的n-1个字 |
ndb |
删除光标处开始及其前的n-1个字 |
行
ndd |
删除当前行及其后n-1行 |
:n1,n2 d |
将 n1行到n2行之间的内容删除 |
【删除就是剪切,它会覆盖之前复制的内容】
删除并进入输入模式
cw |
删除当前字,并进入输入模式 |
ncw |
删除当前字 及其后的n-1个字,并进入输入模式 |
cc |
删除当前行,并进入输入模式 |
ncc |
删除当前行 及其后的n-1行,并进入输入模式 |
nyl |
复制n个字符 |
yw |
复制一个单词 |
y$ |
复制从当前位置到行尾 |
yG |
复制从所在行到最后一行 |
nyy |
将光标所在位置开始的n行数据复制暂存 |
复制选择的很多行:先使用V进入visual 模式,然后j向下移动到你想复制的行为止,然后y |
|
p |
复制暂存数据在光标的下一行 |
P |
复制暂存数据在光标的上一行 |
:n1,n2 co n3 |
将n1行到n2行之间的内容拷贝到第n3+1行【n3行的下一行】 |
:n1,n2 m n3 |
将n1行到n2行之间的内容移至到第n3行下 |
J |
把下一行的数据连接到本行之后 |
/pattern |
从光标开始处向文件尾搜索pattern |
?pattern |
从光标开始处向文件首搜索pattern |
n |
在同一方向重复上一次搜索命令 |
N |
在反方向上重复上一次搜索命令 |
# |
查找当前光标所在位置的单词 相当于?word |
* |
查找当前光标所在位置的单词 相当于/word |
% |
查找对应的( [ { 匹配 |
:s/p1/p2/g |
将当前行中所有p1均用p2替代 |
:s/p1/p2/c |
查找替换要求确认 |
:n1,n2s/p1/p2/g |
将第n1至n2行中所有p1均用p2替代 |
:g/p1/s//p2/option |
将文件中所有p1均用p2替换 option=g表示文件中所有的text1均被取代,若未输入任何option,则只有各行中的第一个出现的text1被取代 option=go 在屏幕显示各取代的行 option=gc 在每个字串取代之前要求确认 |
:%s/p1/p2/g |
全局,使用p2替换p1 |
:%s/p1/p2/gc |
替换前询问 |
其中s为substitute,%表示所有行,g表示global
:r filename |
将指定文件的内容读入光标所在行下 |
:args |
显示编辑名单中的各个文件名 |
:n |
读入编辑名单中的下一个文件 |
:rew |
读入编辑名单中的第一个文件 |
:e# |
读入编辑名单内的前一个文件 |
:e file |
读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则应先以: w 存档。 |
:e! file |
强迫读入另一个文件进入vi,原文件不作存档动作。 |
:e |
放弃当前一切修改,重新载入文件 |
. |
重复前一指令 |
u |
取消前一指令 |
:u |
撤销前一次的操作 |
V |
进入visual 模式【ESC】退出 多行选中模式 |
Ctrl + r |
恢复【只对u有效】 |
Ctrl + l |
刷新屏幕显示 |
Ctrl+v 然后 ctrl+A是^A Ctrl+I是\t |
输入特殊字符 |
Ctrl+v 然后用j、k、l、h或方向键上下选中多列,之后 I I a A r x等,最后按esc,生效 |
Vim列操作 |
:set number 简写 :se nonum |
显示文件的行号,但不会存文件 |
:set nonumber 简写:se num |
解除行号显示 |
:set list |
显示制表位(Ctrl+I)和行尾标志($) |
:set nolist |
|
:set ai |
设置每行起始位置(以光标当前位置为起始) |
:set noai |
取消行起始位置设定 |
:f 或<Ctrl> + g |
告诉用户有关现行编辑文件的数据 |
:se wrap |
将超出屏幕行分多行显示 |
【set 可以简写为se】
附录:set的所有选项
all |
列出所有选项设置情况 |
term |
设置终端类型 |
ignorance |
在搜索中忽略大小写 |
list |
显示制表位(Ctrl+I)和行尾标志($) 与nolist对应 查看不可打印字符(Tab和空格屏幕打印是没区别的,加上它就有区别了) |
number |
显示行号,nonumber隐去行号 设置行号/不要行号::set number / :set nonumber |
report |
显示由面向行的命令修改过的数目 |
terse |
显示简短的警告信息 |
warn |
在转到别的文件时若没保存当前文件则显示NO write信息 |
nomagic |
允许在搜索模式中,使用前面不带“\”的特殊字符 |
nowrapscan |
禁止vi在搜索到达文件两端时,又从另一端开始 |
mesg |
允许vi显示其他用户用write写到自己终端上的信息 |
分屏启动Vim
vim -On file1 file2 ...
|
使用大写的O参数来垂直分屏 |
vim -on file1 file2 ... |
使用小写的o参数来水平分屏。 |
注释: n是数字,表示分成几个屏【只会出现n屏,后面跟多了文件不会显示】
分屏
Ctrl+W s |
上下分割当前打开的文件 |
Ctrl+W v |
左右分割当前打开的文件 |
:sp filename |
上下分割,并打开一个新的文件 |
:vsp filename |
左右分割,并打开一个新的文件 |
关闭分屏
Ctrl+W c |
关闭当前窗口【关闭不了最后一个】 |
Ctrl+W q |
关闭当前窗口,如果只剩最后一个了,则退出Vim |
:qa |
退出vim,并关闭所有屏 |
:wqa |
保存所有分屏并关闭 |
移动光标
要在各个屏间切换,只需要先按一下Ctrl+W
Ctrl+W l |
把光标移到右边的屏 |
Ctrl+W h |
把光标移到左边的屏中 |
Ctrl+W k |
把光标移到上边的屏中 |
Ctrl+W j |
把光标移到下边的屏中 |
Ctrl+W w |
把光标移到下一个的屏中 |
移动分屏
这个功能还是使用了Vim的光标键,只不过都是大写。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。
Ctrl+W L |
向右移动 |
Ctrl+W H |
向左移动 |
Ctrl+W K |
向上移动 |
Ctrl+W J |
向下移动 |
屏幕尺寸
下面是改变尺寸的一些操作,主要是高度,对于宽度你可以使用Ctrl+W <或是>,但这可能需要最新的版本才支持。
Ctrl+W = |
让所有的屏都有一样的高度 |
Ctrl+W +【shift +=键】 |
增加高度 |
Ctrl+W -【shift –键】 |
减少高度 |
Vim 拥有一个细致全面的在线帮助系统,进入帮助
启动
<HELP> 键 (如果键盘上有的话) |
<F1>键(如果键盘上有的话) |
:help<回车> |
:help command<回车> 例如:help w <回车> |
退出
:q <回车> |
补充两张图: