vi介绍
vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。
vim介绍
1. vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;
2. 因为程序简单,编辑速度相当快速。
3. vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。
4. vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。
5. vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。 这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。
vim配置文件
Windows系统的配置文件是vim安装目录下的vimrc文件。
Linux系统,RHEL和CentOS的配置文件是/etc/vimrc,Debian和Ubuntu的配置文件是/usr/share/vim/vimrc。
Mac OS X的配置文件是/usr/share/vim/vimrc。
vi的使用
基本上vi可以分为三种状态,分别是一般模式、编辑模式和命令行模式,各模式的功能区分如下:
一般模式:
以vi打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容, 也可以使用复制、粘贴来处理你的文件数据。
编辑模式:
在一般模式中可以进行删除、复制、粘贴等的操作,但是却无法编辑文件的内容,只有当到你按下【i, I, o, O, a, A, r, R】等任何一个字母之后才会进入编辑模式。这时候屏幕的左下方会出现【INSERT或 REPLACE】的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下【Esc】即可退出编辑模式。
命令行模式:
输入【 : / ? 】三个中的任何一个,就可以将光标移动到最底下那一行。在这个模式中, 可以提供查找、读取、存盘、替换字符、离开vi、显示行号等的动作则是在此模式中完成的!
基本操作
保存与退出
保存但不退出vim :w
保存并退出vim :wq
退出vim,但不保存更改 :q!
用其它文件名保存 :w filename
在现有文件中保存并覆盖源文件 :w! filename
非正常退出都会在相应的位置保留.swp文件。并且这是隐藏文件,看不见
每次再vim 的时候就会出现告警信息并且导致无法编辑。这个时候如果想要保存,那么先:revover--->编辑--->wq!-->删除对应的.swp文件(用rm -rf ./*.swp)。如果不想保存,那么直接删除.swp文件就可以了 。
剪切:
dd 剪切游标所在行整行
d^ 剪切至行首,或d0
d$ 剪切至行尾
dw 剪切一个word
dG 剪切至文件尾
撤销删除
撤销最近一次修改(可以重复使用) u
恢复上一步被撤销的操作 Ctrl+r
复制粘贴
光标放到第6行,
输入 2yy
光标放到第9行,
输入 p
此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。
复制粘贴出现缩进问题
:set paste 使得vim进入粘贴模式,则粘贴过来的内容能够保持原来的格式
但是在粘贴插入模式下代码是不会自动按格式缩进的,需要使用nopaste设置回来
:set nopaste
同一个窗口中同时编辑多个文件
1. 如果在终端中开没有打开vim,可以:
横向分割显示:
vim -O filename1 filename2
纵向分割显示:
vim -o filename1 filename2
2. 如果已经用vim打开了一个文件,想要在窗口中同时再打开另一个文件:
横向分割显示:
:vs filename
纵向分割显示:
:sp filename
其中,vs可以用vsplit替换,sp可以用split替换。
如果finename不存在,则会新建该文件并打开。
3. 关闭窗口
关闭光标所在的窗口:
:q
#或
:close
关闭除光标所在的窗口之外的其他窗口:
:only
关闭所有窗口:
:qa
4. 切换窗口
打开了多个窗口,需要在窗口之间切换时:
ctrl + w w
即按住ctrl键,再按两下w键。
或者ctrl + w <h|j|k|l>
即按住ctrl键,按一次w键,再按一次表示方向的h或j或k或l,则光标会切换到当前窗口的 左|下|上|右 侧的窗口
搜索字符串
(1)要自当前光标位置向上搜索,请使用以下命令:
/pattern
Enter
其中,pattern 表示要搜索的特定字符序列。
(2)要自当前光标位置向下搜索,请使用以下命令:
?pattern
Enter
按下 Enter 键后,vim将搜索指定的 pattern,并将光标定位在 pattern 的第一个字符处。要搜索 pattern 的其他匹配,请按n或N:
n,继续朝同一方向搜索pattern。
N,反方向进行搜索。
如果vim未找到指定的 pattern,光标位置将不变,屏幕底部显示以下消息:
Pattern: 未找到
设置/取消行号
设置行号
:set nu
取消行号
:set nonu
多行代码前后移动一个tab
一、连续的十几行到50行内的左右移动:
1. 第m行到第n行右移一个tab
:m,n>
2. 第m行到第n行左移一个tab
:m,n<
二、连续的I行的左右移动(I > 100):
向左:
1.移动到要处理的首行,输入ma
2.移动到要处理的尾行,输入<'a
向右,即将第二个命令中的 '<' 改为 '>'即可。
Tab设置为4个空格
对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:
TAB替换为空格:
:set ts=4
:set expandtab
:%retab!
空格替换为TAB:
:set ts=4
:set noexpandtab
:%retab!
加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB。
移动编辑位置操作
- h Move left
- j Move down
- k Move up
- l Move right
- w Move to next word
- W Move to next blank delimited word
- b Move to the beginning of the word
- B Move to the beginning of blank delimted word
- e Move to the end of the word
- E Move to the end of Blank delimited word
- ( Move a sentence back
- ) Move a sentence forward
- { Move a paragraph back
- } Move a paragraph forward
- 0 Move to the begining of the line
- $ Move to the end of the line
- 1G Move to the first line of the file
- G Move to the last line of the file
- nG Move to nth line of the file
- :n Move to nth line of the file
- fc Move forward to c
- Fc Move back to c
- H Move to top of screen
- M Move to middle of screen
- L Move to botton of screen
- % Move to associated ( ), { }, [ ]