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 删除光标处的字符
nx 删除光标所在处后的n个字符
dw 删除光标之后单词的剩余部分(含光标处字符)
cw 同上,但最后进入插入模式
daw 删除光标所在处的一个单词
caw 同上,但最后进入插入模式
d$ 删除至当前行尾
dd 删除整行
dG 删除光标所在行到末尾行的所有内容
D 删除光标所在处到行尾的内容
: 5,7d 删除第5到第7行
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的区别是黏贴内容的区域是所选择光标的前面还是后面一列。
  • 撤销:
命令/操作 说明
u undo
ctrl +r redo
. 重复上一次操作
  • 复制粘贴剪切:
命令/操作 说明
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查询帮助

注意:在查找命令" / "和“ ? ”后边可以使用如下记号实现整字匹配的查找。

/\<word\>
或者
?\<word\>
  • 替换:
命令/操作 说明
😒/old/new 替换该行第一个匹配串
😒/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 执行外部命令
:.!date vim中当前光标位置插入命令date的输出结果
:r!date vim中当前光标的下一行插入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 + 【功能键】
可以产生不可显字符。

  • 文件加密
    必须在新建文件的时候就进行密码设置,加密才起效。

查询加密方式

:help 'cm'

设置加密方法

:setlocal cm=blowfish2

设置密码

:X

在命令行中打开文件并设置密码

$ vim -x file.txt
posted @ 2019-06-27 00:52  cerana  阅读(780)  评论(0编辑  收藏  举报