技术大佬们都推荐的vim学习指南来了,值得收藏!

2019 年 4 月 7 日 AI100

2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑


作者 | kbsc13,京东算法工程师,研究领域计算机视觉

来源 | 机器学习与计算机视觉(ID:AI_Developer)

编辑 | Jane


【导语】在 Linux 下最常使用的文本编辑器就是 vi 或者 vim 了,如果能很好掌握这个编辑器,非常有利于我们更好的在 Linux 下面进行编程开发。


vim 和 vi


Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。


下面是 vim 快捷键盘图:



vim 快捷键


vi/vim 的工作模式


基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:


  • 命令模式


当使用 vi/vim 打开一个文件就进入了命令模式(也可称为一般模式),这是默认的模式。在这个模式,你可以采用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理你的文件数据。


  • 输入模式


在命令模式并不能编辑文件,需要输入如『i, I, o, O, a, A, r,R』等任何一个字母之后才会进入输入模式(也称为编辑模式)。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『 INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到命令模式时,则必须要按下『Esc』这个按键即可退出编辑模式。


  • 底线命令模式


在命令模式下,按下『:,/,?』中任意一个,就可以将光标移动到最底下那一行,进入底线命令模式(也称为指令列命令模式)。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、退出、显示行号等等的动作则是在此模式中达成的!同理,必须按下『Esc』按钮才可以退出该模式,返回命令模式


三种模式的切换和功能可以用下图来总结:


vi/vim 工作模式


简易示例


1. 使用 vim 打开文件在命令行中输入如下命令:
  
  
    
$ vim test.txt


采用 vi 文件名 或者 vim 文件名 就可以打开文件并且进入了命令模式。这里文件名是必须添加的,当文件不存在的时候,也能打开,并且进行编辑保存后就是创建一个新的文件。打开后的界面如下图所示:


vim1.png


整个界面可以分为两个部分,最底下一行和上面的部分,最底下一行主要是显示当前文件名和文件的行数、列数,上图是一个新的文件,所以最底下显示的是文件名,而且后面括号也说是新文件,而下图是一个已经有内容的文件,那么上面部分就显示文件内容,最底下一行显示了文件名,文件的行数和列数,并且在最右侧部分会显示当前坐标的位置,比如图中是显示 (4,1) 表示当前坐标在第四行第一列的位置。


vim2.png


2. 进入编辑模式


接下来就是开始对文件进行编辑,也就是需要进入编辑模式。只要按下『i, I, o, O, a, A, r,R』等字符就可以进入编辑模式了!在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示啰!这个时候,键盘上除了 [Esc] 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑!如下图所示:


vim3.png


注意:在 vim/vi 中 [Tab] 键是向右移动 8 个空格字符。


3. 按下 [ESC] 按钮回到命令模式

如果对文件编辑完毕了,那么应该要如何退出呢?此时只需要按下 [Esc] 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!并且返回了命令模式了


4. 退出

最后就是存盘并离开,指令很简单,输入『:wq』即可存档离开! (注意了,按下 : 该光标就会移动到最底下一行去!) ,如下图所示:


vim4.png


更多按键说明


上述简易示例只是使用了简单的几个按键,但是从 vim 快捷键图可以知道 vim 是有很多快捷键的。


练习


题目是来自vim 程序编辑器的练习,如下所示,使用的操作文件 man_db.conf,可以在下面的链接中获取:

http://linux.vbird.org/linux_basic/0310vi/man_db.conf


1. 請在 /tmp 這個目錄下建立一個名為 vitest 的目錄;
2. 進入 vitest 這個目錄當中;
3. 將 /etc/man_db.conf 複製到本目錄底下(或由上述的連結下載 man_db.conf 檔案);
4. 使用 vi 開啟本目錄下的 man_db.conf 這個檔案;
5. 在 vi 中設定一下行號;
6. 移動到第 43 列,向右移動 59 個字元,請問你看到的小括號內是哪個文字?
7. 移動到第一列,並且向下搜尋一下『 gzip 』這個字串,請問他在第幾列?
8. 接著下來,我要將 29 到 41 列之間的『小寫 man 字串』改為『大寫 MAN 字串』,並且一個一個挑選是否需要修改,如何下達指令?如果在挑選過程中一直按『y』, 結果會在最後一列出現改變了幾個 man 呢?
9. 修改完之後,突然反悔了,要全部復原,有哪些方法?
10. 我要複製 66 到 71 這 6 列的內容(含有MANDB_MAP),並且貼到最後一列之後;
11. 113 到 128 列之間的開頭為 # 符號的註解資料我不要了,要如何刪除?
12. 將這個檔案另存成一個 man.test.config 的檔名;
13. 去到第 25 列,並且刪除 15 個字元,結果出現的第一個單字是什麼?
14. 在第一列新增一列,該列內容輸入『I am a student...』;
15. 儲存後離開吧!


那么,整体步骤应该如下所示:


  • mkdir vitest

  • cd vitest

  • mv /etc/man_db.conf .

  • vi man_db.conf

  • :set nu

  • 43G -> 59l ->括号内是 as 这个单词

  • gg 或 1G -> /gzip -> 在第 93 列

  • 输入命令 [:29,41s/man/MAN/gc] -> 然后一直点击 y ,总共需要替换 13 个

  • 一直按 u 键即可复原;更加简单粗暴的就是强制退出,也就是输入 :q!

  • 66G 跳到 66 行 -> 6yy 复制 6 行内容(输入后,屏幕最后一行会显示 6 lines yanked) -> G 跳到最后一行,输入 p 复制到最后一行的后面

  • 113G 跳到 113 行 -> 总共需要删除 16 行内容,所以输入 16dd,删除后光标所在行开头就是 ‘#Flags’

  • 输入 [:w man.test.config] 实现保存操作,接着可以输入 [:! ls -l],即显示查看当前文件夹内文件内容的命令 ls -l 显示的内容在 vim 内,再次按下回车键即回到 vim 命令模式

  • 输入 25G 到 25 行 -> 15x 删除 15 个字符,然后显示的是 tree

  • gg / 1G 到 第一行 -> O 在上方新增一行,然后输入 『I am a student…』-> Esc 键返回命令模式

  • [:wq] 或者 ZZ 保存离开文件


以上就是本文的主要内容和总结,本文参考文章如下:

vim 程序编辑器:

http://cn.linux.vbird.org/linux_basic/0310vi.php

Linux vi/vim:

http://www.runoob.com/linux/linux-vim.html


(本文为 AI大本营转载文章,转载请联系原作者


精彩推荐


「2019 Python开发者日」演讲议题全揭晓!这一次我们依然“只讲技术,拒绝空谈”10余位一线Python技术专家共同打造一场硬核技术大会。更有深度培训实操环节,为开发者们带来更多深度实战机会。更多详细信息请咨询13581782348(微信同号)。



推荐阅读:

点击“阅读原文”,查看历史精彩文章。

登录查看更多
3

相关内容

Vim 是从 vi 发展出来的一个文本编辑器。宏、跳转、代码补全、编译及错误跳转等方便纯文本编辑和编程的功能特别丰富,也支持使用不少的脚本语言进行功能定制和扩充,在程序员中被广泛使用。
最新《自动微分手册》77页pdf
专知会员服务
97+阅读 · 2020年6月6日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
96+阅读 · 2020年6月3日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
资源 | 李航老师《统计学习方法》(第2版)课件下载
专知会员服务
248+阅读 · 2019年11月10日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
深度学习「CV」学习实践指南!
专知
10+阅读 · 2020年6月21日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
GitHub超2.7万星,最全Python入门算法来了
新智元
5+阅读 · 2019年4月28日
已删除
创业邦杂志
5+阅读 · 2019年3月27日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Arxiv
12+阅读 · 2018年9月5日
Arxiv
10+阅读 · 2017年11月22日
Arxiv
5+阅读 · 2017年7月23日
VIP会员
相关VIP内容
最新《自动微分手册》77页pdf
专知会员服务
97+阅读 · 2020年6月6日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
96+阅读 · 2020年6月3日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
资源 | 李航老师《统计学习方法》(第2版)课件下载
专知会员服务
248+阅读 · 2019年11月10日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
相关资讯
深度学习「CV」学习实践指南!
专知
10+阅读 · 2020年6月21日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
GitHub超2.7万星,最全Python入门算法来了
新智元
5+阅读 · 2019年4月28日
已删除
创业邦杂志
5+阅读 · 2019年3月27日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Top
微信扫码咨询专知VIP会员