Thanks to visit codestin.com
Credit goes to github.com

Skip to content

常用的Vim操作 #55

@itgoyo

Description

@itgoyo

文件保存

命名文件并且保存到相应的位置中
saveas documents/demo.txt
这样即可以保存文件名为demo文件类型为txt的文件到documents

批量操作

:%normal A;
%代表整个文件范围,在每行的结尾添加一个分号。
:%normal i//
在每行的开头添加//
在执行指定的普通模式命令之前,vim 会先把光标移动到该行的起始处。

vim 处理换行符

  1. 设置文件格式

:set fileformats=unix,dos

  1. 查询当前文件格式

:set fileformat?

  1. 转换文件格式

:set fileformat=dos

  1. 设置文件结束符

:set endofline

  1. 去掉文件结束符

:set noendofline

  1. 显示换行

:set list

  1. 退出list mode

:set nolist

  1. 删除换行符

:%s/\n//g

  1. 删除dos文件的回车符^M

:%s/\r//g

批量替换

2.2.1 开启多进程模式 / 36
2.2.2 多进程模式的运行机制 / 39

使用:%s# / .*##gc来实现批量替换最好再选择a全部替换

2.2.1 开启多进程模式
2.2.2 多进程模式的运行机制

% normal A;
在全部的行尾加上;

文件撤销与反撤销

u为文件撤销
ctrl+r为文件反撤销
<C-r>=30*5
在insert模式下面进行运算
<C-r>0
粘贴寄存器里面的内容

可视模式

o来切换可视的端点

100i-
重复操作,---------....

Vim复制粘贴配置

nmap "+y
nmap "+gp

光标移动

操作 含义
j 向下移动一个实际行
gj 向下移动一个屏幕行
k 向上移动一个实际行
gk 向上移动一个屏幕行
0 移动到实际行的行首
g0 移动到屏幕行的行首
^ 移动到实际行的第一个非空白字符
g^ 移动到屏幕行的第一个非空白字符
$ 移动到实际行的行尾
g$ 移动到屏幕行的行尾

文本修改

操作 含义
iw 当前单词
aw 当前单词及一个空格
iW 当前字串
aW 当前字串及一个空格
is 当前句子
as 当前句子及一个空格
ip 当前段落
ap 当前段落及一个空行

ciw 命令只删除该单词,而不删除其前后的空白字符,随后它会进入插入模式,
这刚好是我们想要的效果。如果用的是 caw 的话,那最后两个单词就会连在一起,变
成“mostadjectives”。虽然这很容易修正,但如果一开始就能避免此问题,那岂不是更
好么。

宏录制

详看技巧70

查找命令

/text  查找text,按n健查找下一个,按N健查找前一个。
?text  查找text,反向查找,按n健查找下一个,按N健查找前一个。vim中有一些特殊字符在查找时需要转义  .[]^%/?~$
:set ignorecase  忽略大小写的查找
:set noignorecase  不忽略大小写的查找查找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按
或#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。
:set hlsearch  高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。
:set nohlsearch  关闭高亮搜索显示
:nohlsearch  关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
:set incsearch  逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan  重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。

替换命令

ra 将当前字符替换为a,当期字符即光标所在字符。
s/old/new/ 用old替换new,替换当前行的第一个匹配
s/old/new/g 用old替换new,替换当前行的所有匹配
%s/old/new/ 用old替换new,替换所有行的第一个匹配
%s/old/new/g 用old替换new,替换整个文件的所有匹配
:10,20 s/^/ /g 在第10行知第20行每行前面加四个空格,用于缩进。ddp 交换光标所在行和其下紧邻的一行


C、C++操作

:! g++ demo.cpp
:! ./a.out

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions