列表:
Linux笔记——命令:Sort,uniq,join,cut,paste,split
Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数
鉴于博客,表格&排版&颜色标记等等无法显示,大家可以下载这个笔记的资源
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.打开文件操作
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 | 比较编辑两个不同的文件 |
2.存储及退出文件
: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身份保存 |
3.模式转换
1) 命令行模式commandmode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
a i o 进入插入模式
:进入底行模式
2) 插入模式(Insertmode)
只有在Insert mode下,才可以做文字输入
按「ESC」键可回到命令行模式。
3) 底行模式(lastline mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
4.光标移动
行
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 |
5.插入
i | 在光标前开始插入字符 insert |
I | 在当前行首开始插入字符 |
a | 在光标位置后开始加字 append |
A | 在光标所在行的最后面开始加字 |
o | 在光标下加一空白行并开始加字 open |
O | 在光标上加一空白行并开始加字 |
r | 替换当前字符 |
R | 替换当前字符及其后的字符【当前及其后字符被覆盖】 |
s | 从当前光标位置处开始,以输入的文本替代指定数目的字符【默认删除光标所在字符,输入内容插入之】 |
S | 删除指定数目的行,并以所输入文本代替之【默认删除当前行内容,输入内容作为当前行新内容】 |
6.删除
字符
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行,并进入输入模式 |
7.复制和黏贴
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 | 把下一行的数据连接到本行之后 |
8.查找
/pattern | 从光标开始处向文件尾搜索pattern |
?pattern | 从光标开始处向文件首搜索pattern |
n | 在同一方向重复上一次搜索命令 |
N | 在反方向上重复上一次搜索命令 |
# | 查找当前光标所在位置的单词 相当于?word |
* | 查找当前光标所在位置的单词 相当于/word |
% | 查找对应的( [ { 匹配 |
9.替换
: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
10.编辑多个文件
:r filename | 将指定文件的内容读入光标所在行下 |
:args | 显示编辑名单中的各个文件名 |
:n | 读入编辑名单中的下一个文件 |
:rew | 读入编辑名单中的第一个文件 |
:e# | 读入编辑名单内的前一个文件 |
:e file | 读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则应先以: w 存档。 |
:e! file | 强迫读入另一个文件进入vi,原文件不作存档动作。 |
:e | 放弃当前一切修改,重新载入文件 |
11.其他命令
. | 重复前一指令 |
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写到自己终端上的信息 |
12分屏操作
分屏启动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 | |
: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 –键】 | 减少高度 |
13 vim的帮助指令
Vim 拥有一个细致全面的在线帮助系统,进入帮助
启动
<HELP> 键 (如果键盘上有的话) |
<F1>键(如果键盘上有的话) |
:help<回车> |
:help command<回车> 例如:help w <回车> |
退出
:q <回车> |
补充两张图: