文档章节

vi和vim 操作笔记

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

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
粉丝 145
博文 412
码字总数 288918
作品 0
海淀
高级程序员
私信 提问
Linux学习笔记(17)

近期参加了朋友的婚礼。比较远,没有拿电脑。所以一直没有更新。很惭愧,从今天起开始正式更新学习内容。 一、vim vim是vi的升级版,最大的区别就是编辑一个文本时,vi不会显示颜色,vim会显...

小新锐
2017/11/09
0
0
朗科学习期间心得笔记(三)

vi编辑器:全屏文本编辑器 vi:visual interface,可视化界面; S.U.N:bill joy, vim相对于vi有更多的新特性: 1.语法着色显示; 2.更多的命令; 3.历史纪录; vi:模式化文本编辑器 模式:...

sherlockR
2017/10/18
0
0
学习笔记十八

vim进入编辑模式 从一般模式进入编辑模式,只需按i、I、a、A、o、O、r和R中的某一个键即可,当进入编辑模式时,在屏幕的尾行显示INSERT字样(若支持中文,则显示插入)。按Esc键,从编辑模式...

风流花生
2017/11/09
0
0
学习笔记十七

vim介绍 vim是vi的升级版,相较于vi,会显示颜色。 如果系统没有vim工具,需要安装:# yum install -y vim-enhanced vim颜色显示和移动光标 输入# vim /etc/passwd 然后将/etc/passwd放到/tm...

风流花生
2017/11/08
0
0
用 vi 来管理 wiki 笔记

导读 用 vi 来管理 wiki 来记录你的笔记,这听起来不像是一个符合常规的主意,但当你的日常工作都会用到 vi , 那它是有意义的。 作为一个软件开发人员,使用同编码一样的工具来写笔记会更加简...

问题终结者
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
13分钟前
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
31分钟前
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
56分钟前
1
0
【分享实录】BANCOR算法详解及代码实现

1 活动基本信息 1)主题:【区块链技术工坊22期】BANCOR算法详解及代码实现 2)议题: BANCOR算法的特点和优劣势 BANCOR算法和举例 如何加入BANCOR.NETWORK交易所 如何开发自己的BANCOR去中心...

HiBlock
今天
2
0
微信小程序(2)

开始看微信小程序的教程了。刚刚看完官方教程的视图层部分。这里摘录一些自己认为的部分关键点。 1.直接修改数值无法重新渲染,需要使用setData()方法; 2.列表渲染中:wx:key用于保持项目在...

MKjy
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部