目录
vim简介
vim是一款功能强大,高度可指定的文本编辑工具。vi是visual interface的简写,vim是 Vi IMproved的简写。
vim的安装命令:
sudo apt-get install vim
如果安装不了,可以输入以下指令更新下数据:sudo apt-get update。然后再次输入以下指令进行安装:sudo apt-get install vim。
vim工作模式
普通模式:
vim打开一个文件时默认模式
插入模式:
敲击键盘上的 i ,o,a 进入该模式,敲击ESC键退出该模式
命令行模式:
敲击键盘上的 : 进入该模式
在该模式下输入set num可以显示行号,同时命令可以保存/etc/vim/vimrc配置文件
可视化模式:
敲击键盘上的 v 进入该模式,然后移动光标就可以选中文件。
替换模式:
敲击键盘上的 R 就可以进入到替换模式
光标移动
单个字符移动:
h:向左移动
l:向右移动
j:向下移动
k:向上移动
如果需要向左移动10个字符,可以敲击 10+h。
单词移动:
w:将光标移动到下一个单词开头
b:将光标移动到前一个单词的开头
e:将光标移动到下一个单词的末尾
E:移动到单词的结尾(忽略标点符号)
ge:将光标移动到上一个单词词末
2w:指定移动的次数
行移动:
¥:将光标移动到当前行的末尾
0:将光标移动到当前行的行首
^ :将光标移动到当前行的第一个非空字符(行首和当前行非空字符不是一个位置)
2|: 移动当前行的第2列
fx:将光标移动到当前行的第一个x字符上
3fx:将光标移动到当前行的第三个x字符上
tx: 将光标移动到目标字符上
%:用于符号间的移动,它会在一对(),【】,{}之间跳跃
在屏幕中移动:
xG:跳转到指定的第x行, G移动到文件末尾,··或者单引号返回到跳转前的位置
gg:移动到文件开头
x%:移动到文件中间,就使用50%
H:移动到home
M:移动到屏幕中间
L:移动到一屏末尾
ctrl+G:查看当前的位置状态
滚屏与跳转:
半屏滚动:ctrl + u/ctrl +d
全屏滚动:ctrl+ f/ ctrl +b
定位光标的位置:
zz:将光标置于屏幕的中间
zt:将光标移动到屏幕的顶部
zb:将光标移动到屏幕的底部
设置跳转标记:
mx,my,mz设置三个位置
`x,`y,`z跳转到设置
文件插入操作
i:在当前光标的前面插入字符
a:在当前光标的后面插入字符
o:在光标的下一行插入字符
u:撤销修改
I:在一行的开头添加文件
A:在一行的结尾处添加文本
O:在光标当前行的上一行插入文本
s:删除当前光标处的字符并进入到插入模式
S:删除光标所在处的行,并进入到插入模式
文本删除
字符删除:
x:删除当前光标所在处的字符
X:删除当前光标左边的字符
单词删除:
dw:删除一个单词(从光标处到空格)
daw:无论光标在什么位置,删除光标所在的整个单词(包括空白字符)
diw:删除整个单词文本,但是保留空格字符不删除
d2w:删除从当前光标开始处的2个单词
d¥:删除从光标到一行末尾的整个文本
d0:删除从光标到一行开头的所有单词
dl:删除当前光标处的字符
dh:删除当前光标左边的字符
行删除:
dd:删除当前光标处的一整行
5dd:删除从光标开始处的5行代码
dgg:删除从光标到文本开头
dG:删除从光标到文本结尾
行合并:
J:删除一个分行符,将当前行与下一行合并
文本复制,剪切与粘贴
y:复制 p:粘贴
yw:复制一个单词
y2w:复制2个单词
y$:复制从当前光标到行结尾的所有单词
y0:复制当前光标到行首的所有单词
yy:复制一整行
2yy:复制从当前光标所在行开始的2行
复制文本块:
1.首先进入visual模式:v键
2.移动光标选择文本
3.复制与粘贴的操作:p键
文本修改与替换
cw:删除从光标处到单词结尾的文本并进入到插入模式
cb:删除从光标处到单词开头的文本并进入到插入模式
cc:删除一整行并进入到插入模式
~:修改光标下字符的大小写
r: 替换当前光标下的字符
vim配置与vimrc配置文件
vi与vim的关系
vi是什么?
---Visual interface的简写
---是行编辑器EX的可视化操作接口
---vi输入Q进入EX模式,在EX模式下输入vi进入vi
vim是什么?
---vi improved,改进版的VI
vim对vi的改进:
---多级撤销,多窗口,增加了图形界面功能
---内置脚本语言,可以无限制扩充与自定义需求
vim的兼容模式
---vim确省是vi兼容模式,方向键,退格键不能用
---大多数unix类似的操作系统已默认安装vim
---大多数GNU/linux已经将/bin/vi链接到vim的可执行文件
vim启动过程
1.设置内部变量SHELL和term
2.处理命令行参数:包括选项和要打开的文件名
3.加载系统级和用户级别的配置文件
4.加载插件并执行
5.执行GUI部分的初始化
6.如果viminfo不为空,则读取viminfo文件,恢复上次的编辑环境
7.打开显示所有的窗口
8.执行用户指定的启动时命令
vim配置文件:vimrc
----查看各个配置文件路径
-vim --version
----用户级配置文件
- $HOME/.vimrc 只对当前用户有效
----系统级配置文件
- /etc/vim/vimrc 对所有的用户都有效
常用的一些vim设置:基本设置,主题设置
vim的按键映射
按键映射基础知识:
-----vim里唯一能够让它屈服你的意志的功能:按键 映射
-----查看某个按键映射:verbose map xx
map-------normal,visual,operator pending
nmap------normal
vmap------visual
omap------operator pending
map!-------insert,command line
imap--------insert
cmap-------command line
常用的功能,辅助键
tab键:<tab>
<CR>代表Enter键
<F5>代表F5功能键
<Esc>代表Escape键
<LEFT>,<RIGHT>,<UP>,<DOWN>,<DELETE>
<BS>代表Backspace键,<space>代表空格键
inoremap代表:i代表是在插入模式下有效,nore表示不递归no recursion。
括号自动补全
插入模式下的光标移动
方法一:
1.回到Normal模式
2.移动光标到指定位置
3.重新回到插入模式
方法二:按键映射
编译完成后跳出括号的按键映射
复制,粘贴快捷键设置
自动编译,运行源文件
---在命令行模式下:
--cmap<C-R> make && ./hello
--在命令行模式下,ctrl+r即可自动编译运行
---在normal模式下:
--map<F5> :make &&clear && ./hello
--在normal模式下,使用F5快捷键自动编译运行
内建命令
vim在不同模式,都有内建的命令:
---normal模式下:hjkl用来移动光标,dd/p删除粘贴等
---命令行模式下:q退出,查找命令等
插入模式下是个例外:
---但是用户也可以自定义命令(这也是vim的强大所在)
---如:imap ptf printf 插入模式下用户输入ptf,就是输入printf
建议:
---尽量不要在insert模式下自定义命令
---同样的功能,完全可以在normal模式下完成
---尽量不要覆盖内建命令
vim脚本语法
vim脚本:
---语法文件vimrc也是vim脚本,在该文件你可以设置命令选项
---或者使用冒号命令(EX命令或者命令行命令)
变量:
命名:
---由字符,数字,下划线组成,不能由数字开头
---let 列出当前定义的所有变量
局部变量:
---脚本文件局部变量 s:name :let s:count=1(只在本文件有效)
---全局变量 g:name
---vim预定义变量 v:name
---窗口局部变量 w:name
---缓冲区局部变量 b:name
删除变量:
使用unlet :unlet s:count
变量不存在也不用报错 :unlet!s:count
字符串变量:
定义一个字符串变量 :let name=“peter”
回显变量 :echo name
变量的类型是动态的,当我们通过:let 赋值时类型才被确定
表达式:
常见的表达式:
----echo 5*3+3*2
字符串常量和变量都属于表达式;
其他的表达式:
----环境变量 $NAME
----选项 $name
----寄存器 @r
语句:
条件语句:
if(condition)
{statement}
endif
逻辑操作:
a == b a!=b a>b a>=b a<=b a=~b(a是否匹配b) a!~b
字符串比较时,用“#”大小写敏感,用“?“忽略大小写
a!~#b a=~#b a!~?b a=~?b
循环:
while
endwhile
执行一个表达式:
执行冒号命令
: execute ”cmd"
执行普通命令
:normal cmd
例如:删除一行 :normal dd
使用函数:
定义一个函数:
function{name}({var1},{var2})
{body}
endfunction
定义一个已经存在的函数:
function!{name}({var},{var2},...)
可变参数:
function({var1},{var2},....)
a:1 表示第一个可选参数
a:2 表示第二个可选参数
查看函数内容:
function name
删除函数
delfunction name
列表
vim数据类型:
---基本数据类型:字符串,数值
---复合数据类型:列表,字典
列表的定义和使用:
let alist=【‘apple’,‘pear’,‘peach’】
call add(alist,‘banana’)
echo alist
for n in alsit
echo n
endfor
字典
字典的定义和使用:
let notebook={'jim':'98','kate':'100'} 定义,保存键-值
echo notebook【‘jim’】 查找字典
for key in keys(notebook) 遍历字典
echo key
endfor
字典函数:
echo notebook.jim
let notebook.kate='99'
echo notebook
echo split('how ate you') ->['how','are','you']
ctags的使用
ctags的简介
ctags(Generate tag files for source code)是vim下方便代码阅读的工具。尽管ctags也可以支持其他编译器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易浏览源代码。
ctags的安装命令
在终端命令行下直接输入 sudo apt-get install ctags 进行安装
使用命令 ctags --version 查看版本信息
ctags的配置
使用sudo vi /etc/vim/vimrc编辑vim配置文档,在其中加入如下的命令:set tags=tags文件的路径 ;例如我的tags文件路径为/home/lizhiwen/tags,所以我的可以这样加set tags=/home/lizhiwen/tags;如果需要配置多个tags,只需要在后面添加就行了。
vim的使用
把光标移动变量名或者函数名上,然后按下Ctrl +] ,这样就能直接调到这个变量或者函数的定义的源文件中,并把光标定义到这一行。用Ctrl + t可以退回原来的地方。
taglist的使用
taglist的简介
taglist插件是一筐基于ctags,在vim代码窗口旁以分割窗口形式显示当前的代码结构概览,增加代码浏览的便利程度的vim插件
taglist的安装
第一步:
taglist的下载网址:Vim源代码浏览器插件下载|SourceForge.net
第二步:
解压:unzip taglist_46.zip.解压之后可以看到文件夹doc和文件夹plugin
第三步:
拷贝:将plugin文件夹里面的taglist.vim拷贝到~/.vim/plugin文件夹下。如果没有~/.vim这个文件夹,可以手动创建一个。
也可以安装在/usr/share/vim/vim81目录下面,只要是官方路径下面就可以
一般用户自己安装的插件建议安装在~/.vim下面
taglist的打开和关闭
在vim的命令模式下输入 Tlist 打开taglist窗口
使用空格键,在屏幕底显示函数原型
在vim的命令模式下输入 TlistClose 关闭taglist窗口