Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3542|回复: 5
打印 上一主题 下一主题

vi vim 常用命令

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2017-9-30 10:37:14 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 java 于 2019-2-26 11:05 编辑

【yy】 复制光标所在的那一行
【nyy】 复制光标所在的向下n行

【p,P】 p为将已经复制的数据在光标下一行粘贴;P为将已经复制的数据在光标上一行粘贴
【u】 撤消上一个操作
【[Ctrl] + r】 多次撤消
【.】 这是小数点键,重复上一个操作

将 Vim 剪贴板里面的东西粘贴到 Vim 之外的地方
Vim 中的复制、删除的内容都会被存放到默认(未命名)寄存器中,之后可以通过粘贴操作读取默认寄存器中的内容。寄存器是完成这一过程的中转站,Vim 支持的寄存器非常多,其中常用的有 a-zA-Z0-9+“。
其中:0-9:表示数字寄存器,是 Vim 用来保存最近复制、删除等操作的内容,其中 0 号寄存器保存的是最近一次的操作内容。
a-zA-Z:表示用户寄存器,Vim 不会读写这部分寄存器
"(单个双引号):未命名的寄存器,是 Vim 的默认寄存器,例如删除、复制等操作的内容都会被保存到这里。
+:剪切板寄存器,关联系统剪切板,保存在这个寄存器中的内容可以被系统其他程序访问,也可以通过这个寄存器访问其他程序保存到剪切板中的内容。

查看指定寄存器的内容(将寄存器名称作为参数)

:reg [register_name]
如: :reg 0

要实现"将 Vim 剪贴板里面的东西粘贴到 Vim 之外的地方?"就很明了,只需要将内容复制到剪切板寄存器(+)中即可,其他程序便可以访问到了。
"+yy  // 复制当前行到剪切板
"+p   // 将剪切板内容粘贴到光标后面
"ayy  // 复制当前行到寄存器 a
"ap   // 将寄存器 a 中的内容粘贴到光标后面
二、复制多行
任务:将第9行至第15行的数据,复制到第16行


方法1:(强烈推荐)

:9,15 copy 16  或 :9,15 co 16
由此可有:
:9,15 move 16  或 :9,15 m 16 将第9行到第15行的文本内容到第16行的后面  






在vi和vim上查找字符串
/要搜索的字符串或者字符 如:查询"count"关键字  /count
查看下一个匹配呢?按下n(小写n)
跳转到上一个匹配呢?按下N(大写N)。
从文件的结尾往开始处搜索  ?count
关闭高亮: nohlsearch (no highlight search缩写) 简写:noh



vim配置c c++开发环境

回复

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
沙发
 楼主| 发表于 2019-2-25 16:25:17 | 显示全部楼层
vi/vim常用命令(命令状态下使用)
命令
功能说明
插入字符、行,执行下面操作后,进入编辑状态
a
进入插入模式,在光标所在处后面添加文本
i
进入插入模式,在光标所在处前面添加文本
A
进入插入模式,在光标所在行末尾添加文本
I
进入插入模式,在光标所在行行首添加文本(非空字符前)
o
进入插入模式,在光标所在行下新建一行
O
进入插入模式,在光标所在行上新建一行
R
进入替换模式,覆盖光标所在处文本
剪切、粘贴、恢复操作
dd
剪切光标所在行
Ndd
N代表一个数字,剪切从光标所在行开始的连续N行
yy
拷贝光标所在行
Nyy
N代表一个数字,复制从光标所在行开始的连续N行
yw
复制从光标开始到行末的字符
Nyw
N代表一个数字,复制从光标开始到行末的N个单词
y^
复制从光标开始到行首的字符
y$
复制从光标开始到行末的字符
p
粘贴剪切板的内容在光标后(或所在行的下一行,针对整行复制)
P
粘贴剪切板的内容在光标前(或所在行的上一行,针对整行复制)
u
撤销上一步所做的操作
保存、退出、打开多个文件
:q!
强制退出,不保存
:w
保存文件,使用:w file,将当前文件保存为file
:wq
保存退出
:new
在当前窗口新建一个文本,使用:new file,打开file文件,使用Ctrl+ww在多个窗口间切换
设置行号,跳转
:set nu
显示行号,使用:set nu!或:set nonu可以取消显示行号
n+
向下跳n行
n-
向上跳n行
nG
跳到行号为n的行
G
跳到最后一行
H
跳到第一行
查找、替换
/***
查找并高亮显示***的字符串,如/abc
:s
:s/old/new//,用new替换行中首次出现的old
:s/old/new/g,用new替换行中所有的old
:n,m s/old/new/g,用new替换从n到m行中所有new
:%s/old/new/g,用new替换当前文件中所有old


回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
板凳
 楼主| 发表于 2019-2-26 15:41:10 | 显示全部楼层
本帖最后由 java 于 2019-2-26 17:22 编辑

vi中跳到文件的第一行和最后一行
由于vi编辑器不能使用鼠标,所以一个大文件如果要到最后一行只用键盘下键的话会是一个很痛苦的过程,还好有各种比较快捷的方法归我们使用:
1. vi 编辑器中跳到文件的第一行:
   a  输入 :0 或者 :1   回车
   b  键盘按下 小写 gg

2.vi 编辑器跳到文件最后一行:
   a 输入 : $   回车
   b 键盘按下大写 G
   c 键盘按 shift + g    (其实和第二种方法一样)




配对括号的查找

1、把光标放在标记有(、[或{处。

2、按%字符

3、此时光标的位置应当在配对的括号处

4、再次按%就可以跳回配对的第一个括号处。


回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-2 16:42 , Processed in 0.059323 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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