新手入门之——Ubuntu上的编辑器之神Vi / Vim
Ubuntu上的编辑器有gedit、vi、sublime等。gedit一般在没有其他编辑器时临时使用,大部分情况下,vi和sublime使用的比较多,Linux系统内置了vi和sublime,其中,sublime是可视化的编辑器可以通过鼠标操作可以实现各种功能,学习起来比较容易,这里就不作赘述。今天主讲的是非可视化的编辑器vi,提到vi编辑器既让人爱又让人恨。学会vi编辑器的程序猿爱死了vi,新手恨死了vi。接下来就系统的讲解下VI编辑器,供大家参考查询。
vi又叫vim,这两个是一样的。
vi编辑器有三种状态:命令模式、末行模式、编辑模式。
首先我们来打开一个vi文件test.py,命令是 vi test.py,这里必须说明,如果test.py已经存在,那么执行vi test.py命令之后会自动创建一个空白文件,如果在文本中输入了内容,并且保存了,那么文件就自动创建。如果当前文件夹中存在test.py文件,则打开当前的test.py文件。
接下来我们来了解vi的三种模式:
1、命令模式
当我们用vi 命令打开一个文件时,默认处于命令模式,命令模式的含义是当前可以通过在键盘输入各种按键命令实现编辑当前打开文档的操作。需要主要的是,当前按键操作是不会显示在终端上,但命令的执行效果会显示在当前编辑的内容上(这是很多新手刚接触vi时记不住命令模式对应功能键的关键,人都是所见所得的动物,但一定要明白,坚持敲几天就熟练了,原谅自己起步笨是进步的前提)。部分常用的命令如下:
dd:删除光标所在当前行
ndd:删除光标所在行在内及其下的n-1行,共n行内容。如5dd,删除光标所在行其下面4行内容。(ubuntu中dd实际上相当于windows中的剪切,如果按p键可以粘贴刚才删除的内容)
d0:(0是数字)从光标处前一个字符删到当前行首
D:删除光标位置到行尾的全部内容。实际上也是剪切。
yy:复制当前行内容,用p键粘贴
nyy:复制光标当前行及其下n-1行,共n行内容,用p键粘贴。如5yy,复制光标所在行及其下4行内容。
p:粘贴复制或者剪切的内容到当前光标所在行的下一行
P:粘贴复制或者剪切的内容到当前光标所在行的上一行
u:撤销上一步操作。和windows里面的Ctrl + Z功能类似。
Ctrl + r:返撤销操作
x:删除光标所在位置的单个字符,向行尾方向删除,光标前面字符不变。
X:删除光标所在位置前面的单个字符,向前行首删除,光标后面字符不变。
r:修改光标所在位置的单个字符。
R:替换光标所在位置及其后的字符,光标自动后移
h:光标左移 j:光标下移动 k:光标上移 l:光标右移 (实际上小键盘旁的上下左右方向键也可以移动)
v:可视化选取,单个选中,从光标向后选中,按照字符来选中(左右键),也可选中行(上下键),选中之后如果右移选中部分:shift + > 如果左移选中部分:shift + <
V:可视化选取,选中一片,从光标所在行开始选中,按照最小单位行来选中(上下键),选中之后如果右移选中部分:shift + > 如果左移选中部分:shift + < (V这个一般用的多点)
.:这个键和“>”在同一个键盘位上,表示重复上一步操作,经常与移动选中部分搭配使用,来重复向左或向右移动多次
ZZ:保存当前文档并退出vi编辑器
0:(数字0)跳到当前行首位置
$:跳到当前行末位置
G:跳到文档末行的行首位置
gg:跳到文档首行的行首位置
nG:快速跳到某一行行首,比如5G,快速跳到第五行行首位置
H:光标跳到当前屏幕显示部分的首行行首
M:光标跳到当前屏幕显示部分的中间行行首
L:光标跳到当前屏幕显示部分的末行行首
Ctrl + f:向文末翻一屏代码
Ctrl + b:向文首翻一屏代码
Ctrl + m:向文首翻半屏代码
Ctrl + d :向文末翻半屏代码
w:向行尾每次跳一个单词的长度
dw:删除一个单词
b:向行首每次跳一个单词长度
以上就是我常用的键盘命令,掌握以上这些基本就可以了。
另外需要注意的是在命令模式下:Ubuntu终端字体变大:Ctrl + Shift + T 同样适用,字体变小:Ctrl + -
2、末行模式:
vi打开编辑时默认状态是命令模式,进入末行模式的用:再加上命令。这时输入的命令在页面显示底端。
:w :保存当前文档,不退出vi编辑器(这个命令是实际开发中用的多,比如同时开三个终端,一个编辑代码,一个运行代码,一个用python的交互模式,三个终端生成快捷键Ctrl + Shift + T,终端之间切换用Alt + 1、Alt + 2、Alt + 3)
:q :不保存已有的编辑,退出vi编辑器
:wq :保存编辑并退出
:x :保存并退出(这个命令比:wq用的多)
:/hello :搜索hello,hello可以换成其他字符 在搜索字符时输入命令后,可以向上搜索(N 键),也可以向下搜索(n键)
:set nu:设置显示左侧行号(永久显示行号一般都在系统中改变配置文件/etc/vimrc,添加:set nu即可,如果修改必须获取文件权限,多以root权限去修改)
:set nonu:取消左侧行号限制(这个功能很少用)
:%s/hello/world/g:替换全文的hello为world
:11,16s/hello/world/g:将11-16行中的hello替换为world
末行模式知道这些常用的即可,不记得的时候查一下,多使用就习惯了。
3、编辑模式
编辑模式是最简单的模式,正常的如txt文本般编辑即可,没有多大的特殊之处。这里要讲的是怎么从命令模式切换到编辑模式时不同命令光标插入的位置不同。
如果当前是末行模式必须先切换到命令模式才能进入编辑模式,末行模式到命令模式:ESC键 末行模式和编辑模式之间不能直接切换,只能通过命令模式过渡。
命令模式切入编辑模式命令如下:
i:从光标处之前插入
I:跳到光标所在行行首插入
a:从光标之后插入
A:跳到光标所在行行末插入
o:(字母o)在光标所在行,及其下一行之间新增一空白行,光标跳到空白行行首
O:(字母O)在光标所在行,及其上一行之间新增一空白行,光标跳到空白行行首
以上的命令实际上是命令模式下敲入的,但和编辑模式最为紧密,所以放到编辑模式里面讲。
编辑模式回到命令模式用ESC键,熟练掌握了vi之后都是在这个三个模式之间切换,还是很方便的。
以上的说明是常用的功能,vi编辑器更能远不止如此,掌握基本功能在实际开发中遇到新需求可以很快掌握。
以上不足和编辑错误之处,望评论指正,多多交流!
新手入门之——Ubuntu上的编辑器之神Vi / Vim的更多相关文章
- 随处可编辑的编辑器之神VIM
据说这世界上只有三种编辑器:Vim,Emacs 和 其他编辑器,其中 Vim 被称作编辑器之神,Emacs 被称作神的编辑器,当然,其他编辑器永远只能是其他编辑器. 拿一位 网友的话 来说,VIM 的 ...
- 工欲善其事:编辑器之神Vim(一)
本篇文章收集了Vim最常用和实用的一些命令,掌握这些命令就可以使用Vim了 本文仅列举个人认为常用的命令,本系列文章更像是自己的学习笔记,而不是VIM使用教程. 如果你想了解vim的更多,可以看看Co ...
- vim 让人爱不释手的编辑器之神
VIM 基本介绍 vim诞生已有20多年,它常被人称之为编辑器之神,vim的操作理念可以说是独具一格而又出类拔萃,使用vim能极大的提升文本处理效率,因此熟练掌握vim应该是每个程序员都应该做到的事情 ...
- Win10系统下安装编辑器之神(The God of Editor)Vim并且构建Python生态开发环境(2020年最新攻略)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_160 众神殿内,依次坐着Editplus.Atom.Sublime.Vscode.JetBrains家族.Comodo等等一众编辑 ...
- Ubuntu学习小结(二)PostgreSQL的使用,进程的查看关闭,编辑器之神Vim入门
距离上次发布文章已经过去了很久.在过去的半年中,虽然写的代码不多,但是在接触了计算机一些其他的知识,包括数据库.网络之后,感觉能够融会贯通,写代码水平又有了一定的提高.接下来,将会发表几篇文章,简单介 ...
- 优测优社区干货精选|老司机乱谈编辑器之神——vim
文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! *** vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了.本文介绍了学习vim ...
- 编辑器之神VIM 总结(一) 基础部分
版本号 说明 作者 日期 1.0 vim基础知识 Sky Wang 2013/06/19 概要 vim和emacs,一个是编辑器之神,一个是神一样的编辑器.他们被称是UNIX系统下的 ...
- Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好?
Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好? 在这个蔚蓝色的星球上,流传着两大神器的传说:据说Emacs是神的编辑器,而Vim是编辑器之神. 一些人勇敢地拾起了Vim或Emacs,却发 ...
- 4-2 编辑器之神--vim
vim vi:Visual editor文本编辑器 文本:ascii,Unicode vim:VIsual editor iMproved 官网:www.vim.org 帮助网站:Vimhelp.or ...
随机推荐
- U-Mail详解邮件营销优势及应用领域
最近频频有营销人员向U-Mail小编咨询:邮件营销到底有什么好处呢?与此同时,还有不少人对邮件营销存在一定的误解:邮件营销是不是只给潜在消费者发送邮件推广商品呢?其实邮件群发的应用面非常广泛,可不仅仅 ...
- 【原创】Python 对象创建过程中元类, __new__, __call__, __init__ 的处理
原始type: type是最原始的元类,其__call__方法是在你使用" t_class = type(classname_string, base_classes_tuple, attr ...
- 1.2 Why Python for Data Analysis(为什么使用Python做数据分析)
1.2 Why Python for Data Analysis?(为什么使用Python做数据分析) 这节我就不进行过多介绍了,Python近几年的发展势头是有目共睹的,尤其是在科学计算,数据处理, ...
- Paxos算法简单陈述
上文二段式和三段式提交协议是相对比较容易理解的.1990年Leslie Lamport 提出的Paxos算法是一种基于消息传递且具有高度容错特性的一致性算法.但是Paxos算法比较复杂,对于不能沉心学 ...
- [BJWC2008]雷涛的小猫
嘟嘟嘟 dp. 刚开始我想的是dp[i][j]表示在第 i 棵树上,高度为h能吃到的最多的果子,如此能得到转移方程: dp[i][j] = max(dp[i][j + 1], dp[k][j + de ...
- 【node.js】Express 框架
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速地搭建一个完整功能的网 ...
- virtualbox+vagrant学习-4-Vagrantfile-4-Tips & Tricks
Tips & Tricks Vagrantfile是一种非常灵活的配置格式.因为它只是Ruby,所以你可以用它做很多事情.然而,同样的道理,因为它是Ruby,所以有很多方法可以朝自己的脚开枪( ...
- 论文笔记 CVPR-2014 DeepReID Deep filter pairing neural network for person re-identification
1. 摘要 第一篇用深度学习做Reid的文章,提出的FPNN采用端到端的训练方式,解决行人再识别的不对齐,光照,姿态等问题. 建立了一个新的带benchmark的数据集CUHK03,表现性能良好. 2 ...
- jenkins slave 挂载
http://blog.sina.com.cn/s/blog_13cc013b50102wiau.html
- Spring源码分析(七)bean标签的解析及注册
摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 在上一篇中提到过Spring中的标签包括默认标签和自定义标签两种,而两种 ...