目录
位置移动
光标移动
curror
h 左
j 下
k 上
l 右
^ 或 0 首
$ 尾
A 在一行结尾处附加文本
I 在一行的开头处插入文本
o 沟槽所在位置下一行打开新行
O 沟槽所在位置上一行打开新行
d delete
w 使命令光标移动一个单词
W 移动下一个大写单词
b 倒退一个单词
B 倒退时标点/符号不算
[{ Jump to block start
% Move cursor to matching parenthesis
G 移动到文件结尾
1G 到达文件顶端
42G 移动到42行.G(转至)命令
i 插入
a 添加
c 更改
d 删除
r 替换
R 一起替换,直到按ESC
s 同c加space
S 删除一行并插入;同cc
~ 大小写转换
移动时先用d做删除,再用p进行放置
复制时选用y做"拖曳"动作,再用p进行放置.
cw 从光标到这个单词的结尾
c2b 从光标往前两个单词
c$ 从光标到本行结尾 同 "C"
c0
cc 将一整行换成输入文本
cw 和 cc工作方式不同.使用cw时,原来的文本会先留着,直到输入内容逐渐将它覆盖掉,而任何余下的原文本(到$为止的文本),在按下ESC后立即消失.但使用cc时,原文本会立即消失
dw 删除单词
dd与D 删除一行
db 向前删除
d$ 和 d0
D 是d$的简写
xp 对调两个字母
y 拖曳
yw y$ 4yy
yy 一整行 与Y相同,与D或C不太同
yy -> 2j -> P
jp 光标往下移一行再将粘贴
50i*ESC #会插入50星号
||换成&& 2r&
J 光标所有行与下一行合并
. 重复上一个命令
`` 回到上一个记号或上下文
'' 回到包含上一个记号的行的开头处
光标不动,整体屏幕动
ctrl - e
ctrl - y
zz- 将当前行移动到屏幕的中间
(小心zz,如果碰巧碰巧Caps Lock意外,你会保存并退出vim!)
zt - 将当前行移动到屏幕的顶部
zb - 将当前行移动到屏幕底部
行移动
^-G 显示当前行号 文件信息
44G 转至44行
滚动屏幕
^F 向前滚动一整屏
^B 向后滚动一整屏
^D 向前滚动半整屏
^U 向后滚动半整屏
^E 向前滚动1行
^Y 向后滚动1行
用z得新调整屏幕位置
z[ENTER] 将光标移到屏幕顶端并滚动屏幕 z. 光标移到到屏幕中心 z- 光标移到到屏幕底端
在屏幕中移动
H 移到屏幕顶端行 M 移到屏幕中间 L 移到屏幕底端
nH 移到屏幕顶端n行 nL 移到屏幕底端n行
^ 移到到当前行第1个非空格处 n| 移动到第n列
e 移到单词的结尾 E 移到单词的结尾(忽略标点符号)
( 当前句子的开头 ) 下个句子的开头
{ 当前段的开头 } 下个段的开头
[[ 当前节开头 ]] 下节开头
搜索
根据探索模式的结果来移动
/pattern
?pattern
:set nowrapscan 若设置了,向前搜索失败会提示"Address search hit BOTTOM without matching pattern"
d?move 从光标位置开始向前删除到出现move的地方
当前行中搜索
fx 搜索(将光标移动到)本行下一个出现x的地方,x表示任意字符
FX 搜索(将光标移动到)本行上一个出现x的地方
tx 搜索(将光标移动到)本行下一个出现x的地方的前一个字符
Tx 搜索(将光标移动到)本行上一个出现x的地方的后一个字符
; 重复上一个搜索命令,方向相同
, 重复上一个搜索命令,方向相反
dfx 删除到下一个x字符为止的所有文本,包括x
ct 更改一个句子内容,而留下最后句号
快捷键
r/R # [N]这两个是替换字符的命令
d x/X # [N]这是删除命令
u C-r # [N]这是undo redo
y p/P # [N]这是复制粘贴
... 此处省略上百字 ...
## 上面的命令基本可以完成任务了,但是想要优雅,还不过,你需要知道简洁的命令
## 下面的命令其实是很多命令的组合
dd # 删除一行
yy # 复制一行
C # 删除本行光标后面的文字,然后进入Insert模式
... 此处省略上百字 ...
dap # 删除全文
gg = G #有以上设置格式化才能有用
1,2 co 4
特殊字符输入
vim 输入 \001
如何键盘输入\001分隔符?用vi编辑器Ctrl+v然后Ctrl+a
文本编辑
normal
对标点内的内容进行操作
ci'、ci"、ci(、ci[、ci{、ci< - 分别更改这些配对标点符号中的文本内容
di'、di"、di(或dib、di[、di{或diB、di< - 分别删除这些配对标点符号中的文本内容
yi'、yi"、yi(、yi[、yi{、yi< - 分别复制这些配对标点符号中的文本内容
vi'、vi"、vi(、vi[、vi{、vi< - 分别选中这些配对标点符号中的文本内容
把上面的i 改成 a 可以连配对标点
一起操作。
比如要操作的文本如下:
111"222"333
将光标移到"222"的任何一个字符处输入命令 di" ,文本会变成: 111""333
若输入命令 da" ,文本会变成: 111333
剪切/复制&粘贴
y copy the selected text to clipboard
p paste clipboard contents
D Cut to the end of line
dd Cut current line
y$ copy to end line
yy copy current line
快速选中并复制粘贴替换一个单词
1.光标移动到aaa的开头,按 v 按e 按y
2.光标移动到bbb的开头,按 v 按e 按p
也就说,快速选中一个单词,按v按e即可
大小写转换
Vu Lowercase line
VU Uppercase line
g~~ Invert case
vEU Switch word to uppercase
vE~ Modify word case
ggguG Set all text to lowercase
gggUG Set all text to uppercase
:set ignorecase Ignore case in searches
:set smartcase Ignore case in searches excepted if an uppercase letter is used
:%s/\<./\u&/g Sets first letter of each word to uppercase
:%s/\<./\l&/g Sets first letter of each word to lowercase
:%s/.*/\u& Sets first letter of each line to uppercase
:%s/.*/\l& Sets first letter of each line to lowercase
vim visual
vim选中字符复制/剪切/粘贴
问题描述: vim选中字符复制/剪切/粘贴 - 罗松超 - 博客园
vim 中选中指定字符,进行复制/剪切/粘贴
问题解决:
进入vim中visual模式,visual模式进入,可以有三种方式:
(1)在普通模式(normal)下,直接按键 v 就可以进入默认visual模式,可以使用v+j/k/h/l 进行文本选择
普通可视
注:
使用normal模式下的 v命令
,进入visual模式,v+ j/k/h/l
进行文本选中
对于选中的文本进行如下按键:
(1.1)d ------ 剪切操作
(1.2)y ——-复制操作
(1.3)p ——-粘贴操作
(1.4)^ ——–选中当前行,光标位置到行首(或者使用键盘的HOME键)
(1.5)$ ——–选中当前行,光标位置到行尾(或者使用键盘的END键)
(2)Visual Line模式 按键V可以进入
按键V之后,进入Visual Line模式,使用 j/k键可以选中一行或者多行
(3)Visual Block模式,按键Ctrl + V可以进入
按键ctrl+v之后,进入Visual Block模式,使用 j/k/h/l键可以选中一块
块模式 注:
在块模式下,可以进行多列的同时修改,修改方法是:
首先进入块模式 Ctrl+ v
使用按键j/k/h/l进行选中多列
按键Shift + i 进行 块模式下的插入
输入字符之后,按键ESC,完成多行的插入
列模式
可视模式中选择文本
选中Practical Vim
光标在a标签上 vit
<a href="http://pragprog.com/dnvim/">Practical Vim</a>
选中并查找
- y(选中的文本,
"
默认情况下进入寄存器) - / (进入搜索模式)
- (\ V)(可选,进入“非常魔幻”模式*)
- Ctrl+ r "(从
"
寄存器插入文本),ctrl + r 之后需要两次输入" - Enter
- *或#将在光标下搜索单词(前进/后退)
ex编辑
Full name | Abbreviation | Meaning |
---|---|---|
delete | d | 删除行 |
move | m | 移动行 |
copy | co | 复制行 |
- | t | 与co同义 |
在vi中输入ex命令时,命令前必须加上冒号.命令可以使用完整或编写
:3,18d 删除第3行到第18行
:160,224m23 将160到224行移到23行后(类似vi中delete和put)
:23,29co100将23行到29行复制到100行之后
:set number
:set nu
:set nonumber
:set nonu
:1,10# 暂时显示某些编号
:= 列出文件的总行数
:.= 列出当前所在行号
:/pattern/= 列出pattern第一次出现的行号
删除空行
:%s/^\s*\n//g
统计分析
统计字符串出现的次数
:%s/字符串//ng
统计词语在文件中出现的行数
cat file|grep -i 字符串 |wc -l
help
vim有着一个比较陡峭学习曲线。一旦掌握一些基本操作之后,能大幅度提高编辑效率。可以Unix系统命令行下输入"vimtutor"或者点击Windows系统桌面上的Vim教学图标进入。
Vim用户手册中描述了Vim的基础和进阶功能。Vim中输入":help user-manual"进入用户手册。
新用户也应该学习Vim的帮助系统。可以在Vim中输入不带参数的"help"来阅读主帮助文件。
:h vimtutor
:h
:help
:h key-notation #显示组合键
与操作系统做交互
#将vim中的代码或者文字复制到剪切板
"+yy
"+nyy
#将系统剪切板中的代码或者文字复制到vim中
"+p
"+P