巴中热线

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 837|回复: 0

[电脑网络] vim编辑文件常用快捷键

[复制链接]
发表于 2018-12-2 11:28:17 | 显示全部楼层 |阅读模式

注册巴中热线论坛,交好友享优惠,衣食住行吃喝玩乐尽在 BZHOT.com

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
vim 常用快捷键
1、vim ~/.vimrc 进入配置文件

如果不知道vimrc文件在哪,可使用 :scriptnames 来查看
set nu    #显示行号
set tabstop=4  #一个tab为4个空格长度
set ai    #设置自动缩进
syntax on    #设置高亮


2、基本编辑文件操作
空格键  向右移动一格
x   删除后面的字符
X   删除前一个字符
3x  删除3个字符
dd  删除一行
3dd 删除光标处的3行,含本行
D   删除到行尾
J   删除换行符,使下一行并上来
nJ  连接后面的n行
u   撤销上一次操作
U   撤销当前行的所有修改
i   在光标前插入
I   在行首插入
a   在光标后插入
A   在行末插入
3yy 复制光标处的3行,含本行
P   粘贴至光标后,和dd,yy配合使用
p   粘贴至光标前,和dd,yy配合使用
3P:粘贴3次
"2p 粘贴最后第二次的删除的内容
o   在当前行的下面另起一行,并变为插入模式
O   在当前行上面另起一行,变为插入模式
x   删除光标当前字符
X   删除光标左边的字符,相当于<-键
yaw  复制一个单词,光标在单词任意位置
ynw  复制N个单词
ynj  向下复制n行
ynk  向上复制n行
ctrl+r  对撤消的撤消
caw  改写单词  c 相当于 d 变为编辑模式

有时我们不容易得出行数,这时可以用做标记的方法来制定复制范围:
1. 在开始行上输入ma作一个标记a
2. 移动到结束行,输入y'a会复制当前行到标记a之间的文本。d'a会删除。

或者是v进入可视模式,再13G跳转到相应行,y即可。
:10,20y    回车即可,相应的删除也是如此
:10,20d     (此方法比上面两种方法更简单)
:10,20 m 30    把10行到20行的内容,剪切到30行之后
:10,20 co 30   把10行到20行的内容,复制到30行之后

fx  向右跳到本行字符x处(x可以是任何字符)
Fx  向左跳到本行字符x处(x可以是任何字符)
tx  和fx相同,区别是跳到字符x前
Tx  和Fx相同,区别是跳到字符x后
#  到与当前单词相同的上一个单词上
*  到与当前单词相同的下一个单词上

如果你要重复键入一个短语或一个句子, 也有一种快捷的方法。Vim有一种记录宏的机制。你键入"qa"开始把一段宏记录入寄存器变量`a'中。
按下来你可以象平常一样键入你要的操作, 只是这些操作都会被Vim记录进它命名为`a'的宏中, 再次再下"q"键, 就结束了宏`a'的录制。当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共有26个可用的寄存器供你记录宏。 使用宏你可以重复多个不同的操作。而不仅仅是插入文本了。如果你要进行某种重复的操作, 记着要用这一招呀。

:abbr hte the
:abbr hw Hello World

输入先面的单词时,自动用后面的替换。

3、移动:

b、3b、w、3w:向前\后移动几个单词,标点也算一个单词。相应的大写状态为不含标点,即只把空格和换行符作为单词间隔符。

$:移动到行尾  3$:移动到3行后的行尾

^:移动到行首,0也是

+:移到下一行的行首

-: 移到上一行的行首

f:搜索命令,小写时向后搜索(用来定位)如 fx:定位到下一个x上。   Fx:定位到上一个x上,重复时,可用;或,  不过 , 表示反方向

%:跳到相对应的括号上,编程时常用

33G:跳转到33行   此时按``可以返回到原来行

gg:文件头   G: 文件尾

30%:跳转到文件的30%处

"H"意为Home, "M"为Middle, "L"为Last.  当前屏幕的上中下位置,大小写皆可

Ctrl+G:显示当前位置

set number:设置显示行号,set nonumber:关闭显示

:set ruler 设置在窗口右下角显示行号,与上面的好处是,节省空间

ctrl+u\d  向上\下滚动半屏

ctrl+e\y  向上\下滚动一行

ctrl+b\f  向上\下滚动一屏  这个比较实用,记住。

Ctrl+o:临时变成命令模式(一次而已)

:e!:放弃更改,然后相当于重新打开

zz:将当前行滚动于屏幕中间,方便查看上下文  zt置顶,zb置尾

/string  查找string,回车后,按n键可以跳到下一个,N上一个,另外按/键后,按上下键可以找到以前查找的记录,同样的 :也有记录

?/string 同上,默认向上查找

:set ignorecase 大小写无关

:set noignorecase 大小写敏感

* :查找下一个光标所在单词  #是查找上一个

:set hlsearch  高亮显示查找结果

:set nohlsearch  取消高亮

:nohlsearch  去掉当前显示的高完(一次性)

`` 上次光标停靠的行

% 匹配到相应括号处

>>   向右移动本行一段距离     <<   向左移动本行一段距离    3<<    把下面3行(包括本行),向左移动一段距离     :20,30>>  把20行到30行向右移动一段距离

4、小幅改动:

:%s/str1/str2/g   替换每一行的 str1为 str2

:10,20s/str1/str2/g   替换从行10到行20之间的 str1为 str2

:10,$s/str1/str2/g   替换从行10到最后一行之间的 str1为 str2

:s/str1/str2/g   替换当前行的 str1为 str2

.  重复执行命令

:10,$ w test2.cpp     取行10到最后一行内容,保存到test2.cpp

:r class/User.hpp    读取文件中的内容,插入到当前行的后面

dw:删除一个单词(光标后部分)  不如:daw实用    d4w:删除4个单词    d$:删除当前光标到行尾    d^:删除当前光标至行首       d换成c效果是一样的,只是操作完会变成insert模式   dnw: 删除N个单词   dnj: 向下删除n行      dnk: 向上删除n行


D  相当于d$
C  相当于c$  s:相当于c1  S:相当于cc

r:替换当前字符,但不会进入insert模式    3r:把后面3个字符替换掉    R:替换模式

.:重复上一次操作

v:进入Visual模式
V:进入可视行模式,比如 Vjjd 删除3行
Ctrl+v:可视块模式

自动缩进:

:set cindent(所有的set都可以简写为se,虽然只节省了一个字符, 译者注) 需要注意的是cindent控制缩进量是通过shiftwidth选项的值, 而不是通过tabstop 的值, shiftwidth的默认值是8(也就是说, 一个缩进为8个空格, 译者注), 要改变默认的设置, 可以使用":set shiftwidth=x"命令, 其中x是你希望一个缩进量代表的空格的数目.

{ = 到前一个空行上
} = 到下一个空行上



上一篇:如何给/home增加空间?Linux系统把/home重新挂载到其他硬盘或分区方法
下一篇:Linux系统硬链接和软链接作用特点和链接方法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

巴中热线 - 精彩推荐上一条 /1 下一条

快速回复 返回顶部 返回列表