1.简单了解vim
vim本质是linux下的一个编辑器用于写代码,相当于windows中使用文本写代码
vim使用成本比较高,是linux下的一款多模式的编辑器
很早之前使用的是vi,vim更简单,vim是扩展板的vi, 方便进行简单的使用
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且 还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
我们在windows下使用的vs等等编辑器,不仅仅可以运行C语言代码,也可以运行python/java甚至html,这种集合编译、调试、发布等等将这个项目的生命周期包括新建项目,写代码、编译代码、调试代码、发布项目功能集中的环境就是集成编译、运行、调试、发布于一体的我们叫做集成开发环境。方便用户统一操作。
linux下也有图形化操作,不过目前接触都是指令级别的操作。一个一个工具都是独立的
写代码 -----使用vim
编译代码使用gcc
调试代码使用gdb
维护结构和自动化编译使用make/makefile
当我们正常使用vim打开一个文件的时候某认是无法写入内容的,vim某认打开的是命令模式,刚打开时我们输入的内容都会被当成命令,有些命令无效就不变现,有些命令是切换命令触发就可以编写来,这也是常说的“新手偶然性”。
- 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
- $ vim test.c
- 不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文 字。
- [正常模式]切换至[插入模式]
- ①输入a
- ②输入i
- ③输入o
- [插入模式]切换至[正常模式]
- 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可 以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
- [正常模式]切换至[末行模式]
- 「shift + ;」, 其实就是输入「:」
- 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如: :
- w (保存当前文件)
- : wq (输入「wq」,存盘并退出vim)
- : q! (输入q!,不存盘强制退出vim)
注意:vim异常退出的环,内容会保存在同名的隐藏文件中
2.vim的模式
一共有12种模式:six BASIC modes和six ADDITIONAL modes.
要查看所有模式:打开vim,底行模式直接输入 :help vim-modes
上面我们已经简单接触了一下vim,现在我们就来看看这个多模式编辑器的多模式:
模式转换图
2.1命令模式
Vim某认打开的时候的模式
当我们正常使用vim打开一个文件的时候某认是无法写入内容的,vim某认打开的是命令模式,刚打开时我们输入的内容都会被当成命令,有些命令无效就不变现,有些命令是切换命令触发就可以编写来,这也是常说的“新手偶然性”。
2.2插入模式
正常模式进入插入模式:
- 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
- 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
- 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
- 从插入模式切换为命令模式 按「ESC」键
2.3底行模式
- [正常模式]切换至[末行模式]
- 「shift + ;」, 其实就是输入「:」
- 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如: :
- w (保存当前文件)
- : wq (输入「wq」,存盘并退出vim)
- : q! (输入q!,不存盘强制退出vim)
- 从插入模式切换为命令模式 按「ESC」键
注意:vim异常退出的话(网断了,服务器断联等等),vim会对编辑结果进行保存,内容会保存在同名的隐藏文件中,
此时不能直接打开
出现以下选项:
【o】pen read-only [E]dit anyway (R)ecover (D)elete it (Q) quit (A)bort
选D过后保存退出就可以正常打开了。(把产生异常的临时文件清理掉),有些代码可能会丢失
3.vim各模式下的命令集
3.1正常(命令模式下)
3.1.1光标定位命令
vim可以直接用键盘上的光标来上下左右移动,老式键盘是没有上下左右方向键的但正规的vim是用
- 小写英文字母「h」、「j」、「k」、 「l」,分别控制光标左、下、上、右移一格
- 按「G」:移动到文章的最后
- 按「 $ 」:移动到光标所在行的“行尾”
- 按「^」:移动到光标所在行的“行首”
- 按「w」:光标跳到下个单词的开头
- 按「e」:光标跳到下个字的字尾
- 按「b」:光标回到上个单词的开头
- 按「#l」:光标移到该行的第#个位置,如:5l,56l 按
- [gg]:进入到文本开始 按
- [shift+g]:进入文本末端
- 【按下一个数字 + shiift +g】光标定位到指定的数字行
- 按「ctrl」+「b」:屏幕往“后”移动一页
- 按「ctrl」+「f」:屏幕往“前”移动一页
- 按「ctrl」+「u」:屏幕往“后”移动半页
- 按「ctrl」+「d」:屏幕往“前”移动半页
3.1.2 复制粘贴
「yy」:复制光标所在行到缓冲区。
数字+yy :复制光标往下的数字行
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。
数字+p :实现数字次粘贴,比如5次粘贴
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
3.1.3 删除
「x」:每按一次,删除光标所在位置的一个字符
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」:删除光标所在行
「#dd」:从光标所在行开始删除#行
dd hou+p相当于剪切功能
3.1.4 撤销
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回恢复。
「ctrl + r」: 撤销的恢复
3.1.5大小写转换
shift按住不动+~,将光标所在一行小写转大写,也可以大写转小写,按一下可以转换一次。
3.1.6替换
「r」:替换光标所在处的字符。
【#r】:[20r]+v,将光标所在位置后20个字符替换为v.
「R」:替换光标所到之处的字符,直到按下「ESC」键为止,这是进入了替换模式,是一个模式(replace)
esc回到命令模式,在替换模式中输入的字符会替换原有内容,但是如果按删除键会回复原来的内容。
3.1.7shift=3 高亮查找函数名
配合n 下一个
3.2 vim插入模式下
这个模式下就是代码编写,没有过多命令讲解
3.3vim底行模式下
shift+;进入底行模式(但是要在正常模式下)
wq: 保存内容并退出
有时保存退出没有权限无法保存退出,也有可能文件处于特殊状态无法保存退出,比如:
文件正在被别人打开,或者文件对应的拥有者不是操作者或者root写一些配置文件时,W!强制写入
q!强制退出
【:!comand】可以直接跟shell命令
q退出
甚至可以做到不退出vim进行代码的编译和运行
- 列出行号 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。 跳到文件中的某一行
- 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行。
- 查找字符 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。
- 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「n」会往前寻找到您要的关键字为止。
- 保存文件 「w」: 在冒号输入字母「w」就可以将文件保存起来
- 离开vim 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件
3.3.2 两个文件对比
在底层模式下输入vs 文件名,可以打开另外一个文件
绿色的光标在那个位置操作的就是那个文件。
多窗口级别光标移动:ctrl+ww
vim光标特点:上次退出时光标在那个位置,再次打开光标就在那个位置
vim 文件名+行号
进入viM时光标就在指定行
3.4 注释模式
ctrl + v进入 VISUAL BLOCK模式 可进行批量注释
按住上下就可以批量选中
shift +a = a 输入双斜杠// 在按esc就全部注释掉了
ctrl V +上下选择+d 删除注释
4.vim的自主配置
目前使用的还是原生vim,vim打开时会默认读取用户特定的配置文件。
4.1vim的基本配置
进入自己的家目录下查看所有的隐藏文件
配置文件的位置 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下, 通常已经存在一个.vimrc文件,如果不存在,则创建之。 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~ 打开自己目录下的.vimrc文件,执行 vim .vimrc
4.1.1常用配置
设置语法高亮: syntax on
显示行号: set nu
设置缩进的空格数为4: set shiftwidth=4
也可以使用插件进行配置 都要保证上传到了这个指定目录。
这里整理一份基础配置
" 编辑设置
set nu " 显示行号 同 number
set tabstop=4 " 设置制表符宽度为4
set softtabstop=4 " 设置软制表符宽度为4
set shiftwidth=4 " 设置缩进的宽度为4
set expandtab " 制表符扩展为空格
set showmatch " 输入括号时,自动高亮对应的另一个括号, 各种括号
set ruler " 在状态栏显示光标的当前位置(位于哪一行哪一列)
set autoindent " 设置自动缩进
set cindent " 以C语言的方式缩进
"set cursorline " 突出显示当前行
" 字体和主题
"set guifont=Consolas:h15 " 设置字体和字体大小, 得系统有
"colorscheme neodark " 设置主题为neodark, 前提得有
" 备份还原设置
"set nobackup " 取消备份文件
"setlocal noswapfile " 不创建交换文件.swp, 奔溃用, 正常退出会删除
set undofile " 生成un~文件, un~文件用来保存撤销历史
set undodir=~/.vim/undodir " 统一管理undo文件路径 mkdir ~/.vim/undodir -p
"set backup " 开启备份文件 filename~
"set backupext=.bak " 设置备份文件后缀为.bak
" 工具环境设置
set showmode " 在底部显示,当前处于命令模式还是插入模式
set showcmd " 命令模式下,显示当前键入的指令, 包括快捷键
set hlsearch " 高亮显示搜索的字符串
"set t_Co=256 " 启用256色, 不用主题就关了
set noerrorbells " 出错时不发出响声
set vb t_vb= " 光标边界响铃关闭
set laststatus=2 " 显示状态栏
set statusline=%F%m%r%h%w\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%Y\ -\ %H:%M\")} "状态栏信息模板
set backspace=2
" 语法高亮显示
syntax on
syntax enable
" 文件编码配置
set enc=utf-8 " vim内部编码模式,即内存中的编码 同 encoding
set fenc=utf-8 " 保存文件的默认编码, 不会覆盖原编码
set fencs=ucs-bom,utf-8,cp936,gb18030,gb2312,gbk,big5,euc-jp,euc-kr,shift-jis,latin1 "打开文件时的编码猜测列表,按前后优先级顺序 同fileencodings
set termencoding=utf-8 " 屏幕显示最终编码
4.1.2 使用插件的方式
安装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 然后重启vim,打开~/XXX.c或~/XXX.cpp, 在normal状态下输入"wm", 你
4.2自动化配置vim
目前只支持 Centos7 x86_64.
在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
卸载方法:
在安装了 VimForCpp 的用户下执行:
bash ~/.VimForCpp/uninstall.sh
5.结语
以上就是关于vim的使用及配置,有些东西不是很具体,大家可以多做扩展
6.添加用户到白名单
这种用户不可以执行sudo就是因为没有在白名单没有权限
普通用户可以找到这个文件,但是一般不能查看,打开是空白
这是因为没有读取权限,不能让一个用户随意去给自己提权,也不能让普通用户随意去修改。
提权只能有管理用户来决定
我们使用root管理员身份打开
才看的到内容和修改内容
我们找到这一行
然后拷贝root的所有内容,将名字换成我们的普通用户保存即可
就可以执行sudo命令了
版权归原作者 Nicn 所有, 如有侵权,请联系我们删除。