linux vi vim命令、快捷键

http://blog.csdn.net/pipisorry/article/details/23515091

vi /vim介绍

可以将 vim 规作 vi 的进阶版本,vim 可以用颜色戒底线等方式来显示一些特殊癿信息。 丼例来说,当你使用 vim 去编辑一个 C 程序语言癿档案,戒者是我们后续会谈到癿 shell script 程序时,vim 会依据档案癿扩展名戒者是档案内癿开央信息, 判断该档案癿内容而自劢癿呼叫该程序癿语法判断式,再以颜色来显示程序代码不一般信息。也就是说, 这个 vim 是个『程序编辑器』啦!甚至一些 Linux 基础配置文件内癿语法,都能够用 vim 来检查呢! 例如我们在第八章谈到癿 /etc/fstab 这个档案的内容。
简单来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以迚步癿地方。 vim 则可以说是程序开发者的一项很好用的工具,就连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个『程序开发工具』而不是文字处理软件~^_^。 因为 vim 里面加入了很多额外功能,例如支持正则表达式的搜寻架构、多档案编辑、区块复制等等。 这对亍我们在 Linux 上面迚行一些配置文件修订工作时,是很棒的!

 vi/vim三种模式及作用

 一般模式: 以 vi 打开一个档案就直接迚入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移劢光标,你可以使用『删除字符』戒『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你癿文件数据。
编辑模式: 在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面癿左下方会出现『 INSERT 戒 REPLACE 』癿字样,此时才可以迚行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。
指令列命令模式: 在一般模式当中,输入『 : / ? 』三个中癿任何一个按钮,就可以将光标移劢到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』癿劢作,而读叏、存盘、大量叏代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

Note:按下 [ESC] 按钮回到一般模式。


linux vi vim命令、快捷键_第1张图片

Note:vim 的三种模式只有一般模式可以与编辑、指令列模式切换,编辑模式不指令列模式间并不能切换

皮皮Blog



vi/vim命令及按键说明

进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首 
vi +n filename :打开文件,并将光标置于第n行首 
vi + filename :打开文件,并将光标置于最后一行首 
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename 
vi filename....filename :打开多个文件,依次进行编辑 


一般模式可用的按钮说明

光标移动、复制贴上、搜寻取代等

linux vi vim命令、快捷键_第2张图片

linux vi vim命令、快捷键_第3张图片


linux vi vim命令、快捷键_第4张图片

linux vi vim命令、快捷键_第5张图片

linux vi vim命令、快捷键_第6张图片

皮皮Blog


一般模式切换到编辑模式的可用的按钮说明

linux vi vim命令、快捷键_第7张图片


一般模式切换到指令列模式的可用的按钮说明

linux vi vim命令、快捷键_第8张图片

Note:

1. 在 vi 中数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。举例来说,要删除 50 行,则是用 『50dd』 ! 数字加在动作之前~那我要向下移移动20 行呢?那就是『20j』或者是『20↓』即可。

2. vim还有暂存档、救援回复与开启时的警告讯息功能

皮皮Blog


VIM中常用的替换模式总结

1,简单替换表达式
替换命令可以在全文中用一个单词替换另一个单词::%s/four/4/g
“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可
如果你有一个象“thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头:
:%s/\<four/4/g
显然,这样在处理“fourty” 的时候还是会出错。用“\>” 来解决这个问题:
:%s/\<four\>/4/g
如果你在编码,你可能只想替换注释中的 “four”,而保留代码中的。由于这很难指定,可以在替换命令中加一个 “c” 标记,这样,Vim 会在每次替换前提示你:
:%s/\<four\>/4/gc
2,删除多余的空格
要删除这些每行后面多余的空格,可以执行如下命令:
:%s/\s\+$//
命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是
“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。
3,匹配重复性模式
星号项 “*” 规定在它前面的项可以重复任意次。因此:/a*
匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因为零次也包含在内。星号 “*” 仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “ ”。因此这个命令:/ ab *
匹配: “ab”,”abab”,”ababab”,等等。而且也匹配 “”。
要避免匹配空字串,使用“\+”。这表示前面一项可以被匹配一次或多次。/ab\+
匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。
要匹配一个可选项,用“\=”。 例如:/folders\=匹配 “folder” 和 “folders”。
4,指定重复次数
要匹配某一项的特定次数重复,使用 “\{n,m}” 这样的形式。其中 “n” 和 “m” 都是数字。在它前面的那个项将被重复 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:/ab\{3,5}
匹配 “abbb”,”abbbb” 以及 “abbbbb”。
当 “n” 省略时,被默认为零。当 “m” 省略时,被默认为无限大。当 “,m” 省略时,就表示重复正好 “n” 次。例如:
模式 匹配次数 
\{,4} 0,1,2,3 或 4
\{3,} 3,4,5,等等
\{0,1} 0 或 1,同 \=
\{0,} 0 或 更多,同 *
\{1,} 1 或 更多,同 \+
\{3} 3
5,多选一匹配
在一个查找模式中,”或” 运算符是 “\|”。例如:/foo\|bar
这个命令匹配了 “foo” 或 “bar”。更多的抉择可以连在后面:/one\|two\|three
匹配 “one”,”two” 或 “three”。
如要匹配其多次重复,那么整个抉择结构须置于 “ ” 之间:/ foobar \+
这个命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。
再举个例子:
/end ifwhilefor 这个命令匹配 “endif”,”endwhile” 和 “endfor”。

皮皮Blog


vim 的额外功能

 3.1 区块选择(Visual Block) 

3.2 多档案编辑 

3.3 多窗口功能 

3.4 vim 环境设定不记录: ~/.vimrc, ~/.viminfo 

4. 其他 vim 使用注意事项 

4.1 中文编码癿问题 

4.2 DOS 不 Linux 癿断行字符: dos2unix, unix2dos 

4.3 语系编码转换: iconv

选项设置 
all:列出所有选项设置情况 
term:设置终端类型 
ignorance:在搜索中忽略大小写 
list:显示制表位(Ctrl+I)和行尾标志($) 
number:显示行号 
report:显示由面向行的命令修改过的数目 
terse:显示简短的警告信息 
warn:在转到别的文件时若没保存当前文件则显示NO write信息 
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符 
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始 
mesg:允许vi显示其他用户用write写到自己终端上的信息 

寄存器操作 
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字 
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字 
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

宏命令(Macros)
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的:
:qx
开始记录宏,并将结果存入寄存器x
q 退出记录模式
@x 播放记录在x寄存器中的宏命令
稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如@x20
可以重复20次。这个在文本的批处理中是非常有用的。
同时编辑多个文件
在vim众多的插件中,有一个叫minibuffer的插件,就是下面所说的标签页功能了,可以支持同时编辑多个文件。
标签命令
:tabe fn
在一个新的标签页中编辑文件fn
gt 切换到下一个标签页
gT 切换到上一个标签页
:tabr 切换到第一个标签页
:tabl 切换到最后一个标签页
:tabm [N] 把当前tab移动到第N个tab之后
跟eclipse, ue等的标签页是一个意思!
窗口命令 
ctrl+w s
水平分割窗口
ctrl+w w
切换窗口
ctrl+w q
退出当前窗口(由于同时有多个文件,此命令不会影响其他窗口)
ctrl+w v
垂直分割窗口
其他
vim在保存之前不会对文件做实际的修改,只是加载到缓冲区中,对文件的编辑其实是对缓冲区的编辑,直到:w时才会存入物理文件。 
:e file
把file加载到新的缓冲区中
:bn
跳转到下一个缓冲区
:bd
删除缓冲区(关闭文件)
:sp fn
分割窗口,并将fn加载到新的窗口中
”Ctrl + }“ 可以跳转到函数或变量的定义处,“Ctrl + o”可以返回上一个跳转页面。
书签
 ma
把当前位置存成标签a
`a
跳转到标签a处
可视模式
标记文本
v
进入可视模式,单字符模式
V
进入可视模式,行模式
ctrl+v
进入可视模式,列模式 ,类似于UE的列模式
o
跳转光标到选中块的另一个端点
U
将选中块中的内容转成大写
O
跳转光标到块的另一个端点
aw
选中一个字
ab
选中括号中的所有内容,包括括号本身
aB
选中{}括号中的所有内容
ib
选中括号中的内容,不含括号
iB
选中{}中的内容,不含{}
对标记进行动作
>
块右移
<
块左移
y
复制块
d
删除块
~
切换块中内容的大小写

皮皮Blog



vim 常用指令示意图

linux vi vim命令、快捷键_第9张图片

vi/vim键盘图

linux vi vim命令、快捷键_第10张图片

from:http://blog.csdn.net/pipisorry/article/details/23515091

ref:


你可能感兴趣的:(linux,vi,vim,文本编辑)