Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。而 Windows ❤️ Linux
的态度转变相信大家会经常使用到 Vim 文本编辑器,关于 Vim 的文章网上已经很多了本文只记录自己常用的作为备忘录,然而熟练掌握的方法始终只有一个字用
。
Vim 从小白到入门
2019 年 09 月 06 日 - 初稿
阅读原文 - https://wsgzao.github.io/post/vim/
扩展阅读
Vim 英文文档 - http://vimdoc.sourceforge.net/htmldoc/
Vim 中文文档 - http://vimcdoc.sourceforge.net/doc/
完成以下练习恭喜你打开 Vim 的大门
你可以访问Vim 在线练习模拟器,通过引导熟悉 Vim
①. 正常模式 (Normal Mode) 正常模式主要用来浏览和修改文本内容的
一般的,打开 Vim 都是正常模式。在任何模式下,只要按下 Esc 键就可以返回正常模式。
②. 插入模式 (Insert Mode) 插入模式则用来向文本中添加内容的,我自己常用的是 i 和 o
i 在光标所在字符前开始输入文字并进入插入模式
o (字母 o) 在光标所在行的下面单独开一新行来输入文字并进入插入模式
③. 可视模式 (Visual Mode) 可视模式相当于高亮选取文本后的普通模式。
可视模式具有子模式,以行为单位进行选取的可视行模式,使用 “V” 键进入(也就是 Shift+v );和以块为单位进行选取的可视块模式,使用 “Ctrl+v” 键进入。
④. 命令模式 (Command Mode) 命令模式则多用于操作文本文件(而不是操作文本文件的内容),例如保存文件;或者用来改变编辑器本身的状态,例如设定多栏窗口、标签或者退出编辑器
通过运行vim -V
可查看整个初始化过程
Vim 的全局配置一般在/etc/vimrc
,对所有用户生效
用户个人的配置在~/.vimrc
,你可以把自己喜欢的配置比如:set number
显示行号添加进去
vim ~/.vimrc
" Configuration file for vim
set modelines=0 " CVE-2007-2438
" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible " Use Vim defaults instead of 100% vi compatibility
set backspace=2 " more powerful backspacing
" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup nobackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup nobackup
let skip_defaults_vim=1
set ai " auto indenting
set ruler " show the cursor position
set hlsearch " highlight the last searched term
set history=1000 " keep 1000 lines of history
syntax on " syntax highlighting
filetype plugin on " use the file type plugins
以下为 Vim 相对高频的命令,在日常使用中善用组合方法,记住核心的几种命令即可
| 命令 | 作用(解释) |
| --- | --- |
| h,j,k,l
| h
表示往左,j
表示往下,k
表示往右,l
表示往上 |
| Ctrl
+ f
| 上一页 |
| Ctrl
+ b
| 下一页 |
| w
, e
, W
, E
| 跳到单词的后面,小写包括标点 |
| b
, B
| 以单词为单位往前跳动光标,小写包含标点 |
| o
| 开启新的一行 |
| ^
| 一行的开始 |
| $
| 一行的结尾 |
| gg
| 文档的第一行 |
| [N]G
| 文档的第 N 行或者最后一行 |
| dd
| 删除一行 |
| dw
| 删除一个单词 |
| x
| 删除后一个字符 |
| X
| 删除前一个字符 |
| D
| 删除一行最后一个字符 |
| [N]yy
| 复制一行或者 N 行 |
| yw
| 复制一个单词 |
| p
| 粘贴 |
| u
| 撤销上一步操作 |
| ctrl
+ r
| 恢复上一步操作 |
| .
| 重复最后一个命令 |
| /pattern
| 向光标下搜索字符串,可以是正则表达式|
| ?pattern
| 向光标上搜索字符串 |
| n
| 向下搜索前一个搜素动作 |
| N
| 向上搜索前一个搜索动作 |
| 命令 | 作用(解释) |
| --- | --- |
| i
| 插入到光标前面 |
| I
| 插入到行的开始位置 |
| a
| 插入到光标的后面 |
| A
| 插入到行的最后位置 |
| o
, O
| 新开一行 |
| Esc
| 关闭插入模式 |
| 命令 | 作用(解释) |
| --- | --- |
| v
| 选中一个或多个字符 |
| V
| 选中行 |
| ctrl
+ v
| 选中列 |
| 命令 | 作用(解释) |
| --- | --- |
| :set nu
| 显示行号 |
| :set nonu
| 取消显示行号 |
| :set paste
| 设置粘贴模式 |
| :%s/old/new/g
| 全文替换 |
| :w
| 保存 |
| :wq
, :x
| 保存并关闭 |
| :q
| 关闭(已保存) |
| :q!
| 强制关闭 |
| :split
| 水平方向分割出一个窗口 |
| :vsplit
| 垂直方向分割出一个窗口 |
| :close
| 关闭窗口 |
| Ctrl
+ W
| 切换窗口, h
到左边窗口,j
到下方窗口,k
到上方窗口,l
到右边窗口 |
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.