技术源于努力
努力实现梦想

vim详解 linux入门

Vi是一个全屏的编辑器,又是个模式化的编辑器,在不同的模式中,操作键的意义是不同的

使用vi新建或者打开一个文件:vi  /path/to/somefile 注意了,如果用vi后边跟多个文件的话,由于vi是一个全屏编辑器,那么它会显示一个文件内容,
如果vi后边跟的是一个已经存在的文件,那么就是打开已经存在的文件,如果是不存在的文件名,表示新建一个文件

Vim模式:

编辑模式(命令模式):所有的命令都是针对全文本的
输入模式:大多数进入的内容都被保存在文本中
末行模式:在屏幕最下边可以键入命令,可以输入很多编辑命令意外的管理命令。

打开vi的时候,默认是出于编辑模式的。模式之间的转换为:
编辑模式到输入模式:
i:在当前光标所在字符的前面,转为输入模式。
a:在当前光标所在字符的后面,转为输入模式。
o: 在当前光标所在行的下方新建一行,转为输入模式。
I:在当前光标所在行的行首,转换为输入模式
A:在当前光标所在行的行尾,转换为输入模式
O:在当前光标所在行的上方新建一行,转换为输入模式
输入模式到编辑模式:Esc键

编辑模式到末行模式:只能是由编辑模式进入末行模式,输入模式是不能直接到末行模式的,只能先转到编辑模式后才能进入末行模式。
:键入这个:即可定位到末尾。进入了末尾也可进行很多文本的操作。
:NUMd 表示删除第NUM行
:NUM1,NUM2d 删除第NUM1到NUM2行的内容
:set number或者:set nu显示文件行号
:! COMMAND 执行shell命令,按任意键回到vim 

末行模式到编辑模式:Esc键,有的时候可能需要两次敲击esc

一、打开文件并快速定位光标

Vim +NUM /path/to/somefile 表示打开这个file,将光标指定到NUM

Vim + /path/to/somefile表示打开这个file,将光标指定到文件最后一行上

Vim +/pattern /path/to/somefile 表示打开这个file,将光标指定到第一次被模式(pattern)匹配到的行

二、文件关闭:

1、在末行模式关闭文件

         :w 保存

         :q 不保存退出

         :!强制执行,文件是只读属性的,但是对于管理员来说也是可以执行编辑的,只是这里需要强制的编辑

         :wq 保存退出

         :wq! 强行保存退出

         😡 保存退出

2、在编辑模式下退出:

         ZZ:保存退出,注意了,如果这个是只读文件,就不能这样操作,会提示你加上!,但是你这是快捷退出方式,所以还是需要到末行模式退出。

三、光标移动:这是在编辑模式下的操作

1、逐字符移动:这是在编辑模式下的操作      

         h:向左

         l:向右

         j:向下

         k:向上

         num移动键:可以移动指定num字符的光标:例如:3h 5l 2j 4k

2、逐单词移动
w:移动到下一个单词的词首
e:移动到当前单词或者下一个单词的词尾。
b:移动到当前或者前一个单词的词首
num移动键:可以移动指定num字符的光标:例如:3w 5e 2b
3、行内跳转:
0:表示移动到行首,绝对行首,不管行首是不是空白字符
^:表示移动到行首,只移动到行首第一个单词的词首
$:绝对行尾
4、行间跳转:
NUMG:跳转到NUM行上
G:跳转到最后一行
末行模式下:直接给出行号回车即可跳转到指定行

四、翻屏操作:编辑模式下
Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏

五、编辑命令:编辑模式下
x:删除光标所在处的单个字符
NUMx:删除光标所在处向后公NUM个字符

六、删除命令:d
$d:表示删除当前光标到行尾的内容
0d:表示删除当前光标到行首的内容
dw:一个单词一个单词的删除
NUMdw:删除当前光标所在单词及向后共NUM个单词。
dd:删除当前光标所在行
NUMdd:删除包括当前光标所在行在内的NUM行
末行模式下:NUM1,NUM2d:删除NUM1到NUM2行。
例如>.,100d当前行到100行删除
>.,+5d 从当前行向下5行的内容删除

七、粘贴命令:编辑模式下
P:如果删除的或者复制的为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至贯标所在字符的前边。
p: 如果删除的或者复制的为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至贯标所在字符的后边。

八、复制命令:y,用法同d
>yy:复制一行
>3yy:复制三行
……..

九、修改;先删除内容,再转为输入模式, 编辑模式下
c:用法同d命令

十、替换:r将指定内容替换成指定字符编辑模式下
直接在编辑模式下:将光标指定到要替换的单个字符,然后按r和要替换的内容即可。
r NUM 替换的单个字符 表示将包含光标的字符后边共NUM个字符都替换成要替换的单个字符
eg:r 3 a 将光标所在字符及后共3个字符都替换成a
R:直接转换成替换模式(REPLACE),直接输入内容,会直接替换的。并用esc退出替换模式。

十一、撤销编辑操作:u   编辑模式下
u:撤销前一次的操作
连续u命令可撤销此前N次编辑操作,由于内存中会保存进50次的操作,所以能取消的操作也只能是50次以内。
还原最后一次撤销操作:ctrl+r

十二、重复前一次编辑操作:.    编辑模式下

十三、可视化模式:  编辑模式下
V或者v:
v:按字符选取
V:按矩形块区域选取

十四、查找  编辑模式下
/pattern 根据pattern查找,从文件到尾部的操作
?pattern根据pattern查找,从文件到首部的操作
n:下一个匹配到的结果
N:上一个匹配到的结果

十五:在末行模式下:s查找并替换。
用法和sed一样
>.,$ s/th/TH/g 将文本中当前行到结束行中所有的th替换成TH
>% s/th/TH/g 将本文中所有的th替换成TH

十六、使用vim编辑多个文件  末行模式
Vim file1 file2… 默认是显示file1的内容
在末行模式下输入:next 切换至下一个文件
在末行模式下输入:prev 切换至上一个文件
在末行模式下输入:last 切换至最后一个文件
在末行模式下输入:first 切换至第一个文件
同时可以将多个文件的数据进行交互,所以可以将file1的删除行粘贴到file2中
退出::qa 全部退出

十七、分屏显示一个文件,编辑模式下
Ctrl+w ,s 水平拆分窗口
Ctrl+w,向上下键 可以将光标切换到上、下边的屏幕中去
Ctrl+w,v 垂直拆分窗口。
Ctrl+w,向左右键 可以将光标切换到左、右边的屏幕中去
qa 全部退出
十八、分窗口显示多个文件 在shell中
Vim –o file1 file2 … 垂直拆分水平显示多个文件内容
Vim –O file1 file2 …. 水平拆分垂直显示多个文件内容
qa 全部退出:

十九、将当前文件另存为另外一个文件
在末行模式下使用w
:w /path/to/somewhere 另存为另外文件
:add1,add2w /path/to/somewhere 将文本中的某些行内容另存为另外的文件

二十、将另外一个文件的内容附加在当前文件中,这就是读命令,在末行模式下
:r /path/to/somefile 在当前光标所在行后填充新的文件内容,合并两个文件

二十一:跟shell交互,在末行模式下
: ! COMMAND

二十二、高级部分,末行模式下
1、 显示或者取消行号
a) :set nu 显示行号
b) :set nonu 取消行号
2、 显示忽略或者区分字符大小写
a) :set ignorecase 简写成:set ic 忽略大小写显示
b) :set noignorecase简写成:set noic显示区分大小写
3、 设定自动缩进
a) :set autoindent 简写成:set ai 缩进
b) :set noautoindent 简写成:set noai 不缩进
4、 搜索的内容不让背景高亮显示。
a) :set nohlsearch取消背景高亮显示搜索到的文本
b) :set hlsearch 设置背景高亮显示搜索到的文本
5、 语法高亮
a) :syntax on语法着色
b) :syntax off 关闭语法着色

二十三、这些设定只对当前的vim有效,如果要想设定默认的vim打开后的操作,就需要设定vim的设置文件了。
全局vim配置文件:/etc/vimrc 修改这个文件对所有的使用者都有效
用户的vim配置文件为:~/.vimrc 修改这个文件只对当前用户有效
在家目录下如果没有.vimrc这个文件的话,可以自己建立一个。但是一定要是隐藏文件,直接写命令即可。
末行模式下相对地址表示法:
.表示当前行
$最后一行
+#:向下#行
$-1:倒数第2行
%:表示全文范围

Vim有一个学习导师,教你怎样去学习vim,直接用命令vimtutor,

赞(0) 感谢小主打赏
未经允许不得转载:新域软件科技 » vim详解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏