vim命令详解_vim命令详解

vim命令详解_vim命令详解vim的查找功能在vim下要查找字符串:一,全匹配:1,从上往下查找,比如“string”:/string2,从下往上查找,比如“string”:?string二,模糊匹配(正则表达式)1,

目录

vim的查找功能

一,匹配:

二,正则表达式

三,快速查找

跳转移动

vim 文本行逆序化

vim跳转到指定行

vim删除

显示不可见字符

函数跳转(需要插件ctags)

移动

文档操作

翻页

复制 / 粘贴

查找 / 替换

排版

编辑多个文件

拆分成多窗口

切换窗口

快速编辑

查看文件编码

在线帮助

vim的查找功能

在vim下要查找字符串:

一,匹配查找:

片段匹配

1,从上往下查找,比如“string” :   /string

2,从下往上查找,比如“string” : ?string 

精确匹配
如果你输入 “/the”,你也可能找到 “there”。要找到以 “the” 结尾的单词,可以用:
/the\>    “\>” 是一个特殊的记号,表示只匹配单词末尾。类似地,”\<” 只匹配单词的开头。
这样,要匹配一个完整的单词 “the”,只需:/\<the\>

匹配多个关键字

1,查找既含A又含B的行:

        /.*A.*B   (向下查找)

        ?.*A.*B (向上查找)

2,查找含A或含B的行:

        /A\|B  (向下查找)

        ?A\|B(向上查找)

3,查找既含A又含B,AB顺序不要求的行:

        /\v.*A.*B.*\|.*B.*A.* (向下查找)

        ?\v.*A.*B.*\|.*B.*A.* (向上查找)

/关键字1\|关键字2\|关键字3…
即开头使用斜杠/表示后面是要匹配的内容,
如果想同时使用多个匹配则使用\|将多个关键字隔开

二,正则表达式

1,. :通配1个字符 ,如 匹配 server, 可以用  /se…r

2,* :通配多个字符,如 匹配 privilege,可以用 p*ge

三,快速查找

1, Shift + * :让光标停留在想要查找的单词的任意一个字母上面, 然后输入 Shift + * ,即可快速选中该单词,并且通过 n  或  N 进行上一个或下一个的匹配。

2,yw :让光标停留在单词的第一个字母上, 然后输入yw拷贝该单词, 然后输入 / (Ctrl + R) 0 (即 /”0),回车, 就查找到了第一个匹配的单词, 并且通过 n  或  N 进行上一个或下一个的匹配。

忽略大小写查找字符串

方法一:
查找时使用\c参数。进入底行模式,输入命令“/string\c ” 或 “/\cstring”,将会忽略大小写查找string字符串。
注意:\c与字符串之间不要有空格,因为该空格也会被认为是查询的字符串
方法二:
通过设置vim配置来忽略大小写查找。
set ignorecase 或 set ic 忽略大小写查找
set noignorecase 或set noic 严格大小写查找
临时的话,在底行模式,输入命令 set ignorecase 或 set ic,在没关闭该文件前提下,字符串的查找都将不区分大小写。

四、跳到下(上)一个搜索结果

搜索高亮后,

跳到下一个:小写n

上一个:大写N

跳转移动

gg:将光标移动到文档开头
G:将光标移动到文档末尾

1.跳转到文件头

输入冒号(:),打开命令输入框

输入命令1,是“一”的阿拉伯数字,不是小写的L

2.跳转到文件尾

输入冒号(:),打开命令输入框

输入命令:$

End键:将光标移动到开头

Home键:将光标移动到末尾

vim 文本行逆序化

要求

示例:将文本
1234
123
12
1
转换成
1
12
123
1234

命令

:g/.*/mo0
或者
:g/^/mo0

( 注意大文件会执行很长时间)

vim跳转到指定行

ngg/nG (跳转到文件第n行,无需回车)

:n (跳转到文件第n行,需要回车)

vim +n filename (在打开文件后,跳转到文件的第n行)

gg           : 跳转到文件头

Shift+g   : 跳转到文件末尾

行数+gg : 跳转到指定行,例跳转到123行:123gg

vim删除

  • vim 快速删除一个英文单词

ctrl-w删除最后一个单词,

ctrl-u删除你所在的整行.

vim 常用快捷键 – 简书

vim -r file: 恢复上次异常退出的文件;
vim +num file: 从第num行开始;

显示不可见字符

不可见特殊字符,例如\r显示为^M。通过:help digraph-table可看到所有Vim中可输入的特殊字符

显示当前文件的二进制编码可输入: %!xxd,该命令会替换文件内容!恢复:: %!xdd -r 。

Windows风格换行(\r\n)在Vim中会在每行结尾显示^M

将DOS风格换行(\r\n)的文件转为Unix风格换行(\n):

:set fileformat=unix
:w

” 显示隐藏字符
:set list
” 不显示隐藏字符
:set nolist

切换显示或隐藏不可见字符:

:set list!

:set invlist即可以将不可见的字符显示出来,例如,会以^I表示一个tab符,$表示一个回车符等。
 

cat -A file可以把文件中的所有可见的和不可见的字符都显示出来

Vim 将 tab 自动转换成空格

(摘自:Vim 将 tab 自动转换成空格https://blog.51cto.com/u_16013781/6159237)

举例:将第一行到文件尾的 tab 转换成 space,每个 tab 用 4 个 space 替代。

:set expandtab
:%ret! 4

如果没有给定 4,则用当前的 tab 宽度设定替换为 space。

其它相关命令:

:set tabstop=4 设定tab宽度为4个字符
:set shiftwidth=4 设定自动缩进为4个字符
:set expandtab 用space替代tab的输入
:set noexpandtab 不用space替代tab的输入
这种设置只是针对当前的文件。如果想让设置对所有的文件都有效,可以修改 Vim 的配置文件 .vimrc ,将设置命令添加到文件中。
 

函数跳转(需要插件ctags)

光标移到想要跳转的函数或变量上  : ” CTRL + ] “

回到跳转之前的位置:“ CTRL + t ”

按了多少次“ CTRL + ] ”,就可以按多少次“ CTRL + T ”原路返回

[[  向前跳到上一个函数头
]] 向后跳到下一个函数头

tag+函数名 来跳转到对应的函数

:tag 函数名

安装ctags:

yum install ctags

sudo apt-get install exuberant-ctags

在源文件目录树执行如下命令:

ctags -R .

即可目录下生成一个tags文件, 这个文件就是所有函数和变量的索引列表

原文链接:https://blog.csdn.net/shenjin_s/article/details/81161372

移动




w: 前移一个单词,光标停在下一个单词开头;
W: 移动下一个单词开头,但忽略一些标点;
e: 前移一个单词,光标停在下一个单词末尾;
E: 移动到下一个单词末尾,如果词尾有标点,则移动到标点;
b: 后移一个单词,光标停在上一个单词开头;
B: 移动到上一个单词开头,忽略一些标点;

文档操作

:e -- 重新加载当前文档。
:e! -- 重新加载当前文档,并丢弃已做的改动。
:w -- 保存修改。
:wq -- 保存并退出。

翻页

n%: 到文件n%的位置。
zz: 将当前行移动到屏幕中央。
zt: 将当前行移动到屏幕顶端。
zb: 将当前行移动到屏幕底端。

复制 / 粘贴

p: 在光标之后粘贴。
P: 在光标之前粘贴。
d$ or D: 删除(剪切)当前位置到行尾的内容。
d[n]w: 删除(剪切)1(n)个单词
d0: 删除(剪切)当前位置到行首的内容
[n] dd: 删除(剪切)1(n)行。

查找 / 替换

/something: 在后面的文本中查找something。
?something: 在前面的文本中查找something。
/pattern/+number: 将光标停在包含pattern的行后面第number行上。
/pattern/-number: 将光标停在包含pattern的行前面第number行上。
n: 向后查找下一个。
N: 向前查找下一个。 

:s/old/new - 用new替换当前行第一个old。
:s/old/new/g - 用new替换当前行所有的old。

\d: 表示十进制数(我猜的)
\s: 表示空格
\S: 非空字符
\a: 英文字母
\|: 表示 或
\.: 表示.
{m,n}: 表示m到n个字符。这要和 \s与\a等连用,如 \a\{m,n} 表示m 到n个英文字母。
{m,}: 表示m到无限多个字符。
**: 当前目录下的所有子目录。

排版

<< 向左缩进一个shiftwidth
>> 向右缩进一个shiftwidth
:ce(nter) 本行文字居中
:le(ft) 本行文字靠左
:ri(ght) 本行文字靠右

编辑多个文件

使用:next(:n)编辑下一个文件。
使用:previous或:N编辑上一个文件。
使用:wnext,保存当前文件,并编辑下一个文件。
使用:wprevious,保存当前文件,并编辑上一个文件。
使用:args 显示文件列表。
vi -o filenames 在水平分割的多个窗口中编辑多个文件。
vi -O filenames 在垂直分割的多个窗口中编辑多个文件。

拆分成多窗口

:split 新建一个窗口,将当前窗口分割成两半,他们显示的是相同缓冲区的内容(同一个文件)。这样就可以在两个窗口中浏览相同的文件了。

:vsplit 创建全新的垂直分割的窗口,同样是显示和当前窗口同一个文件内容。效果如下:

关闭与离开窗口

有4种关闭窗口的方式,分别是:离开(quit)、关闭(close)、隐藏(hide)、关闭其他窗口

^代表Ctrl键
^Wq,离开当前窗口
^Wc,关闭当前的窗口
^Wo,关闭当前窗口以外的所有窗口

原文链接:https://blog.csdn.net/pc153262603/article/details/106356307

切换窗口

ctrl+w ctrl+w: 切换到下一个窗口。或者是ctrl+w w。
ctrl+w p: 切换到前一个窗口。

快速编辑

~: 反转光标所在字符的大小写。
r: 替换光标处的字符,同样支持汉字。
R: 进入替换模式,按esc回到正常模式。

[n] u: 取消一(n)个改动。
:undo 5 -- 撤销5个改变。
:undolist -- 你的撤销历史。
ctrl + r: 重做最后的改动。
U: 取消当前行中所有的改动。
:earlier 4m -- 回到4分钟前
:later 55s -- 前进55秒

查看文件编码

:set fenc或:set fileencoding,查看当前文件的编码。
:set ff,显示当前文件的格式。
:pwd 显示vim的工作目录。
:ver 显示版本信息。

在线帮助

:h(elp)或F1 打开总的帮助。
:help user-manual 打开用户手册。命令帮助的格式为:第一行指明怎么使用那个命令; 然后是缩进的一段解释这个命令的作用,然后是进一步的信息。
:helptags somepath 为somepath中的文档生成索引。
:helpgrep 可以搜索整个帮助文档,匹配的列表显示在quickfix窗口中。
Ctrl+] 跳转到tag主题,
Ctrl+t 
1.复制剪切粘贴撤销
 复制:
 复制一行则:yy
 复制三行则:3yy,即从当前光标+下两行。
 复制当前光标所在的位置到行尾:y$
 复制当前光标所在的位置到行首:y^

剪切:
 剪切一行:dd
 前切三行:3dd,即从当前行+下两行被剪切了。
 剪切当前行光标所在的位置到行尾:d$
 剪切当前行光标所在的位置到行首:d^

粘贴:
 用v选中文本之后可以按y进行复制,如果按d就表示剪切,之后按p进行粘贴。

撤销与恢复:
 'u' : 撤销上一个编辑操作
 'ctrl + r' : 恢复,即回退前一个命令
 'U' : 行撤销,撤销所有在前一个编辑行上的操作

2.屏幕翻页
 Ctrl+u: 向上翻半屏
 Ctrl+f: 向上翻一屏
 Ctrl+d: 向下翻半屏
 Ctrl+b: 向下翻一屏

3.移动光标指令 移动光标普遍使用的是方向键,考虑兼容问题,vi定义太多的方向指令,下面只是一小小部分(常用的几个): space: 光标右移一个字符 Backspace: 光标左移一个字符 Enter: 光标下移一行 nG: 光标移至第n行首 n+: 光标下移n行 n-: 光标上移n行 n
:
光
标
移
至
第
n
行
尾
0
:
光
标
移
至
当
前
行
首
: 光标移至当前行尾

4.插入删除指令
 常用插入、删除指令如下:
 i:在当前光标前插入,光标后文本向后移
 a:从当前光标后插入,光标后文本后移
 I:在光标所在行首插入(第一个非空白字符前)
 A:从光标所在行末插入
 o: 在光标所在行下面新增一行(并进入输入模式)
 O: 在光标所在行上方新增一行(并进入输入模式)
 x: 删除光标所在字符,等同于[Delete]功能键
 X: 删除光标前字符,相当与[Backspace]
 dd: 删除光标所在的行
 r: 修改光标所在字符
 R: 替换当前字符及其后的字符,直到按 [ESC]
 s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
 S: 删除指定数目的行,并以所输入文本代替之
 do: 删至行首
 d$: 删至行尾

5.退出
 退出输入模式,先按一下[ESC]键(有时要多按两下),然后执行:
 :w!
 :w ——保存当前文件
 :wq —— 存盘退出(与指令 :x 功能相同)
 :q —— 直接退出,如已修改会提示是否保存
 :q! ——不保存直接退出

作者:wlianfu
链接:https://www.jianshu.com/p/9e2f8dcfbd34
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

vim3大模式
基础模式(命令模式) : 按 Esc键即可激活—-执行删除,撤销,定位等操作
末行模式: 基础模式下输入 :键即可激活—-执行查找,保存等操作
插入模式: 基础模式下输入 i即可激活( A, cw, c$, s也可以)—-执行文本插入等操作
1. 光标移动:
基础模式下的 h j k l 对应小键盘 左 下 上 右
2. 移动操作:
0: 移至行首 $: 移至行尾 gg: 移至全文首行 G: 移至全文末行 nG: 移至第n行 ctrl + g: 查看当前行数 nw: 往前进n个单词并停在词头 ne: 往前进n个单词并停在词尾 ctrl+O: 后退一次的光标位置 ctrl+I: 前进一次的光标位置
3. 删除操作:
dd: 删除(剪切)整行 ( ndd: 删除向下n行) x: 删除光标处字符 dnw:删除n个单词 de: 从光标删到词末 d$ : 从光标删到行末
4. 插入操作:
o: 当前行下方插入空行并进入插入模式 O: 当前行上方插入一行并进入插入模式 A: 当前光标所在行尾处插入 a: 当前光标后一位处插入 i: 当前光标处插入
5. 修改操作:
r : 替换光标所在处字符 R: 连续替换光标所在处字符 cw: 修改单词到词尾 c$: 修改内容到行尾 ndd + p: 成行的剪切+粘贴 :s/old/new: 将所在行的第一个old换成new :s/old/new/g: 将所在行的所有old换成new :%s/old/new/g: 将所在文本的所有old换成new :%s/old/new/gc: 将所在文本的所有old换成new并逐一请示
6. 撤销/恢复操作:
u: 撤销一步操作 U: 撤销所在行的操作 ctrl + r: 恢复(可撤销掉撤销操作)
7. 查询操作:
%: 旋停在括号上可用, 配对括号定位 /待查单词: 显示所有待查单词, 从第一个目标单词开始 ?待查单词: 显示所有待查单词, 与 /逆向 n: /式中为向后查找相同的单词 N: /式中为向前查找相同的单词 /待查单词c: 仅本次查询忽略大小写 :set ic: 查询忽略大小写(ignore case) :set noic: 恢复查询大小写敏感模式 :set hls is: 查询高亮 :nohlsearch: 取消高亮
8. vim内暂时使用shell命令(借助末行模式)
:!ls : 暂时查看当前vim运行目录下的文件 :w BACKUP: 当前文件内容另备份于BACKUP :r OTHERS: 将文件OTHERS中内容插入到光标旋停行 :help w: 分屏查看帮助文档, :q!可以退出帮助文档
9. 可视功能v的用法
v + h j k l选中区域 + y + p : 复制粘贴 v + h j k l选中区域 + d + p : 剪切粘贴 v + h j k l选中区域 + :w BACKUP: 将选中文本内容保存于BACKUP中
10. 创建启动脚本vimrc
1. 开始编辑 vimrc 文件,具体命令取决于您所使用的操作系统:
:edit ~/.vimrc 这是 Unix 系统所使用的命令
:edit $VIM/_vimrc 这是 MS-Windows 系统所使用的命令
2. 接着读取 vimrc 示例文件的内容:
:r $VIMRUNTIME/vimrc_example.vim
3. 保存文件,命令为:
:write
下次您启动 Vim 时,编辑器就会有了语法高亮的功能。
您可以把您喜欢的各种设置添加到这个 vimrc 文件中。
要了解更多信息请输入 :help vimrc-intro
* 摘自vimtutor第七讲第二节
其他内容:
1. 输入 :help 或者按 <F1> 键或 <Help> 键可以打开帮助窗口。
2. 输入 :help cmd 可以找到关于 cmd 命令的帮助。
3. 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。
4. 输入 :q 以关闭帮助窗口
5. 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。
6. 当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。按 <TAB> 可以使用一个补全。
————————————————
版权声明:本文为CSDN博主「weixin_39943992」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39943992/article/details/111331234

vim设置

粘贴Python代码缩进就全乱?

最近使用Vim来写博客,发现在Vim中粘贴Python代码后,缩进就全乱了。仔细研究了以下,原来是自动缩进的缘故,于是做如下设置: 仔细研究了以下,原来是自动缩进的缘故,于是做如下设置: 

:set noai nosi

取消了自动缩进和智能缩进,这样粘贴就不会错行了。但在有的vim中不行,还是排版错乱。

后来发现了更好用的设置:

:set paste

进入paste模式以后,可以在插入模式下粘贴内容,不会有任何变形。这个真是灰常好用,情不自禁看了一下帮助,发现它做了这么多事:

  • textwidth设置为0
  • wrapmargin设置为0
  • set noai
  • set nosi
  • softtabstop设置为0
  • revins重置
  • ruler重置
  • showmatch重置
  • formatoptions使用空值

下面的选项值不变,但却被禁用:

  • lisp
  • indentexpr
  • cindent

怪不得之前只设置noai和nosi不行,原来与这么多因素有关!

但这样还是比较麻烦的,每次要粘贴的话,先set paste,然后粘贴,然后再set nopaste。有没有更方便的呢?你可能想到了,使用键盘映射呀,对。我们可以这样设置::

:map <F10> :set paste<CR>
:map <F11> :set nopaste<CR>

这样在粘贴前按F10键启动paste模式,粘贴后按F11取消paste模式即可。其实,paste有一个切换paste开关的选项,这就是pastetoggle。通过它可以绑定快捷键来激活/取消 paste模式。比如::

:set pastetoggle=<F11>

这样减少了一个快捷键的占用,使用起来也更方便一些。

但,这是最方便的吗?Vimer们对高效的追求永无止境。还有其他更好地方法吗?

你可能想到了,vim寄存器。对,使用vim寄存器 “+p 粘贴即可。根本不用考虑是否自动缩进,是否paste模式,直接原文传递!:

"+p

要说vim寄存器,就要从vim文件间的复制粘贴说起。

Vim中,若要复制当前行,普通模式下按 yy 即可,在要粘贴的地方按 p 。这是vim将复制内容保存到了自己的寄存器中的缘故。如果在其他地方执行yy,新的内容将覆盖掉原寄存器中内容。如果想保存原寄存器中内容而同时增加新的内容呢?这时就要在yy前增加标签了。标签以双引号开始,跟着的是标签名称,可以是数字0-9,也可以是26个字母,然后就是复制操作,这样就把复制内容保存到该标签寄存器里。通过下面命令显示所有寄存器内容::

:reg

其中注意两个特殊的寄存器:”* 和 “+。这两个寄存器是和系统相通的,前者关联系统选择缓冲区,后者关联系统剪切板。通过它们可以和其他程序进行数据交换。

备注:

若寄存器列表里无”* 或 “+ 寄存器,则可能是由于没有安装vim的图形界面所致。Debian/Ubuntu下可以通过安装vim-gnome解决。

$ sudo apt-get install vim-gnome

选择缓冲区和系统剪切板啥子区别?让我们继续研究。

选择缓冲区和剪切板

不同于Windows,Linux系统里存在两个剪切板:一个叫做选择缓冲区(X11 selection buffer),另一个才是剪切板(clipboard)。

选择缓冲区是实时的,当使用鼠标或键盘选择内容时,内容已经存在于选择缓冲区了,这或许就是选择缓冲区的由来吧。

使用下面的命令查看选择缓冲区的内容::

$ xclip -out

如果没有xclip命令,Debian/Ubuntu下可以通过如下命令安装::

$ sudo apt-get install xclip

可以使用鼠标中键或键入Shift+Insert来粘贴选择缓冲区的内容。但对于有些GUI程序,比如gedit,只能通过鼠标中键调用选择缓冲区的内容,使用Shift+Insert的话,调用的是剪切板的内容。

剪切板和Windows的剪切板类似,在选择文字内容后,执行Ctrl + c或在菜单里选择‘复制’的话,这时内容才存放到剪切板里。

使用下面的命令查看剪切板的内容::

$ xclip -out -sel clipboard

而使用剪切板的内容,则是Ctrl+v。 但在有些情况下,比如gnome-terminal,不能直接使用Ctrl+c,Ctrl+v,这时就要用Shift+Ctrl+c,Shift+Ctrl+v代替。

原格式粘贴

好了,了解了选择缓冲区和剪切板,下面就是实现保留格式粘贴的完美解决方案:

  • 方案一:
  1. 选择文本内容
  2. vim普通模式下按 “*p 将选择缓冲区中内容粘贴进来
  • 方案二:
  1. 复制文件内容
  2. vim普通模式下按 “+ p 将剪切板内容粘贴进来

这时,如果要复制的内容也是vim编辑器中的内容,那么如何复制才更方便呢?

vim中的复制

vim有一个可视模式(Visual Mode),在此模式下可以选择区域。可以在普通模式下键入v进入可视模式,也可以个性化一点,键入V进入行可视模式,或者键入Ctrl+v进入列可视模式。这时移动光标就可以选择内容了。注意这时被选内容已经实时保存于选择缓冲区了,当然你也可以键入”+y将此内容也保存到剪切板里,或者”ay将内容保存到标签为a的寄存器中。但要知道,只有前两个中的内容可以在其他程序中使用,而a寄存器中的内容只能在该vim编辑器内使用。

也可以通过鼠标来复制。这里首先要打开鼠标模式。:

:set mouse=a

这样在普通模式下可以直接使用鼠标选择区域复制到选择缓冲区。但这种情况下不能复制到剪切板。

若要使用鼠标复制内容到剪切板,则需要做如下设置::

:set mouse=v

这种情况下,除了可以像上面一样直接使用鼠标选择区域复制到选择缓冲区以外,还可以在右键菜单中选择“复制”来保存到剪切板里。但新问题又出来了。若显示行号,也会将行号一并选择。你会想到,这好办呀,如果不需要行号的话,在复制前,先执行set nonu来取消行号显示呗。

其实没必要这样,如果不需要复制行号的话,用在可视模式下用键盘来选择不就可以吗?

并且,从上面的讨论,我们不难得出,使用选择缓冲区比使用剪切板要方便的多,可以节省很多步骤。

所以,最终我们得到了vim文件间复制粘贴的完美方案,文件传输的中转使用选择缓冲区。

vim文件间复制粘贴完美方案

  1. 在~/.vimrc中增加如下一行::

    set mouse=v
  2. 复制内容到选择缓冲区。

    • 带行号时,使用鼠标选择内容区域。
    • 不要行号,使用 “*yny 复制n行或可视模式下选择。
  3. 将选择缓冲区中内容粘贴到vim文件:普通模式下按 “*p 。


补充:

设置vim中默认使用选择缓冲区寄存器 “*:

set clipboard = unnamed

则可以直接通过y,p和系统选择缓冲区进行数据交换。

(原文地址: http://blog.ossxp.com/2010/12/2190/)

vim命令详解_vim命令详解

今天的文章vim命令详解_vim命令详解分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/77252.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注