vim实践
安装
版本
- vim
- vim-gtk (KDE)
- vim-gtk3 (GNOME)
- vim-tiny (最小功能)
查看安装的 vim 版本
apt list --installed | grep vim
yum list installed | grep vim
安装带图形界面的版本
macOS MacVim
Ubuntu
sudo apt install vim-gtk3
运行
vim -g
gvim
查看可用插件
vim --version- 打开 vim,输入命令
:version
四种模式
- 正常模式
- 插入模式
- 进入方式
i光标当前位置进入Shift+i光标所在行的开头位置进入a光标当前位置下一个字符进入Shift+a光标所在行的行尾位置进入o光标所在行下插入空行Shift+o光标所在行上插入空行
- 退出
- 按esc键
- 进入方式
- 命令模式
- 进入方式
:设置命令/向下搜索?向上搜索
- 退出
- 按两次esc键
- 进入方式
- 可视模式
- 进入方式
v字符Shift+v行Ctrl+v块
- 操作
d删除选择y复制Shift+i块插入 (输入插入字符后,按两次esc键。)
- 退出
- 按两次esc键
- 进入方式
文件
:q没有修改直接退出:q!放弃修改退出:w保存:wq保存退出:wq filename保存退出
-
ZZ保存退出 :!command运行shell命令:!ls -l查看当前目录列表:!ifconfig查看本地IP地址
多文件
- 浏览(explore)当前目录
:E:e .
- 从当前文件返回目录
:e#Ctrl+^
:e filename浏览文件filename:ls列出当前打开过的文件,浏览过的文件都会放在缓存中。:bd缓存(buffer)删除(delete),删除之前打开过的文件列表。:bn打开缓存ID对应的文件。:b1:b2
Ctrl+o切换上一次打开的文件。
编辑
u撤消(Undo)-
Ctrl+r恢复(Redo) - 选择
v进入字符可视w选择下一个单词0选择到行首$选择到行尾
c剪切选择的字符d删除选择的字符x删除选择的字符ggVG选择所有的字符
- 复制
y复制选择的字符:%y复制所有的字符- 当前行
dd剪切当前行3dd剪切3行
y$复制当前字符到行尾:y复制当前行yy复制当前行3yy复制3行
- 剪切板(用于应用之间的交换)
:y+复制光标所在行(也可以先使用块的方式进行选择再复制):%y+复制所有数据
-
p粘贴 - 删除
x删除当前字符:1,$d删除所有行(1第一行开始,$直到文件末尾,d删除)dw删除光标所在字符到单词的末尾diw删除光标所在的整个单词d0删除光标所在字符到行首d$删除光标所在字符到行尾dG删除光标所在行到文件末尾
导航
- 字符
h光标左移j光标下移k光标上移l光标右移
- 单词
w移至下一个单词的开头b向后移到上一个单词的开头
- 当前行
0移至当前行的开头^移至当前行的开头$移至当前行的末尾
- 行
gg移至文件的第一行1G移至文件的第一行100G移至文件的第100行
G移至文件的最后一行
- 屏幕
Ctrl+f向前(forward)翻一屏Ctrl+b向后(backward)翻一屏H移至屏幕的第一行M移至画面中间(middle)L移至屏幕的最后一行
搜索
/word向前(下)搜索n下一个(next)Shift+n上一个
?word向后(上)搜索n上一个Shift+n下一个
:%s/search_word/replace_word/g替换(全文):1,$s/search_word/replace_word/g替换(全文):3,4s/search_word/replace_word/g替换(3-4行)
:%s/search_word//g删除(全文):1,$s/search_word//g删除(全文):3,4s/search_word//g删除(3-4行)
设置
配置文件
/etc/vimrc
~/.vimrc
显示 | 隐藏行号
:set nu
:set number
:set nonu
:set nonumber
会用空格替换 Tab
set ts=4
set expandtab
set autoindent
换行 | 不换行
:set wrap
:set nowrap
搜索高亮显示 | 不高亮显示
:set hlsearch
:set nohlsearch
搜索时忽略大小写敏感 | 大小写敏感 (默认:大小写敏感)
:set ic
:set ignorecase
:set noic
:set noignorecase
设置为二进制
:set binary
不可显示字符显示为 16 进制
--1234567890^M
^M 是 CR(回车符)
:set display=uhex
现在 ^M 显示为 <0d>
--1234567890<0d>
还原为原显示格式
:set display=
其它
二进制打开文件
vim -b file.txt
比较两个文件的内容
vim -d file1 file2
vimdiff file1 file2
转换为 16 进制编辑器
:%!xxd
还原为原显示
:%!xxd -r
命令解读 : enters command-line mode, % matches whole file as a range, ! filters that range through an external command, xxd is that external shell command
参考资料
- 20+ vi and vim editor tutorials
- VIM and Python – A Match Made in Heaven
- Vim: How to insert in visual block mode?
- Deleting Words in Vim
- How to select/delete until end of file in vim/gvim?
- How to switch to the directory listing from file view in vim?
- Linux vi/vim多标签和多窗口, Tab页浏览目录, 多Tab页编辑
- Opening and Switching Between Multiple Files and Windows in VI
- How to Vim Save/Vim Exit/Quit in Editor?
- How To “Select All” In Vim/Vi?
- How to copy all the text from vim editor using vim command line?
- vim回车和换行
- Use vim to search by hex code
- How can I use Vim as a hex editor?
- Basic Vim Commands Every Linux User Must Know