Linux开发工具 — 编辑器Vim
一、Linux开发工具
- IDE 集成开发环境
整个开发的生命周期,建立项目,写代码,编写代码,编译代码,发布项目,C/C++,Java,前端
集 编写、编译、运行于一体,称 集成开发环境 ( IDE )
- 而在Linux中,每个工具都是独立的 。
- 编写代码 :vim
- 编译代码 :gcc/g++
- 调试代码 :jdb
- 维护代码 :自动化编译 make/makefile
二、Linux编辑器-vim使用
(一)vim 简单介绍
vi/vim的区别简单点来说,它们都是多模式 编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。我们课堂上,统一按照vim来进行讲解。
vim的基本概念
课堂上我们讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
-
正常/普通/命令模式(Normal mode)【 vim打开的时候 的 默认模式 】
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段 及 进入插入模式(Insert mode)下,或者到 底行模式 (last line mode) -
插入模式(Insert mode)
输入i
,insert 。只有在Insert mode下,才可以做 文字输入 【 插入模式下,全都会被解释成文本输入 。所以无法直接从 插入模式 直接进入到 底行模式 】,按「ESC」键
可回到命令行模式 。该模式是我们后面用的最频繁的编辑模式。 -
末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,
shift+:
即可进入该模式。
- 要 查看你的所有模式:打开vim,底行模式 直接输入
help vim-modes
我这里一共有12种模式 : six BASIC modes 和 six ADDITIONAL modes
(二)vim的基本操作
- 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
- $ vim test.c
- 不过有一点要特别注意,就是你进入vim之后,是处于[ 正常/命令模式 ]【默认模式】,你要切换到 [插入模式] 才能够输入文字。
- [正常模式] 切换至 [插入模式]
- 输入a
- 输入
i
【最常用】 - 输入o
- [插入模式] 切换至 [正常模式]
- 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下
「ESC」键
转到 [正常模式]再删除文字。 当然,也可以直接删除。
- 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下
- [正常模式] 切换至 [末行模式]【底行模式,跳到最后一行】
「 shift + ; 」
, 其实就是输入「:」
(对应键盘)
- 退出vim及保存文件,在[正常模式]下,按一下
「:」
冒号键进入「Last line mode」,例如:- : w [ write 写 ](保存当前文件)
- : wq [ quit 退出 ] (输入「wq」,存盘并退出vim)
- : q! (输入q!,不存盘 强制退出vim)
[ 三 ] vim 正常模式命令集
[1] vim 插入模式 INSERT MODE
-
按
「i」
切换进入 插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件; -
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
-
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
(1)从插入模式切换为命令模式
- 按「ESC」键。
(2)移动光标
在vim是在鼠标发明之前发明的,vim是通过键盘控制的,更多的是面向终端
1. 「h」
、「j」
、「k」
、「l」
,分别控制光标 左、下、上、右移一格
- vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母
「h」
、「j」
、「k」
、「l」
,分别控制光标 左、下、上、右移一格
【 shift + 按键对应的位置 => 即是下方出现的按键 】
- 按
[gg]
:进入到文本最开始 - 按
[shift+g]
:进入文本末端 - 按
「G」
:移动到 文章的最后 [ n + shift+g]
:直接定位到第n行
2. 锚点
- 按
「 $ 」
:移动到光标所在行的“行尾” - 按
「^」
:移动到光标所在行的“行首”
3. 快速移动 【按 “单词” 移动】
- 按
「w」
:光标跳到下个字的开头 - 按「e」:光标跳到下个字的字尾
- 按
「b」
:光标回到上个字的开头 - 按「#l」:光标移到该行的 第
#
个位置,如:5l,56l
- 按「ctrl」+「b」:屏幕往“后”移动一页
- 按「ctrl」+「f」:屏幕往“前”移动一页
- 按「ctrl」+「u」:屏幕往“后”移动半页
- 按「ctrl」+「d」:屏幕往“前”移动半页
4. 光标在窗口之间来回移动
ctrl + w + w
:光标多终端切换【tips:光标在哪个窗口,底行编辑就在哪个窗口】
进入文件时,光标的起始位置 就取决于上一次退出时,你的光标在哪里
vim 文件名 + n
( 需要定位到数目为n的行数 ): 直接定位到该行
(3) 删除文字
(1)删除单个字符
- 往后删
「x」
:每按一次,删除光标所在位置的一个字符「n + x」
:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”n个字符
- 往前删
「X」
:大写的X(shift + x
),每按一次,删除光标所在位置的 “前面” 一个字符
【 向左侧进行局部删除 】「n + X」
:例如,「20X」表示 删除光标所在位置的 “前面” n个字符
(2)删除行
「dd」
:删除光标所在行「dd + p」
:剪切 与 粘贴「n + dd」
:从光标所在行开始删除n行
(4) 复制
- 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
- 「#yw」:复制#个字到缓冲区
「yy」
:复制 光标所在行 到缓冲区。「n + yy」
:复制从该行开始的行 。例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。「p」
:将缓冲区内的字符 贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。「n + p」
:粘贴n次
(5) 替换
「r」
:替换光标所在处的字符。「n + r」
:连续地将从光标开始的n个字符进行替换「shift + ‘r’ = R」
:【替换模式】替换光标所到之处的字符,直到按下「ESC」键为止。
(6)撤销上一次操作
【 退出后再重新打开,则无法再撤销了 】
「u」
:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”
可以执行多次回复
。「ctrl + r」
:撤销的恢复
(7)更改
- 「cw」:更改光标所在处的字到字尾处
- 「c#w」:例如,「c3w」表示更改3个字跳至指定的行
- 「ctrl」+「g」列出光标所在行的行号。
- 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
[ 四 ] vim 末行模式命令集
在使用末行模式之前,请记住先按 「ESC」键
确定您已经处于正常模式,再按「:」
冒号 即可 进入末行模式。
1. 列出行号
「set nu」
:输入「set nu(number)」后,会在文件中的 每一行前面列出行号。「set nonu」
:取消行号
2. 跳到文件中的某一行
「n」
:「n」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
3. 搜索 查找字符
-
「 / + 关键字 」
: 先按「/」
键,再输入您想寻找的字符 (会出现高亮),如果第一次找的关键字不是您想要的,可以一直按
– -
shift + 3 = #
:高亮要查找的函数名 -
「n」
下一个查找到的函数名/字符串名,会往后寻找到您要的关键字为止。
– -
「?+ 关键字」
:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。 -
问题:
/
和?
查找有和区别?操作实验一下
先了解一下这两个符号,后面会再细说。
4. 保存文件
「w」【write】
: 在冒号输入字母「w」就可以将文件保存起来 ( 可能没有权限,无法进行-w
写的权限,若要写,则需加上「!」
强制进行-w
写入)
5. 离开vim
「q」
:按「q」就是退出,如果无法离开vim,可以在「q」
后跟一个「!」
强制离开vim。「wq」
:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。shift + zz = ZZ
:保存并退出vim(但不太建议这么用)
讨论一下 “异常退出” 的问题
异常退出,系统会将该未经过保存的文件,保存在了一个 .开头的 与源文件同名的 .swp
隐藏文件当中 。
要恢复文件原样:
-
方法一:
- 先
R
[Recover] 恢复之前的文件, - 再
D
[Delete] 删除因异常退出将该文件临时保存的.swp
隐藏文件。 shift + d =D
- 先
-
方法二:
直接rm掉 因异常退出将该文件临时保存的.swp
隐藏文件
但直接rm 可能会丢失这段代码。还是用正规的比较好 ,先R recover 恢复文件 再删除 避免代码丢失的情况
6. 在不退出vim,不退出底行的模式下,即可进行代码的编写、编译、查找 ! + command
7. 对比两个文件
vs 文件名
+ 直接退出q!
,不会产生新文件
vs 文件名
+ wq
=> 产生新文件
vs filename
,光标在哪一个界面,我们就正在编辑哪一个界面
[ 五 ] 视图模式 VISUAL BLOCK
还有 视图模式 :可以进行代码的批量化注释(其他地方都用的不多)
1. 批量化注释
ctrl + v
:进入VISUAL BLOCK模式(视图模式)h
j
k
l
进行区域选择,通常用的是 j(下移)shift + i = I
切换到 INSERT模式- 输入
//
ESC
则会自动在刚刚 所选的区域 完成批量化注释
2. 批量化去注释
ctrl + v
:进入VISUAL BLOCK模式(视图模式)h
j
k
l
进行区域选择,通常用的是 j(下移)d
删除
(三)vim操作总结
- 三种模式
- 正常模式
- 插入模式
- 底行模式
我们一共有12种总模式,大家下来可以研究一下
还有 视图模式 :可以进行代码的批量化注释
-
vim操作
打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。 -
练习:当堂口头模式切换练习
(四) 简单vim配置
(1)配置文件的位置
-
在目录 /etc/ 下面
有个名为 vimrc 的文件,这是系统中公共的vim配置文件,对所有用户都有效。
-
而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:
“.vimrc”
。/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。该文件默认是空的。
切换用户成为自己 执行 su
,进入自己的 主工作目录 ,执行 cd ~
打开自己目录下的.vimrc文件,执行 vim .vimrc
不想要就 "
注释掉
打开 .vimrc
vim ~/.vimrc
(2)常用配置选项,用来测试
设置语法高亮:syntax on
显示行号:set nu
设置缩进的空格数为4:set shiftwidth=4
(3)使用插件
要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户,接下来:
安装TagList插件,下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到~/.vim/plugin
在~/.vimrc 中添加: let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
安装文件浏览器和窗口管理器插件: WinManager
下载winmanager.zip,2.X版本以上的
解压winmanager.zip,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到 ~/.vim/plugin
在~/.vimrc 中添加 let g:winManagerWindowLayout=‘FileExplorer|TagList
nmap wm :WMToggle<cr>
然后重启vim,打开~/XXX.c或~/XXX.cpp, 在normal状态下输入"wm", 你将看到上图的效果。
参考资料
Vim 从入门到精通(vim from zero to hero)
三、vim 总结
(一)快速的介绍一下vim
vim是一个款多模式的编辑器,vim里面还有很多的子命令,来进行代码的编写操作
(二)vim 的模式
模式间的切换
(三)谈论常见模式 及其经常使用的命令
- 命令模式
- 底行模式
- 注释
(四)配置问题
四、sudo提权:
- 前提是你在用户白名单里
- sudoers白名单的文件 你也 无权进行修改(除root用户)
sudoers白名单 添加权限
不是root,没有权限
(一次sudo完后(需要输入密码进行认证),而后10到15分钟以内不再需要进行认证了)