–作为了一个使用Linux服务器的程序员来说,vi/vim是必学的编辑器了,好记性不如烂笔头,这里做一个学习的笔记。
简介
vi 是一款文本编辑器。vim则是在vi的基础上加入了更多的功能。
使用vi/vim,vi: vi [file] vim:vim [file] 就可以打开vi/vim的界面。
模式
vi/vim 给使用者提供了三种模式,一般指令模式、编辑模式和命令行模式。
- 一般指令模式(command mode) 用vi打开一个文件,首先进入的就是默认的一般指令模式。一般指令模式可以使用一些 命令 进行复制粘贴删除等等的操作。
- 编辑模式(insert mode) 在默认的一般指令模式界面中,使用键盘中的"i"键就可以进入编辑模式,使用esc按键可退回一般指令模式,这个模式下可以正常的字符操作的文本编辑了。
- 命令行命令模式(command-line mode) 命令行模式要区分一下一般指令模式,输入":“键就可以进入该模式,此时光标会移动到文本的最后一行。这个模式可以提供搜索,保存,退出,替换等功能。
切换说明:
- 一般指令模式 切换到 编辑模式
i:光标在当前字符的左侧I:光标在当前行的顶头o:光标所在行上新建一行O:光标所在行下新建一行a:光标在当前字符的下一个字符左侧A:光标所在当前行的最后r: 光标所在当前字符替换R:光标在当前字符左侧 ** 注意:除了rR以上都是插入模式(–INSERT–)只有rR是替换模式(–REPLACE–)r与R的区别是r只能替换一次字符,而R可以连续的替换 **
<!–more–>
-
一般指令模式 切换到 命令行命令模式
-
::可输入指令 -
/:可输入搜索关键词向下搜索 -
?:可输入搜索光见此向上搜索 -
编辑模式 退回到 一般指令模式
[exit]:输入键盘上的[exit]键退出编辑模式回到一般指令模式 -
命令行命令模式 退回到 一般指令模式
[exit]:输入键盘上的[exit]键退出一般命令行模式回到一般指令模式
切换表格
| insert model | command model | command-line model |
|---|---|---|
i I o O a A r R |
<- -> | “:”,”/","?" |
[exit] |
-> <- | [exit] |
vi的操作
界面
vi编辑器的主界面是文件内容的主体,游标以及右下角的提示(显示当前文件名以及行数和字符数,当切换模式后显示当前的模式相关提示)
编辑模式
编辑模式顾名思义,就是利用键盘的按键进行编辑,除了使用 [ESC] 按键退出编辑模式,其他的与windows系统下的记事本无异,主要的命令集中在一般指令模式和命令行模式,如下文
一般指令模式
-
移动光标
-
光标的移动
k/↑: 光标向上移动l/→: 光标向右移动j/↓: 光标向下移动h/←: 光标向左移动nk/n↑… : n为移动的单位,例如2k或者2↑向上移动2行,其它的都方向类似
-
光标的行移动
+: 光标向下移动一行-: 光标向上移动一行H: 移动到屏幕的第一行的第一个字符M: 移动到屏幕中间一行的第一个字符L: 移动到屏幕最后一行的第一个字符gg: 移动到文件第一行的第一个字符G: 移动到文件最后一行的第一个字符nG: 移动到文件第n行的第一个字符n<Enter>: 向下移动光标到n行的第一个字符
-
光标的列移动
0/[HOME]: 光标移动到当前列顶字符处$/[End]: 光标移动到当前列尾字符处n<space>: 光标移动到当前列的第n个字符
-
翻页查询
-
[Ctrl] + [f]/[Page Down]: 向下翻页 -
[Ctrl] + [b]/[Page Up]: 向上翻页 -
[Ctrl] + [d]: 向下翻半页 -
[Ctrl] + [u]: 向上翻半页 -
删除数据
-
x、X: 向后、向前删除一个字符 -
nx、nX: 向后、向前删除连续n个字符 -
d0、d$: 向前、向后删除到列首列尾连续的字符 -
d+d-: 向上、向下删除一列 -
dd: 删除光标所在当前列 -
ndd: 删除光标所在列向下n列 -
dG、dgg: 删除光标所在列向上到文件第一行和文件最后一行 -
dnG: 删除光标所在列到第n列 -
复制与粘贴
-
y0、y$: 向前、向后复制到列首列尾连续的字符 -
y+y-: 向上、向下复制一列 -
yy: 复制光标所在当前列 -
nyy: 复制光标所在列向下n列 -
yG、ygg: 复制光标所在列向上到文件第一行和文件最后一行 -
ynG: 复制光标所在列到第n列 -
pP: 删帖到当前列的上和下一列 -
撤销与前进
-
u: 撤退 -
[Ctrl]+r: 前进 -
其他指令
-
.: 继续上一个动作 -
J: 将光标所在列与下一列的数据结合成同一列
命令行命令模式
-
搜索与替换
-
:word: 向下搜索word关键词,n是继续word关键词向下搜索,N是继续word关键词向上搜索 -
?word: 向上搜索word关键词,n是继续word关键词向下搜索,N是继续word关键词向上搜索 -
:n1,n2s/word1/word2/g: n1列到n2列替换所有的word1为word2 -
:G,$s/word1/word2/g: 从一列到最后一列替换所有的word1为word2 -
:n1,n2s/word1/word2/gc:n1列到n2列替换所有的word1为word2,但是以询问模式询问是否替换,以及其他操作 -
设置编辑环境
-
:set nu: 显示行号 -
:set nonu: 不显示行号 -
文件操作
-
:w: 保存当前文件 -
:w [filename]: 保存当前文件为文件名filename -
:r [filename]: 读取文件件名为filename -
:q: 退出编辑 -
:w!q!: 强制保存与强制退出 -
ZZ: 退出编辑,如果文件有修改则保存后退出 -
:n1,n2 w [filename]: 将n1 n2 文件读取并存入filename文件中 -
其他命令行命令
-
:! command: 可以在!后输入linux命令
vim的操作
界面
除了vi的界面,还所了光标所在行字符的位置。并且文件内容区会根据文件类型有颜色显示
功能
-
区块选择
-
v: 字符反白 -
V: 列反白 -
[ctrl] + v: 区块反白 -
y: 复制反白 -
d: 删除反白 -
p: 粘贴复制的反白字符 -
多文件编辑 如何打开多个文件请参照vi命令
-
:n: 编辑下一个文件 -
:N: 编辑上一个文件 -
:files: 列出目前这个 vim 的打开的所有文件 -
多窗口编辑
-
:sp [filename]: 新建一个并列窗口打开filename -
[ctrl] + w+ 方向键 : 切换编辑窗口 -
[ctrl] + q: 退出当前编辑窗口 -
补全功能 这里做简单的介绍,使用前需要开启代码补全的,参考: :help ins-completion :help compl-omni :help ‘omnifunc’ :help i_CTRL-X_CTRL-O :help ins-completion-menu :help popupmenu-keys :help ‘completeopt’ :help compl-omni-filetypes :help omnicppcomplete.txt
-
[ctrl]+x->[ctrl]+n: 通过目前正在编辑的这个“文件的内容文字”作为关键字, 以补齐 -
[ctrl]+x->[ctrl]+f: 以当前目录内的“文件名”作为关键字, 以补齐 -
[ctrl]+x->[ctrl]+o: 以扩展名作为语法补充,以 vim 内置的关键字, 以补齐
** 结束语:vi/vim通过添加插件还可以实现更炫酷的功能,但常用的使用以上的学习笔记应该是足够用的 **