Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17966
  • 博文数量: 14
  • 博客积分: 335
  • 博客等级: 一等列兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-14 19:09
文章分类
文章存档

2011年(14)

我的朋友
最近访客

分类: LINUX

2011-02-26 13:56:34

vi 共分为三种模式(vim也一样):
  •  一般模式:一进入文件就是一般模式了。在这个模式中, 可以使用『上下左右』按键来移动光标,可以『删除字符』或『删除整行』或『复制、粘贴』处理文件。
  •  编辑模式:按下『i, I,o, O, a, A, r, R』等字母之后进入编辑模式,编辑模式可以编辑文件内容。要回到一般模式,按下『Esc』按键可退出编辑模式。
  •  命令模式:在一般模式当中,输入『 : 或 / 或 ? 』就可以将光标移动到最底行,可以提供『搜寻资料』,读取、存盘、大量取代字符、离开 vi 、显示行号等动作。
 
 
特别说明:
Vi具有可恢复功能的呢!比如:当编辑/tmp/passwd,/tmp下会产生一个临时文件,文件名为/tmp/.passwd.swp,所有的修改都会暂时存在这个文件当中,万一发生一些突发时间,如系统挂了,那下次再重新vi /tmp/passwd时,系统会告诉,是否需要恢复Recovery成修改过程中的模样!按下(R)将数据恢复到修改过程的样子,而不是原文件!也就是说能恢复到以前编辑时候的样子。
 

相关操作:
多窗口情况下的按键功能
 
:sp [filename]
 开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新文件,否则表示两个窗口为同一个文件内容(同步显示)。
 
[ctrl]+wj
 按下ctrl不放,再按w后放开所有的键,再按下j,可移动到下方窗口
 
[ctrl]+wk
 同上,不过光标移动到上面的窗口。
 
[ctrl]+wq
 结束离开
 
区块选择的按键意义
 
v
 字符选择,会将光标经过的地方反白选择!
 
V
 行选择,会将光标经过的行反白选择!
 
[Ctrl]+v
 区块选择,可以用长方形的方式选择资料
 
y
 将反白的地方复制起来
 
d
 将反白的地方删除掉
 
多文件编辑的按键,同时打开多个文件后,即vim file1 file2
 
:n
 编辑下一个文件
 
:N
 编辑上一个文件
 
:files
 列出目前这个 vim的开启的所有文件
 
vim的环境常用设定参数,这些动作会被记录在~/.viminfo
 
:set nu
 设定行号!取消 :set nonu
 
:set hlsearch
 设定是否将搜寻的字符串反色。 默认是开启的,取消 :set nohlsearch。
 
:set autoindent
 自动缩排, 取消 :set noautoindent。
 
:set backup
 一般默认是 nobackup, 如果设定 backup,当更动任何一个文件,则源文件会被另存成一个文件为 filename~的文件。
 
:set ruler
 状态列说明, ruler就是在显示或不显示该设定值!
 
:set showmode
 显示 --INSERT--之类的在左下角的状态列。
 
:set backspace=(012)
 当backspac为2时,可以删除任意值;0或1时,仅可删除刚输入的字符,无法删除原本就已经存在的文字!
 
:set all
 显示目前所有的环境参数设定值。
 
:syntax (off|on)
 依据程序相关语法显示不同颜色!取消 :syntax off。
 
一般模式: 移动光标的方法
 
如果想要向下移动30行,可使用 "30j"或 "30↓"的组合按键!方向加行数
 
0
 数字0:移动到这一行的最前面字符处 (常用)
 
$
 移动到这一行的最后面字符处(常用)
 
H
 光标移动到这个屏幕的最上方那一行
 
M
 光标移动到这个屏幕的中央那一行
 
L
 光标移动到这个屏幕的最下方那一行
 
G
 移动到这个文件的最后一行(常用)
 
nG
 n为数字。移动到这个文件的第 n行。(可配合 :set nu)
 
gg
 移动到这个文件的第一行,相当于 1G啊! (常用)
 
n
 n为数字。光标向下移动 n行(常用)
 
一般模式: 搜索与取代
 
/word
 寻找名称 word的字符串。(常用)
 
?word
 向光标之上寻找一个字符串名称为 word的字符串。
 
n
 代表向下『重复前一个搜索的动作』的意思。。
 
N
 这个 N是英文按键。与 n刚好相反。
 
:n1,n2s/word1/word2/g
 n1与 n2为数字。在第 n1与 n2行之间寻找 word1这个字符串,并将该字符串取代为 word2!(常用)
 
:1,$s/word1/word2/g
 从第一行到最后一行寻找 word1字符串,并将该字符串取代为 word2!(常用)
 
:1,$s/word1/word2/gc
 从第一行到最后一行寻找word1字符串,并将该字符串取代为 word2!且在取代前显示提示字符: (conform)是否需要取代!(常用)
 
一般模式: 删除、复制与贴上
 
x, X
 在一行字当中,x为向后删除一个字符 (相当于 [del]按键), X为向前删除一个字符(相当于 [backspace]) (常用)
 
dd
 删除光标所在的那一整列(常用)
 
ndd
 n为数字。删除光标所在的向下 n列
 
d$
 删除光标所在处,到该行的最后一个字符
 
d0
 那个是数字的 0,删除游标所在处,到该行的最前面一个字符
 
yy
 复制光标所在的那一行(常用)
 
nyy
 n为数字。复制光标所在的向下 n列(常用)
 
y0
 复制光标所在的那个字符到该行行首的所有数据
 
y$
 复制光标所在的那个字符到该行行尾的所有数据
 
p, P
 p为将已复制的数据在光标下一行贴上,P则为上一行!。 (常用)
 
J
 将光标所在列与下一列的数据结合成同一列
 
u
 复原前一个动作。(常用)
 
.
 重复前一个动作的意思。(常用)
 
进入编辑模式
 
i, I
 i为从目前光标所在处插入,所有文字后移! I为在所在行的第一个非空格符处开始插入。 (常用)
 
a, A
 与i,I相反。(常用)
 
o, O
 o为在光标所在的下一行处插入新的一行; O为在目前光标所在处的上一行插入新的一行!(常用)
 
r, R
 r会取代光标所在的那一个字符;R会一直取代光标所在的文字,直到按下ESC为止;(常用)
 
Esc
 退出编辑模式,回到一般模式中(常用)
 
命令模式
 
:w
 将编辑的数据写入硬盘文件中(常用)
 
:w!
 若文件属性为『只读』时,强制写入该文件。
 
:q
 离开 vi (常用)
 
:q!
 使用 !为强制离开不储存文件。
 
:wq
 储存后离开,若为 :wq!则为强制储存后离开 (常用)
 
:e!
 将文件还原到最原始的状态!
 
ZZ
 储存后离开!
 
:w [filename]
 将编辑的数据储存成另一个文件(类似另存为)
 
:r [filename]
 在编辑的数据中,读入另一个文件的数据。亦即将filename这个文件内容加到光标所在行后面
 
:n1,n2 w [filename]
 将 n1到 n2的内容储存成 filename这个文件。
 
:! command
 暂时离开vi到命令模式,执行 command的显示结果!例如:! ls /home可在vi当中察看/home底下以 ls输出的文件信息!
 
 
 

此外,注意下linux的断行字符

DOS与Linux的断行字符
Ø DOS使用的断行字符为 ^M$,称为CR与LF两个符号。
Ø Linux仅有 LF ($)断行符号。
在Linux下的命令开始执行时,判断依据是『Enter』,其实Linux的Enter就是LF符号。由于DOS的断行符多个 ^M的符号,这样,如果一个shell script的程序文件,在linux下可能程序无法执行。所以要将格式转换成为Linux的断行字符!可以用vim编辑!也可以用命令:
v # dos2unix [-kn] file [newfile]
v # unix2dos [-kn] file [newfile]
参数:
-k :保留该文件原本的mtime时间格式!(修改时间)
-n :保留原本的旧文件,转换后输出到新文文件。
例:将hosts文件格式更新为dos格式。
# unix2dos -k hosts
unix2dos: converting file hosts to DOS format ...

例:将hosts.dos转换为Linux格式到hosts.linux
 
 
注意:DOS与 Linux操作系统底下一些字符定义不同,不推荐在Windows当中编辑好文件后,再上传到Linux,很容易发生错误。如果在不同的系统之间复制一些纯文本文件时,记得也使用unix2dos或dos2unix来转换一下格式!
 
阅读(538) | 评论(0) | 转发(0) |
0

上一篇:2011-02-26

下一篇:2011-02-26

给主人留下些什么吧!~~