`
kanwoerzi
  • 浏览: 1643071 次
文章分类
社区版块
存档分类
最新评论

Linux笔记——vim常用操作及扩展补充[手册]

 
阅读更多

列表:

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

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

关闭当前窗口,如果只剩最后一个了,则退出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 –键】

减少高度

13 vim的帮助指令

Vim 拥有一个细致全面的在线帮助系统,进入帮助
启动

<HELP> 键 (如果键盘上有的话)

<F1>键(如果键盘上有的话)

:help<回车>

:help command<回车>

例如:help w <回车>
:help insert-index <回车>

退出

:q <回车>








补充两张图:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics