新手入门之——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 ...
随机推荐
- Linux--安全加固01
Redhat是目前企业中用的最多的一类Linux,而目前针对Redhat攻击的黑客也越来越多了.我们要如何为这类服务器做好安全加固工作呢? 一. 账户安全 1.1 锁定系统中多余的自建帐号 检查方法: ...
- Windows10 1709正式版WSL安装(以Ubuntu为例)
因为最近要使用Linux搭服务器,但是用远程的话延迟很烦,用双系统切换很麻烦,用虚拟机又会有点卡,刚好Windows10最近更新了正式版的WSL(windows下的Linux子系统),所以就想尝试一下 ...
- reactor模型框架图和流程图 libevent
学习libevent有助于提升程序设计功力,除了网络程序设计方面外,libevent的代码里有很多有用的设计技巧和基础数据结构,比如信息隐藏.函数指针.c语言的多态支持.链表和堆等等,都有助于提升自身 ...
- PAT02-线性结构3 Reversing Linked List
题目:https://pintia.cn/problem-sets/1010070491934568448/problems/1037889290772254722 先是看了牛客(https://ww ...
- PAT乙级1027
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输 ...
- NRF52832 能烧写代码 但是不运行 ,是因为没有烧写协议栈
仿真进入的状态 , MOVES R0.R0 请烧写 协议栈 ,自行百度!
- 最简单的ASP.Net连接查询Oracle,输出查询数据到表格中
VS2012中新建Windows窗体应用程序.Oracle中建测试数据表Test.(此处需要环境已配好情况下进行操作) 用到的数据表 向Windows窗体应用程序,设计界面托一个按钮和一个数据表格视图 ...
- boost::bind 学习
最近学习了太多与MacOS与Iphone相关的东西,因为不会有太多人有兴趣,学习的平台又是MacOS,不太喜欢MacOS下的输入法,所以写下来的东西少了很多. 等我学习的东西慢慢的与平台无关的时 ...
- 用javascript制作2048游戏的思路(原创若 转载请附上本链接)
一.项目已上传至github,地址:https://github.com/forjuan/2048game 二.学习了javascript基础后,想要捣鼓点东西做,做了一个自己以前很爱玩的2048游戏 ...
- ie中input光标问题
为input 添加 readonly=”readonly” UNSELECTABLE="on" 属性. IE中设置了readonly=”readonly”,点击使用日期选择器 ...