vim 常用操作(updating)

目录

位置移动

光标移动

剪切/复制&粘贴

搜索

大小写转换

快捷键

特殊字符输入

文本操作

normal

对标点内的内容进行操作

vim visual

vim选中字符复制/剪切/粘贴

可视模式中选择文本

选中并查找

ex编辑

统计分析

统计字符串出现的次数

help



位置移动

光标移动

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>

选中并查找

  1. y(选中的文本,"默认情况下进入寄存器) 
  2. / (进入搜索模式)
  3. (\ V)(可选,进入“非常魔幻”模式*)
  4. Ctrl+ r "(从"寄存器插入文本),ctrl + r 之后需要两次输入"
  5. Enter 
  6. *或#将在光标下搜索单词(前进/后退)

ex编辑

Full nameAbbreviationMeaning
deleted删除行
movem移动行
copyco复制行
-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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大怀特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值