文本编辑软件:处理纯ASCII信息,vi,emacs
一,vim的基本概念基本上vim可以分为如下三种模式:
1) 命令行模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到末行模式,切换到此模式:在命令行模式,或者末行模式按ESC键1~2次。
2) 插入模式:只有在插入模式下,才可以做文字输入,切换到此模式:命令行模式下按i,a,o,I(行首),A(行尾),O(上一行)进入此模式。
3) 末行模式:将文件保存或退出vi,设置编辑环境,以及寻找、替换字符串、列出行号等,切换到此模式:命令行模式下按:键。
二,vim的基本操作
vim回车:显示vim使用引导信息。
1)进入vim
语法格式如下
$ vim [+][num] filename #+号后跟num(num为阿拉伯数字)指定将光标定位在打开后的文件的第几行行首,若+号后不跟num,则光标定位到到开后的文件的末行。
2)同时打开多个文件vim file1 file2 file3
多个文件间跳转方法:
在末行模式下输入:
:next(跳到下一个文件)
:prev(跳到上一个文件)
:last(跳到最后一个文件)
:first(跳到第一个文件)
3)以分屏形式打开多个文件:
语法格式为:
vim -[O|o] file1 file2 file3 #选项-O为垂直分屏;选项-o为水平分屏
不同文件间跳转:
Ctrl+W键松开按上下左右方向键即可。
一个文件的窗口分割(屏间跳转与上面一样):
Ctrl+w 松开 ----按 s 水平分屏
Ctrl+w 松开 ----按 v 垂直分屏
4)退出vim/保存文件
:q(退出vim)
:w(保存文件的修改)
:wq(保存文件并退出vim)
:q!(不保存文件,强制退出vim)
:x保存文件并退出vim()
命令行模式下:按ZZ保存退出vim
:qall(如果同时打开多个文件,输入此命令退出所有文件)
:wall(如果同时打开多个文件,输入此命令保存所有文件)
三,vim的常用命令(可以先打一个阿拉伯数字来说明指定的命令执行的数量)
0),进入输入模式:
i 在当前光标所在处前插入字符。
I 在当前光标所在行行首插入字符。
a 在当前光标所在处后插入字符。
A 在当前光标所在行行尾插入字符。
o 在当前光标所在行下面插入一行。
O 在当前光标所在行上面插入一行。
1),光标移动(下面的命令除了键盘上的方向键外,其他的命令只限在命令行模式才能生效!)
方向:H左L右J下K上 或者 键盘上的方向键也可以
单词间跳转: w:向后跳一个单词(词首) b:向前跳一个单词(词首)
句子间跳转: )跳到下一句 (跳到上一句
段落间跳转: {跳到上一段 }跳到下一段
行间跳转: 1G或者gg或者在末行模式输入“:1”可以跳转到第一行;命令行模式输入“#G”或者末行模式输入“:#”跳转到#行;命令行模式输入“G”跳转到最后一行。(#代表数字)
行首: 0或^
行尾: $
上翻一屏: ctrl+b
下翻一屏: ctrl+f
上翻半屏: ctrl+U
下翻半屏: ctrl+d
2),c命令详解(修改命令):
1, C or c$
表示修改当前行上光标后面的部分. 进入编辑状态.
2, c0 or c^
表示从光标处到当前行行首的部分进行修改,^代表首个非空格处。
3, cc or S
修改当前行. 进入编辑状态.
4, cw
从光标所在的位置开始到该单词结束进行修改. 进入编辑状态
5, cfx AND cFx
这里的 x 为一任意字符, cfx 表示修改从光标到下一个字符 x 之间的文本;
cFx 表示修改从光标到上一个字符 x 之间的文本.
6, cn|
修改从光标到当前行的第 n 个字符间的所有字符, n 正整数.
7, cnG and cG
这里的 n 为一任意自然数, cnG 表示修改当前行到第 n 行之间的所有行;
cG 表示修改当前行直至末行.
c 命令所删除的数据都存在缓冲区, 可以结合p/P命令构成剪切粘贴操作, 方法是:
先进行 c 命令, 再按 Esc 键返回命令模式, 最后才进行 p/P 命令.
3),其他命令介绍
r: 替换光标所在处的字符
R: 替换光标所到之处的字符
J: 把光标所处行的下一行内容接到当前行的行末
x: 删除光标所在位置的字符
X: 删除光标所在位置的前一个字符
dw: 删除光标所在位置的单词
db: 删除光标所在位置之前的一个单词
dd: 删除光标所在位置的一行
d0: 删除光标所在行的第一个字符到光标所在位置的前一个字符之间的内容
d$: 删除光标所在行的最后一个字符到光标所在位置的后一个字符之间的内容
d),d(,d{,d}等等,反正d跟上跳转命令即可
d1G:删除光标所在行到文件第一行之间的内容
dG:删除光标所在行到文件最后一行之间的内容
u:撤销上一次操作,#u
ctrl+r:重做上一次操作
ctrl+u:在输入模式下,撤销刚才输入的内容
4),复制、粘贴
yy:复制光标所在行
p:将复制的内容粘贴到光标所在的位置后面;P: 将复制的内容粘贴到光标所在的位置前面
4.1 vim的可视化模式(用文本高亮来选中文本,可用d删除或y复制)
方法:按[v|V]键后松开,然后按方向键选中文本,选中完毕后可以用命令编辑
[v|V]区别:v选中光标划过的字符;V选中光标划过的行
撤销选中:可以按ESC键两次,回到命令行模式
5,查找与替换(查找内容即p1支持正则表达式)
/string:从光标位置往文件尾部查找string,按n查找下一个,按N返回上一个
?string:从光标位置往文件头部查找string,按n查找下一个,按N返回上一个
:地址s/p1/p2/g:所有p1用p2替换(默认在当前行向下查找)。
:n1,n2s/p1/p2/gi:将从n1行到n2行中所有p1用p2替换
:%s/p1/p2/g:将所有行中所有p1用p2替换
:/pattern/s/p1/p2/gi
:/pattern/,/pattern/s/p1/p2/gi
示例:
:%s/\/tmp\/a.txt/\/dev\/null/g
分组引用示例:
:%s/\/D\1N/g
:%s/([Dd][Ee][Vv])/\1ice/g
And符号模式引用示例:
:%s/[Dd]ev/&ice/g
:%s/^#[[:space:]]*//
:%s/^[[:space:]]*/#&/
Y命令(类似tr转换字符集)示例:
:%y/abc/ABC/
注释一段代码:
:1,10s/^/#/
删除行开头的空白字符:
:%s/^[[:space:]]\{1,\}//
注意:p1可以使用正则表达式(BRE);'\'为转义符;模式分隔符可以使用除'/'外其他字符替代,如'@'、'#'等等;地址定界符除了上述写法外还可以使用模式匹配的方式(/pattern/s....),以及使用当前行的方式(.,+num | .,-num)其中‘.’号代表当前行,‘+num’(‘num’代表一个阿拉伯数字)代表当前行向下几行,‘-num’代表代表向上几行;‘i’命令代表忽略大小写进行匹配,‘g’命令代表全局替换。
6,末行模式命令
删除行:
:1,7d
:%d (%表示全文)
末行地址定界演示
:1,$ ($表示末行)
:1,$-2 ($-2表示倒数第3行)
:1,+6 (1到7行)
:.,+e (.表示光标所在行,加上后面3行)
其他末行模式命令
:w file 将当前文件的内容写到文件file中
:e file 打开并编辑文件file,若文件不存在则新建一个。
:r file 将文件file的内容添加到当前编辑的文件中
:n 移动光标到第n行
:!command 执行shell命令command
:r!command 将命令command的输出结果添加到当前行
窗口属性定义
:set number | :set nonumber 设置是否显示行号
:set autoindent自动缩进
:set ignorecase 忽略大小写
:set showmatch 显示匹配的括号
:syntax on | :syntax off 打开/关闭语法着色
:set hlsearch 搜索高亮显示
设置的窗口属性仅对当前进程有效。要想永久有效需要更改vim配置文件。和bash配置文件一样,分为(/etc/vimrc全局有效以及$HOME/.vimrc(需要自己创建)个人用户有效),以及后面的设置可以覆盖前面的设置(vim加载配置文件的顺序为:--------/etc/vimrc--------$HOME/.vimrc)。
Vim帮助信息
:help