暑假临近中。

参考资料

杂项

显示当前文件名和行数

Ctrl+G

刷新屏幕

Ctrl+R

查看vim的位置

:echo $VIM

查看用户目录位置

:echo $HOME

显示vi版本

:version

读入和保存

在当前位置读入执行dir命令后的结果

:r dir

在vi中打开file1

:e file1

强制关闭vim,不保存所有文件

:qa!

保存所有文件并退出vim

:xa

将对所有文件的修改写入

:wa

返回到文件未被修改的状态

:e!

判断文本内容是否变更,如果已变更则保存并退出,如果未变更则直接退出

ZZ

将dir命令的结果写入当前行

:r! dir

移动

向下移动20行

20j

屏幕向下翻一页

Ctrl+f

屏幕向上翻一页

Ctrl+b

移动到一行的最前面

0

移动到一行的最后面

$

移动到文件的最后一行

G

移动到文件的第一行

gg

移动到文件的第17行

17G

光标向下移动9行

:9

在匹配的括号、中括号中移动

%

复制、删除和粘贴

向前删除一个字

X

向后删除一个字

x

向后删除2个单词

2cw

删除光标在的行

dd

从当前位置删除到行末

D

复制光标在的行

yy

复制从光标位置开始向下的6行

6yy

在光标位置下方粘贴

p

在光标位置上方粘贴

P

与光标所在位置的后一个字符互相交换位置

xp

在光标位置后粘贴最后一次删除的内容

p

撤销和恢复

撤销上次操作

u

重做上次操作

Ctrl+r

撤销对最后一次更改的行的操作

U

重复上次操作

.

插入操作

后插入系

在光标所在位置之后插入

a

在光标所在行的最后位置插入

A

前插入系

在光标所在位置之前插入

i

在光标所在行的第一个字符处插入

I

行插入系

向所在行之下插入一个新行

o

向所在行之上插入一个新行

O

删除插入系

清空当前行并在当前行位置插入

ss
S

清空当前位置的一个字符并在原字符位置插入

s

替换插入系

R

查找和替换

向下查找”str”

/str

向上查找”str”

?str

转到第一个匹配的查找结果

ggn

转到最后一个匹配的查找结果

GN

移动到下一个匹配的查找项目

n

移动到上一个匹配的查找项目

N

在第3和第14行之间查找”str1”,替换为”str2”

:3,14s/str1/str2/g

在第1和最后一行之间查找”str1”,替换为”str2”

:1,$s/str1/str2/g

字符、行、列选择

进入字符串选择模式

v

进入行选择模式

V

进入列选择模式

ctrl+v

复制选定的部分

y

删除选定的部分

d

编辑多个文件

打开文件file1和file2

vim file1 file2

查看vim编辑的所有文件

:file

切换到下一个文件编辑

:n

切换到上一个文件编辑

:N

分屏编辑

打开同文件的一个新窗口

:sp

在新窗口打开file2

:sp file2

切换到下方窗口

[Ctrl+w]+j

切换到上方窗口

[Ctrl+w]+k

退出分屏窗口

[Ctrl+w]+q

使用标签编辑

在2个标签中分别打开file1和file2

vim -p file1 file2

跳转到下一个标签

gt

跳转到上一个标签

gT

vi的备份文件

备份文件名为.*.swp,恢复文件内容后,必须手动删除此备份文件,否则下次打开原文件时还会提示恢复暂存文件。

当vi发现暂存文件的提示操作选项

  • Open Read-Only⇒打开不修改
  • Edit anyway⇒正常打开
  • Recover⇒加载备份文件
  • Delete it⇒删除备份文件
  • Quit⇒退出
  • Abort⇒忽略

vi的配置文件

  • 系统级配置文件位置:$VIM/vimrc
  • 用户级配置文件位置(nt):$HOME/_vimrc
set hlsearch     "高亮显示搜索关键字
set backspace=2  "允许使用退格删除字符,0和1为仅可删除刚输入的字符,无法改动原有的内容,2为可删除任何字符
set ruler        "显示状态
set showmode     "显示当前模式
set nu           "显示行号
set autoindent   "自动缩进
set showmatch    "移动到(或{时,自动提示匹配的括号
set ignorecase   "强制忽略大小写,Hi会匹配到Hi和hi
set smartcase    "智能大小写识别,Hi只会匹配到Hi,hi会同时匹配hi和Hi
set incsearch    "查找开始后光标立即定位到下一个匹配的结果上
set nowrapscan   "禁止循环搜索
set wrapscan     "启用循环搜索(默认状态),当搜索到文件头或文件尾时开始循环
set list         "显示制表符和到行尾标志
set softtabstop=4 "4个空格替代一个制表符
set shiftwidth=4  "
set history=1000  "记录的命令历史记录数
set tabstop=2     "设置制表符占的空格数量
打印/导出