Vim
Contents
💠
💠 2024-09-28 11:21:46
Vim
学习曲线很高,但是学会熟练使用后就效率很高
官方教程程序 vimtutor
bytefluent.com/vivify
方便的自制主题
Tips
-
误按
Ctrl S终止屏幕输出(即停止回显)你敲的依然有效,只是看不见Ctrl Q即可恢复 -
/usr/share/vim/vim80/macros/less.shvim 版 less- 具备语法高亮 路径中间是依据vim版本来的, 按实际情况改动
-
设置默认编辑器
export EDITOR=/usr/bin/vim -
vim 会导致文件 inode 变更 why inode value changes when we edit in “vi” editor?
-
命令模式输入
:%!xxd就可以16进制方式查看和编辑二进制文件了 注意最左行号和最右的预览内容不能修改:%!xxd -r回到 ascii模式
-
:set fenc=utf8 nobomb ff=unix设置文件无BOM U8格式
配置文件优先级
- 系统 vimrc 文件:
$VIM/vimrc - 用户 vimrc 文件:
$HOME/.vimrc - 第二用户 vimrc 文件:
~/.vim/vimrc - 用户 exrc 文件:
$HOME/.exrc - defaults file:
$VIMRUNTIME/defaults.vim - $VIM 预设值:
/usr/share/vim
基本配置
- 全局修改 :
/etc/vim/vimrc - 或者配置放在
/etc/vim/vimrc.local- 然后在
/etc/vim/vimrc中添加:
1 2 3if filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.local endif - 然后在
- 或者当前用户:
~/.vimrc个人vim配置
GVim
~/.gvimrc
|
|
基础操作
- v 可视化操作
跳转
-
K J H L 上下左右
-
Ctrl+F 上翻一页
-
Ctrl+B 下翻一页
-
H M L 跳转到屏幕 顶 中 尾
- 2H 第二行 3L 倒数第三行
-
*当光标在某单词上 会进行搜索跳转到下一个 -
#与*一样,不过是跳转到上一个 -
/)和/(跳转到 后和前 语句的位置 为了() 跳转方便 -
/}和/{跳转到 后和前 段落的位置 -
g_跳转到最后一个不是空格的字符的位置 -
gg跳转到文件第一行的起始位置 -
G跳转到文件最后一行起始位置 -
5gg或5G:5跳转到 5 行的起始位置 -
number正数则是往下,负数则是往上 (相对)
行内移动
w右移到下一个字的开头e右移到下一个字的末尾b左移到前一个字的开头0左移光标到本行的开始$右移光标到行末尾^移动到本行第一个非空字符
fg 在光标所在处(如果是有效的目录或者文件,就能直接跳转过去)
高级跳转
- fg 如果光标所在处是一个完整的路径,就跳转到该文件
Ctrl Shift 6或者:e#跳回来 | 参考 stackoverflow
搜索和替换
/name正向搜索字符串 namen搜索后跳下一个N搜索后跳上一个
?name反向搜索字符串
替换
:[range]s/pattern/string/[c,e,g,i]
| 参数 | 含义 |
|---|---|
| range | 指的是范围 1,5 指的是1-5行; 1,$或是1,% 则是第一行到最后一行; .,5当期行到第5行 |
| pattern | 就是要被替换掉的字串,可以用 regexp 來表示。 |
| string | 匹配到 pattern 的字符串替换为 string |
| c | confirm,每次替换前先询问 |
| e | 不显示error |
| g | global 全局 |
| i | ignore 不分大小写。 |
% 是目前編輯的文章,# 是前一次編輯的文章, . 表示当前行
复制粘贴
:reg查看寄存器
yy复制当前行nyy是复制该行开始的共n行(是vim内的剪贴板)yn加换行 等效
"+nyy同理复制n行,操作系统级的剪贴板"+yn等效
- vim 中粘贴内容时被自动缩进, 导致大量空格
- 先执行
:set paste命令,然后粘贴 - 关闭 paste 模式
:set nopaste
- 先执行
P/p将剪贴板的内容粘贴在 前/后"+p将系统的剪贴板内容粘贴进来
u撤销上一条命令的效果.重复最后一条修改正文的命令
插入模式
- i 在光标左侧插入
- a 在光标右侧插入
- o 在光标该行下一行新增一行
- O 在光标该行上一行新增一行
- I 在光标该行开头插入
- A 在光标该行末尾插入
命令模式
:e path打开指定路径下文件:w保存当前编辑的文件 后接文件名就是另存为ZZ退出Vim 并将所做修改覆盖原始文件:q未修改的情况下退出:q!放弃所有修改,退出wqx先保存后退出
先 q 再 : 就会显示最近的命令
插件管理
语言插件
- vim-python
- vim-go
定制化
vim-init
spf13
SpaceVim
参考: SpaceVim 中文手册
主要看评论, 两个作者理念不同参考: 如何评价Vim配置文件SpaceVim?
space-vim
Author Kuangcp
LastMod 2018-12-15