杨阳的不落阁

猛兽总是独行,牛羊才成群结队

  menu
34 文章
6 评论
19882 浏览
4 当前访客
ღゝ◡╹)ノ❤️

Vim常用快捷键大全

1. 安装

sudo apt-get install vim
或者
yum install -y vim-enhanced

2. 具体使用技巧如下

  • 打开文件:
命令/操作说明
vim + filename打开文件并定位到最后一行
vim +5 filename打开文件并定位到第5行
:edit /path/to/file在vim中打开文件(支持Tab补全)
  • 移动光标:
命令/操作说明
j向下移动一个实际行
gj向下移动一个屏幕行
k向上移动一个实际行
gk向上移动一个屏幕行
0移动到实际行的行首
g0移动到屏幕行的行首
^移动到实际行的第一个非空白字符
g^移动到屏幕行的第一个非空白字符
移动到实际行的行尾
g$移动到屏幕行的行尾
f+查找下一个+(;下一个,上一个)
w正向移动到下一单词的开头
b反向移动到当前单词/上一单词的开头
e正向移动到当前单词/下一单词的结尾
ge反向移动到上一单词的结尾
0移动到行首
$当前行的末尾
gg/1G文件第一行
G文件最后一行
:7定位到第7行
行号+G指定行
ctrl + o跳转回之前的位置
ctrl + i返回跳转之前的位置
ctrl + U上翻页
ctrl + D下翻页
  • 退出:
命令/操作说明
ESC进入正常模式
:q!不保存退出
:wq保存后退出
:w仅保存
:saveas file将文件另存为file,但不退出
ZZ保存后退出
ZQ不保存退出,Q表示放弃
  • 删除:
命令/操作说明
x删除光标处的字符
dw删除光标之后单词的剩余部分(含光标处字符)
cw同上,但最后进入插入模式
daw删除光标所在处的一个单词
caw同上,但最后进入插入模式
d$删除至当前行尾
dd删除整行
2dd删除两行
ggdG删除所有内容
:%d清空文档(%表示所有行)
  • 修改:
命令/操作说明
i左边插入文本
a有变插入文本
A当前行末尾添加
r替换当前字符(rc,将光标处字符替换为c)
R进入替换REPLACE模式,可以连续完成替换
o打开新的一行并进入插入模式
Ctrl + a数字加一
Ctrl + x数字减一
vit可视模式下高亮选中标签内部的内容(visually select inside the tag):U变大写/u变小写
  • 列操作:

~ 删除列

1) 光标定位到要操作的地方。
2) CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3) d或x 删除。

~ 插入列

插入操作稍有区别。例如我们在每一行前都插入"() ":
1) 光标定位到要操作的地方。
2) CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3) SHIFT+i 输入要插入的内容。
4) ESC 按两次,会在每行的选定的区域出现插入的内容。
  • 复制功能:
1) CTRL+v,进入列块模式,选中需要复制的内容。
2) “y” 复制内容,4line yanked 说明复制了四行。
3) 然后移动光标到行首,“p”在光标的后面一列输出内容,按“P”在光标前面一列输出内容。
4) 大小p的区别是黏贴内容的区域是所选择光标的前面还是后面一列。
  • 撤销:
命令/操作说明
uundo
ctrl +rredo
.重复上一次操作
  • 复制粘贴剪切:
命令/操作说明
v进入可视模式(字符)
V进入可视模式(行)
y复制
p/P粘贴
yy复制当前行
dd剪切当前行
yG复制当前行直到最后一行
  • 状态:
命令/操作说明
ctrl + g显示当前行以及文件信息
  • 查找:
命令/操作说明
/正向查找(n:继续查找,N:相反方向继续查找,/\c忽略大小写。注意,不使用/\v时,必须转义 (、 )、│ 、+、?、{、} 字符
?逆向查找(?\c忽略大小写)
%查找配对的 {,[,(
*高亮显示光标处单词在文件中的所有匹配(n下一个匹配,N上一个匹配)
:set ic忽略大小写
:set noic取消忽略大小写
:set hls匹配项高亮显示
:set nohl取消搜索关键字的高亮(或者:noh)
:set is显示部分匹配
:set nu显示行号
:set nonu取消行号的显示
:set list显示不可视字符
:set nolist取消显示不可视字符
:set background=dark设置深色背景
:set background=light设置亮色背景
:set all查看vim的全部设置
:h magic通过关键字magic查询帮助
  • 替换:
命令/操作说明
:s/old/new替换该行第一个匹配串
:s/old/new/g替换全行的匹配串
:%s/old/new/g替换整个文件的匹配串(%表示所有行g表示所有列。注:\r是回车换行)
:%s/old/new/gci(选项:g global; i ignorecase; c confirmation; 次序无要求)
  • 折叠:
命令/操作说明
zc折叠
zC折叠所有嵌套
zo展开折叠
zO展开所有折叠嵌套
  • 解决在vim中粘贴代码时缩进混乱问题:
:set paste
粘贴
:set nopaste
快捷键设置vim ~/.vimrc
set pastetoggle=<F12>
  • 执行外部命令(文本处理):
命令/操作说明
:!cmd执行外部命令
:.!datevim中当前光标位置插入命令date的输出结果
:r!datevim中当前光标的下一行插入date的结果
:!python3 %(%在命令模式中指当前文件名)
:shell开启一个bash shell
:2,$!sort -t, -k2nr把csv文件内容从第二行到最后一行按第二列进行排序,且以,分割字段(-k2nr中n是数字排序,默认字符序,r是倒序)
:1,$!cut -d, -f 2 │ sort -u把csv文件中的第二列取出,排序,去重(1指第一行,$指最后一行,.指当前行)
:1,$!sort -t, -k2 -u把csv文件中的第二列排序并依据第二列的内容去重,行保留完整列(!G给出:.,$!)
:.,$!sort -t. -k1n,1 -k2n,2 -k3n,3 -k4n,4 -u从当前行到最后一行对IPv4地址排序并去重
:1,$!cut -d. -f4 -s从第一行到最后一行,以.为字段分割符,投影第4列,且不输出不包含分隔符的行
:1,$!sed -n 'n;p'输出偶数行
:1,$!sed -n 'p;n'输出奇数行
:1,$!awk '1; { print "" }'两行间插入一个空行
注:
awk 'NR%2==0{print a"="$0}{a=$0}' test6.txt  让“奇数行=偶数行”
    seq 10 产生1~10的序列(每行)
paste test7.txt test8.txt | tr "\t" "\n"  将两个文件的所有行交错合并(paste为coreutils软件包,用于文件的列合并)
  • 多窗口的切换:
命令/操作说明
〈C-w〉w在窗口间循环切换
〈C-w〉h切换到左边的窗口
〈C-w〉j切换到下边的窗口
〈C-w〉k切换到上边的窗口
〈C-w〉l切换到右边的窗口
:q关闭当前窗口
:close关闭当前窗口,但不能关闭最后一个窗口
  • 标签页:
命令/操作说明
:tabedit test.csv打开文件到一个标签页
gt切换到下一标签页
gT切换到上一标签页
:close关闭当前标签页
  • 显示当前目录:
命令/操作说明
:pwd显示当前路径
:e.打开当前目录
  • Tab设置
    在~/.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:
set ts=4
set expandtab

对于已经保存的文件,将Tab替换为空格,执行如下命令:

:set ts=4
:set expandtab
:%retab!

加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB。

  • 显示当前行的不可显字符
:l

在命令显示区将显示当前行的所有不可显字符。
在插入模式下“-- INSERT --”
Ctrl + v + 【功能键】
可以产生不可显字符。


标题:Vim常用快捷键大全
作者:Funnyrz
地址:http://zxacn.com/articles/2019/08/23/1566553844199.html

评论