Vim使用笔记教程软件Linux其它

印迹发布于:2019-3-16 1250

vim是一款功能强大、高度定制的文本工具。配置极为灵活的编辑器,且支持多种主流OS(linux、Unix、mac、windows),可用来各种编程预言的coding和文件编辑,用习惯了vim,你会体会到它是如此的高效和便捷。引用官网(www.vim.org)上vim的自我介绍说:

“Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.Vim is often called a "programmer's editor," and so useful for programming that many consider it an entire IDE. It's not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files. Despite what the above comic suggests, Vim can be configured to work in a very simple (Notepad-like) way, called evim or Easy Vim.”

本文主要通过一些示例介绍下如何定制自己专属的基于vim的IDE编程环境(主要针对c/c++,其他语言亦可采用相同的思路)。下面我们就一步一步来介绍,一砖一瓦从零开始建造我们基于VIM的友好的IDE环境。

Vim安装

  • Ubuntu
  • sudo apt-get install vim
  • redHat/Fedora/CentOS
  • yum install vim (redHat/Fedora/CentOS)

vi和vim是什么关系?

  • vi:可视化接口(visual interface),EX(行文本编辑器)的可视化接口
  • vim:vi(VIM - Vi IMproved)的加强版本
  1. 增加了多级撤销
  2. 多窗口操作
  3. 提高了稳定性,减少了崩溃以及崩溃后也可以恢复
  4. 关键字自动补全以及上下文相关的补全

vim工作模式

  • 普通模式:vim打开一个文件时的默认模式(命令模式)
  • 插入模式:键盘上的i键盘即进入插入模式,o/a都可以进入插入模式
  • 命令行模式:shift+:即可进入命令行模式
  • :set nulber # 显示行号

配置文件子/etc/vim/vimrc或者~/.vimrc

  • 可视化模式

键盘上的v进入可视化模式,上下左右移动光标选中文本,可以进行后续的粘贴、删除、复制等操作

  • 替换模式

R就可以进入到替换模式

光标移动

  • 单个字符移动
字符移动方向
h向左移动
l向右移动
j向下移动
k向上移动

10>l向左移动10个字符

  • 单词移动
单词移动方向
w将光标移动到下一个单词的开头
b将光标移动到前一个单词的开头
e将光标移动到下一个单词的词末
E移动到单词的结尾(忽略标点符号)
ge将光标移动到上一个单词的词末
2w指定移动的次数
  • 行移动
单词移动方向
$将光标移动到当前行的行尾
0将光标移动到当前行的行首
^将光标移动到当前行的第一个非空字符
2|移到当前行的第2列
fx将光标移动到当前行的第一个字符x
3fx将光标移动到航前行的第3个字符x
tx将光标移动到目标字符x的前一个字符上
fx和tx可以通过;,进行正向或反向重复移动
%用于符号间的移动,它会在一对()[]{}之间跳跃
  • 文本块移动
单词移动方向
(移到当前句子的开头
)移到下一个句子的开头
{移到当前一段的开头
}移到下一段的开头
[[移到当前这一节的开头
]]移到下一节的开头
  • 在屏幕中移动
单词移动方向
xG\跳转到指定的第x行,G移动到文件按末尾
``2次单引号)返回到跳转前的位置
gg移动到文件开头
x%移动到文件中间,就使用50%
H移动到当前屏幕的开头
M移动到当前屏幕中间
``L`移动当前屏幕的末尾
ctrl+G查看当前的位置状态

滚屏与跳转

  • 半屏滚动
快捷键方向
ctrl+u向上滚动
ctrl+d向下滚动
  • 全屏滚动
快捷键方向
ctrl+b向上滚动
ctrl+f向下滚动
  • 定位光标的位置
定位位置
zz将光标置于屏幕的中间
zt将光标移动到屏幕的顶部
zb将光标移动到屏幕的底部
  • 设置跳转标记
标记跳转
mx设置跳转位置
`x跳转到设置

文本插入操作

按键描述
i在当前光标的前面插入字符
a在当前光标的后面追加字符
o在当前光标的下一行行首插入字符
I在一行的开头添加文本
A在一行的结尾处添加文本
O在光标当前行的上一行插入文本
s删除当前光标处的字符并进入到插入模式
S删除光标所在处的行,并进入到插入模式
u撤销修改

文本删除

  • 字符删除
按键描述
x删除当前光标所在处的字符
X删除当前光标左边的字符
  • 单词删除
按键描述
dw删除一个单词(从光标处到空格)
daw删除光标所在的整个单词(包括空白字符)
diw删除整个单词文本,但是保留空格字符不删除
d2w删除从当前光标开始处的 2 个单词
d$删除从光标到一行末尾的整个文本
d0删除从光标到一行开头的所有单词
dl删除当前光标处的字符=x
dh删除当前光标左边的字符=X
  • 行删除
按键描述
dd删除当前光标处的一整行=D
5dd删除从光标开始处的5行代码
dgg删除从光标到文本开头
dG删除从光标到文本结尾
  • 行合并
按键描述
J删除一个分行符,将当前行与下一行合并

文本复制、剪切与粘贴

按键描述
y复制,p:粘贴
yw复制一个单词
y2w复制2个单词
y$复制从当前光标到行结尾的所有单词
y0复制从当前光标到行首的所有单词
yy复制一整行
2yy复制从当前光标所在行开始的2
  • 复制文本块
  1. 首先进入visual模式:v
  2. 移动光标选择文本
  3. 复制与粘贴的操作

剪贴板交互(将vim的内容复制出来)

习惯了在windows环境各个应用程序之间如UltraEdit,记事本,eclipse之间ctrl+c,ctrl+v进行复制粘贴的你,如何在vim与别的windows应用程序之间拷贝粘贴呢?

当然你可以在vim里选择用鼠标,选中一块文字然后右键复制,再到应用程序里ctrl+v粘贴,只不过这样效率就差多了。
更好的做法是,在vim中使用 "*y 使用进行复制,然后在应用程序中用ctrl+v粘贴。

从应用程序到vim则在应用程序中使用ctrl+c复制,在vim中使用shift+insert粘贴。

如:

"*yy   复制一行
"*y2w  复制二个词
……

实现的原理是:

"    表示使用寄存器
"*   表示使用当前选择区

推荐使用ctrl+insert复制,shift+insert粘贴。

vim有多个剪贴板,其中就包括了系统剪贴板。

使用命令:reg可以看到各个剪贴板的内容。其中“”表示当前使用的剪贴板,“0-9是历史剪贴板,“#就是系统剪贴板了(你可以在系统里拷贝一些东西,看是不是会出现在“#剪贴板里)。在vim中使用y可以把内容拷贝到“”号剪贴板,继续y会把新的东西放入“”,而原来“”的东西就会被压入“0-9的各个历史剪贴板中。X11系统下还有一个“*的剪贴板对应中键拷贝粘贴,windows不知道有没有。

解决第一个问题:

“+y  把选中内容拷贝到”+号剪贴板,即系统剪贴板
“+p  把系统剪贴板的内容粘贴到vim,这一个用shift+insert也可完成

解决第二个问题:

“0p 可以把已经被挤到”0剪贴板的内容A重新粘贴出来

嫌长的做一个map,映射到某个功能键或组合就方便了。

文本修改与替换

按键描述
cw删除从光标处到单词结尾的文本并进入到插入模式
cb删除从光标处到单词开头的文本并进入到插入模式
cc删除一整行并进入到插入模式
~修改光标下字符的大小写
r替换当前光标下的字符
R进入到替换模式
xp交换光标和下一个字符

组合命令使用

更改删除复制从光标位置到...
cHdHyH屏幕顶端
cLdLyL屏幕低端
c+d+y+下一行
c5|d5|y5|本行的第五列
2c)2d)2y)往下第二个句子
c{d{y{上一段
cGdGyG文件结尾
c13Gd13Gy13G第13行

文本查找与替换

  • 字符串查找
表达式描述
/string正向查找
?string反向查找
  • 设置高亮显示

:set hls

  1. *按键将当前光标处的单词高亮显示
  2. 使用n浏览下一个查找高亮的结果
  • 字符串替换
操作描述
:s/old/new将当前行的第一个字符串old替换为new
:s/old/new/g将当前行的所有字符串old替换为new
:90s/old/new/g将指定行的所有字符串old替换为new
:90,93s/old/new/g9093行的所有字符串old替换为new
:%s/old/new/g将文本中所有的字符串old替换为new
:%s/old/new/gc依次替换每个字符串关键字
:%s/^struct/int/g将所有以struct开头的字符串替换为int

修改的撤销、重做和保存

操作描述
u撤销上一步的操作
Ctrl+r将原来的插销重做一遍
U恢复一整行原来的面貌(文件打开时的文本状态)
q若文件没有修改,直接退出
q!文件已经被修改,放弃修改退出
wq文件已经被修改,保存修改并退出
e!放弃修改,重新回到文件打开时的状态

编辑多个文件

  • 文件和缓冲区的区别
  1. 文件是保存在磁盘上的,而打开的文件的文件是在内存中
  2. 在内存中有一个缓冲区,用来存放打开的文件
  3. vim 每次打开文件时都会创建一个缓冲区,vim 支持打开多个文件
操作描述
:buffers`查看缓冲区列表==ls
:buffer N`根据缓冲区列表的编号跳转到指定缓冲区
:bnext/bprev`遍历缓冲区列表
:bfirst/blast`分别调到缓冲区列表的开头和结尾
:write`将缓冲区的修改保存到磁盘上
:edit! e!`放弃缓冲区的修改,恢复到文件打开时的状态
:edit file`编辑另一个文件
:wnext`保存当前缓冲区的修改并跳转到缓冲区列表中的下一个文件

:set autowrite

标签页与折叠栏

标签页的新建:tabedit file/tab split

标签页的切换: tabn/tabp 按键:gt/gT

标签页的关闭: tabclose 关闭当前的标签页,:tabonly

  • 创建一个折叠

zf200G: 将光标和 200 行之间的代码折叠起来

  • 折叠的打开与关闭
  1. za: 打开和关闭折叠
  2. zr/zm: 一层一层地打开和关闭折叠
  3. zR/zM: 分别打开和关闭所有的折叠
  • 折叠键的光标移动
  1. zj: 跳转到下一个折叠处
  2. zk: 跳转到上一个折叠处
  • 删除折叠
  1. zd: 删除光标下的折叠
  2. zD: 删除光标下的折叠以及嵌套的折叠
  3. zE: 删除所有的折叠标签

创建的折叠当退出 vim 之后就失效了。

多窗口操作

  • 分割窗口

split/vsplit filename

  • 窗口间跳转

ctrl+w hjkl ctrl+w w

  • 移动窗口

ctrl+w HJKL

  • 调整窗口尺寸
  1. ctrl+w +/- 调整窗口的高度
  2. ctrl+w </> 调整窗口的宽度
  3. ctrl+w = 所有的窗口设置相同的尺寸
  4. :resize n 将当前窗口尺寸调整为 N 行
  • 关闭窗口
  1. close: 关闭一个窗口
  2. qall: 退出所有窗口
  3. qall!: 放弃修改,退出所有窗口
  4. wqall: 保存并退出所有窗口
  5. wall: 保存所有窗口



http://www.virplus.com/thread-194.htm
转载请注明:2019-3-16 于 VirPlus 发表

推荐阅读
最新回复 (0)

    ( 登录 ) 后,可以发表评论!

    返回