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的区别是黏贴内容的区域是所选择光标的前面还是后面一列。
命令/操作 | 说明 |
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查询帮助 |
命令/操作 | 说明 |
: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 | 展开所有折叠嵌套 |
: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 + 【功能键】
可以产生不可显字符。