文档章节

vi和vim 操作笔记

Junn
 Junn
发布于 2012/09/26 22:16
字数 2100
阅读 328
收藏 3

精选30+云产品,助力企业轻松上云!>>>

Linux中vi(vim)编辑器的使用

Ubuntu下vim的设置


Vi有三种基本的工作模式:指令行模式、文本输入模式、行末模式。

指令模式(Command Mode) 下输入  a、i、o进入文本输入模式(Input Mode)
文本输入模式(Input Mode) 下按ESC进入指令模式(Command Mode)
指令模式(Command Mode)下输入:进入末行模式(Last line Mode)
末行模式(Last line Mode)下指令错误则返回指令模式(Command Mode)

下面分别介绍这三种模式:

1、指令模式(Command Mode)
指令模式主要使用方向键移动光标位置进行文字的编辑,下面列出了常用的操作命令及含义。
0  -----光标移动至行首
h  -----光标左移一格
l  -----光标右移一格
j  -----光标下移一行
k  -----光标上移一行
$+A-----将光标移动到该行最后
PageDn ----- 向下移动一页
PageUp ----- 向上移动一页
d+方向键 -----删除文字
dd -----删除整行
pp -----整行复制
r  -----修改光标所在的字符
S  -----删除光标所在的列,并进入输入模式

2、文本输入模式(Input Mode)
在指令模式下(Command Mode)按a/A键、i/I键、o/O键进入文本模式,文本输入模式的命令及其含义如下所示。
a -----在光标后开始插入
A -----在行尾开始插入
i -----从光标所在位置前面开始插入
I -----从光标所在列的第一个非空白字元前面开始插入
o -----在光标所在列下新增一列并进入输入模式
O -----在光标所在列上方新增一列并进入输入模式
ESC -----返回命令行模式

3、末行模式(Last line Mode)
末行模式主要进行一些文字编辑辅助功能,比如字串搜索、替代、保存文件等操作。主要命令如下
:q -----结束Vi程序,如果文件有过修改,先保存文件
:q! -----强制退出Vi程序
:wq  -----保存修改并退出程序
:set nu -----设置行号

需要注意的是,以上指令都是在英文输入模式下才有效,在linux 终端下有时我们用的是中文输入模式,输入中文的“:”就不能转换模式了。

0.关于保存

首先需要用vi编辑器打开文件:如 vi index.php,然后要有修改文件的权限进入插入模式;
保存:Esc到命令模式 敲冒号: 再wq!(3个字符),就保存退出了, [w是保存,q是退出,可单用,!是强制]

也可以是Shift+ZZ,保存退出的意思

==============================================

1.关于退出

:wq!  ----强制保存退出
:wq  ---- 保存退出
:x   ----- 作用和:wq 一样
ZZ  ---- 作用和:wq一样,(注意Z是大写的,并且不是在命令模式)
:q  ---- 退出
:q!  ---  强制退出

==============================================

2.关于移动

h : 在当前行向左移动一个字符
j:  移动到下一行
k:  移动到上一行
l:  在当前行向右移动一个字符
Ctrl +f:  向前滚动一页
Ctrl +b:  向后滚动一页
:n   将光标定位到第n行
:$   将光标定位到最后一行
0   将光标定位到本行的行首
$   将光标定位到本行的行尾
G   将光标定位到本文章的最后一行,与:   $功能相同。
H   将光标定位到屏幕的顶端
M   将光标定位到屏幕的中间
L   将光标定位到屏幕的底端

============================================

3.关于搜索

/:   后面跟要查找的东西,在文件中向前搜索  如:/hell  、  /hell* 等
?:  后面跟要查找的东西,在文件中向后搜索
n:  向前重复搜索
N:  向后重复搜索

用\c忽略大小写
/word_to_search\c

忽略大小写
:set ignorecase  或者:set ic

考虑大小写
:set noignorecase 或者:set noic

=============================================

4.关于复制

yy:  复制光标当前行
nyy:  复制光标当前行到当前行以下的n-1行
:1,100 co 200   将1~100的内容复制到第200行。
:100,102 co $   将100~102行的内容复制到最后一行。

==============================================

5.关于粘贴

p :   粘贴到当前行的下一行
P(大) :   粘贴到当前行的 上一行

==============================================

6.关于删除.剪切

dd   删除当前行
ndd   与nyy相似
dw   删除一个单词
ndw   与ndd相似
x    删除一个字符
nx   删除n个字符
dG  删除当前光标到文件末尾的所有内容
d0  删除当前光标到本行行首的所有内容
d$  删除当前光标到本行行尾的所有内容
:1,100d  删除1~100
:100d    删除第100行
:1,100 mo $   将1~100行的内容移动到最后一行。

=============================================

7.关于插入

i:  在当前位置的字符前面进入插入模式
I:  在当前行的开头进行插入
a:  在当前位置的字符后面进入插入模式
A:  在当前行的结尾进行插入
o:  在当前行下面打开一个新行进行插入
O:  在当前行上面打开一个新行进行插入

=============================================

8.关于撤销

u:  撤销上一次的更改
ctrl+r: 还原上次撤销

=============================================

9.关于替换

regexp:  是要匹配的式样
replacement:  是要替换的字符串

:s/regexp/replacement   -------------------------替换当前行出现的第一个式样
:s/regexp/replacement/g  -------------------------替换当前行所有的匹配
:%s/regexp/replacement/g  -----------------------替换文件中所有匹配式样

=============================================

PS:  还有一个重要的命令就是"." 命令,这个命令是用来重复上一命令的

vi里如何:撤销上次操作?,多次重复一组编辑操作?.......

a)   撤消上一个编辑操作。       ====>   u
b)   重复上一个编辑操作。       ====>   .
c)   还原被撤消的编辑操作。    ====>   Ctrl   +   r
d)   多次重复一组编辑操作。    ====>  ". " 命令可以重复最近一次的编辑动作.

==============================================

其它:

vi filename:用vi打开文件
vi 打开文件时,光标会自动定位到上一次打开的位置

vi + filename
打开文件时,光标会自动定位最后一行(一般情况,如要更改的信息在最后几行时)

vi +n filename
打开文件时,光标会自动定位到指定行

vi +/string filename  
打开文件时,将光标定位到匹配的字符串所在行上

vi filename filename
同时打开多个文件
切换下一个文件,输入:n
切换上一个文件,输入:prev

命令模式下输入“:set nu”
:set nu :显示行号
:set nonu:取消行号

vi/vim永久显示行号:

打开vimrc文件 vi /etc/vim/vimrc 编辑,在里面找一行,添加上set number,:wq保存退出 重新执行vim即可

yy:复制一行
p:粘贴
dd:删除
u:取消上一次操作

:x:功能和:wq是一样的 保存并退出

/str :查找匹配内容  n表示向后找、N表示向前找
:n 定位到指定行
!:强制  :q!强制退出   :w! 强制保存

\ 可以使命令换行

Ctrl+U 删除单签光标之前的所有字符
Ctrl+K 删除光标后所有字符
Ctrl+L 清空当前屏幕中显示内容
Ctrl+C 取消当前命令行的编辑

获得命令帮助

内部命令
Help 用来查看shell内部命令的帮助信息,比如 Help pwd

外部命令
--help  比如mkdir --help 查看mkdir帮助
使用man手册  比如man passwd 看passwd帮助

| 为管道 前面的输出结果作为后面命令的操作对象,比如  ifconfig | grep ‘eth0’,只显示有eth0的行
> 重定向输出 ifconfig >ifconfig.txt将输出到记事本文件

Vim中的swp文件:

vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件,如果原文件名是data,那么swp文件名就是.data.swp。如果文件正常退出,则此文件自动删除。以下两种情况不会删除swp文件:

1、Vim非正常退出,这种情况下,除非手动删除swp文件(也可以在vim提示时删除),否则它会一直存在。

2、多个程序同时编辑一个文件。

可用vim带-r参数编辑 #vim -r data 然后w保存即可,其中-r代表recovery 最后记得删除.swp文件:

#rm -rf .*swp

补充:
 
可以通过选项禁止产生swp文件
 
#set noswapfile

Junn
粉丝 144
博文 412
码字总数 288918
作品 0
海淀
技术主管
私信 提问
加载中
请先登录后再评论。
Vim学习笔记

相关文档 vim学习、各类插件配置与安装 vim列块操作 vim 撤销 回退操作 vi/vim下如何搜索字符串 vim 不同文件之间的复制与粘贴

2change
2018/12/24
0
0
四周第二次课(4月12日)

课程名称:5.1 vim介绍 笔记内容: vim是vi升级版 安装包 yum install -y vim-enhamced vi命令 vim命令有颜色 一般模式:删除行,复制黏贴行,没有进入编辑模式前进行操作 编辑模式:按完i键或...

志明咖
2018/04/12
5
0
Vim学习笔记

相关文档 vim学习、各类插件配置与安装 vim列块操作 vim 撤销 回退操作 vi/vim下如何搜索字符串 vim 不同文件之间的复制与粘贴

OSC_fly
2018/07/25
0
0
【Linux 系统编程】vim 的安装配置及使用

转载请标明出处: http://blog.csdn.net/u011974987/article/details/52700549 本文出自:【stromxu的博客】 前言 Learn vim and it will be your last text editor. There isn’t any bette......

徐昊
2016/11/03
4
0
vi学习笔记

1 VI 的学习... 1 2 插件的安装... 1 3 配置... 1 4 宏... 2 5 Vi常用命令... 3 5.1 命令模式下文件编辑操作... 3 5.1.1 行列模式... 4 5.1.2 列操作... 4 5.1.3 拷贝粘贴,摘自网络的常用操作...

osc_o8pkds53
2019/02/14
1
0

没有更多内容

加载失败,请刷新页面

加载更多

CPU缓存和内存屏障

CPU性能优化手段 - 缓存 为了提高程序的运行性能, 现代CPU在很多方面对程序进行了优化 例如: CPU高速缓存, 尽可能的避免处理器访问主内存的时间开销, 处理器大多会利用缓存以提高性能 多级缓...

CodingDiary
2019/07/08
25
0
关于我及本号的一些说明

初次关注本号的读者可能比较想了解本号的一些情况,这里单独写篇文章详细介绍下本人及本公号。 本人是一名 JAVA 后台开发工程师,17年毕业于某 211 工程硕士,校招进入某股份制银行做后台开发...

gaiserchan
2019/02/22
14
0
卷积神经网络学习路线(十二)| 继往开来的DenseNet

前言 这是卷积的第十二篇文章,主要为大家介绍一下DenseNet,值得一提的是DenseNet的作者也是上一篇卷积神经网络学习路线(十一)| Stochastic Depth(随机深度网络)论文的作者,即清华的黄...

BBuf
01/10
24
0
Android Camera原理之camera provider启动

1.camera provider进程介绍: cameraserver 736 1 274664 69564 binder_thread_read f3de10cc S android.hardware.camera.provider@2.4-service 其中的pid是736,说明camera provider进程启动......

天王盖地虎626
38分钟前
20
0
Angular / RxJs我应该何时退订`Subscription` - Angular/RxJs When should I unsubscribe from `Subscription`

问题: When should I store the Subscription instances and invoke unsubscribe() during the NgOnDestroy life cycle and when can I simply ignore them? 在NgOnDestroy生命周期中,什么......

法国红酒甜
39分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部