Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vi&vim #12

Open
kuckboy1994 opened this issue Dec 3, 2017 · 0 comments
Open

vi&vim #12

kuckboy1994 opened this issue Dec 3, 2017 · 0 comments

Comments

@kuckboy1994
Copy link
Owner

kuckboy1994 commented Dec 3, 2017

介绍

viVim都是运行在类Unix系统下的编辑器。
viVisual的不正规的缩写。
Vim是从vi发展出来的一个文本编辑器。正式名字Vi IMproved

vi琐事

vi是在伯克利加州大学,Evans Hall中,使用"Lear-Siegler ADM3A终端”编写完成,在这台机器上的“退出键”(Esc),也就是今天键盘“表格键”(Tab)的位置,目前vi用户仍使用“退出键”(Esc)来转换状态。

看了这张图,ヾ(。`Д´。) 和HHKB的键盘好像啊,怪不得大神都用HHKB。
但用HHKB不一定是大神☹。

模式编辑器

vi 是一个模式编辑器
常用的模式

  • 普通模式
  • 命令模式
  • 插入模式

简单介绍常用的操作

保存&退出

:q quit
:q! quit and abandom
:w write
:wq write and quit

移动光标

表1:vi(vim)光标移动按键
按键 移动光标
l or 右箭头 向右移动一个字符
h or 左箭头 向左移动一个字符
j or 下箭头 向下移动一行
k or 上箭头 向上移动一行
0 (零按键) 移动到当前行的行首。
^ 移动到当前行的第一个非空字符。
$ 移动到当前行的末尾。
w 移动到下一个单词或标点符号的开头。
W 移动到下一个单词的开头,忽略标点符号。
b 移动到上一个单词或标点符号的开头。
B 移动到上一个单词的开头,忽略标点符号。
Ctrl-f or Page Down 向下翻一页
Ctrl-b or Page Up 向上翻一页
numberG 移动到第 number 行。例如,1G 移动到文件的第一行。
gg 移动到文件的第一行
G 移动到文件末尾。
l、h、j、k、b、w都是可以结合数字键一起使用的 比如10k,向上移动10行
表2: 编辑模式进入
命令 编辑模式进入
i 当前字符前面插入
a 当前字符后面追加字符。
a 当前字符后面追加字符。
A 当前行尾后面追加字符。
o 当前行的下方打开一行。
O 当前行的上方打开一行。
表3: 文本删除命令
命令 删除的文本
x 当前字符
3x 当前字符及其后的两个字符。
dd 当前行。
5dd 当前行及随后的四行文本。
dW 从光标位置开始到下一个单词的开头。
d$ 从光标位置开始到当前行的行尾。
d0 从光标位置开始到当前行的行首。
d^ 从光标位置开始到文本行的第一个非空字符。
dG 从当前行到文件的末尾。
d20G 从当前行到文件的第20行。
表4: 复制命令 & 粘贴
命令 复制的内容
p 当前行光标位置之后粘贴
P 当前行光标位置之前粘贴
yy 当前行。
5yy 当前行及随后的四行文本。
yW 从当前光标位置到下一个单词的开头。
y$ 从当前光标位置到当前行的末尾。
y0 从当前光标位置到行首。
y^ 从当前光标位置到文本行的第一个非空字符。
yG 从当前行到文件末尾。
y20G 从当前行到文件的第20行。
条目 含义
: 冒号字符运行一个 ex 命令。
% 指定要操作的行数。% 是一个快捷方式,表示从第一行到最后一行。另外,操作范围也可以用 1,5 来代替(因为我们的文件只有5行文本),或者用 1,$ 来代替,意思是 “ 从第一行到文件的最后一行。”如果省略了文本行的范围,那么操作只对当前行生效。
s 指定操作。在这种情况下是,替换(查找与替代)。
/Line/line 查找类型与替代文本。
g 这是“全局”的意思,意味着对文本行中所有匹配的字符串执行查找和替换操作。如果省略 g,则只替换每个文本行中第一个匹配的字符串。
表13-5: 替换确认按键
按键 行为
y 执行替换操作
n 跳过这个匹配的实例
a 对这个及随后所有匹配的字符串执行替换操作。
q or esc 退出替换操作。
l 执行这次替换并退出。l 是 “last” 的简写。
Ctrl-e, Ctrl-y 分别是向下滚动和向上滚动。用于查看建议替换的上下文。

实例

  1. 内容查找
    文件中查找kuck
/kuck

n // 查找下一个
N // 查找上一个
  1. 内容替换
    替换shankuck
:%s/shan/kuck/g
  1. 可以同时编辑两个文档
vi shanchao.txt demo.txt

:ls
  1 %a   "shanchao.txt"                         line 1
  2 #    "demo.txt"                             line 1

:n  // 下一个文件
:N  // 上一个文件
:e newfile  // 新建一个newfile的文件

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant