Linux基础——vim 简单使用
Vim是一种编程语言,有多种模式,按键在不同模式下有不同的功能,默认模式是normal模式,其他模式可以通过esc 键退回到normal模式
与vi 的区别:vi是Unix操作系统和类Unix操作系统中最通用的文本编辑器,而vim 是从vi发展来的更强大的文本编辑器,可以主动的以字体颜色辨别语法的正确性,方便程序设计,与vi完全兼容
- Normal:正常模式,默认方式
- Insert: 编辑模式 按i,a,o进入
- Replace: 替换文本,按r进入
- Visual (plain, line, or block): 选取文本,按v, shift+v, ctrl+v分别进入
- Command-line: 命令模式,按:进入
1, 插入模式
insert模式下相当于文本编辑器,插入到当前光标之前

2. buffers,tabs, windows
Vim维护一组打开的文件,称为“缓冲区” buffers。Vim会话有许多选项卡,每个选项卡有许多窗口(分割窗格)windows。每个窗口显示一个单独的缓冲区。不像你熟悉的其他程序,比如网页浏览器,缓冲区和窗口之间不是一对一的对应关系;窗口仅仅是视图。给定的缓冲区可以在多个窗口中打开,甚至在同一个选项卡tabs中。默认情况下,Vim以一个选项卡打开,其中包含一个窗口。
3. 命令模式
包括打开,保存,关闭文件和退出vim
:qquit (close window),! 强制操作:wsave (“write”):wqsave and quit:e {name of file}open file for editing:lsshow open buffers:help {topic}open help:help :wopens help for the:wcommand:help wopens help for thewmovement
- :set nu 显示行号, nonu 不显示行号,或者用!反转
- :s/要替换的词/替换后的词 :只有当前光标所在的行的第一个匹配到的词进行替换 加上/g 可进行当前行的全局匹配替换
- :%s/要替换的词/替换后的词 :全局每行第一个替换, 加上/g 可进行全局匹配替换

4. normal movements
大部分时间用于正常模式,使用移动命令来导航缓冲区。Vim中的movements也被称为“nouns”,因为它们指的是文本块
- 上下左右移动:
hjkl(左, 下, 上, 右) - 单词操作:
w(下一个单词),b(单词开头),e(单词结尾) - 行:
0(行开头), ^(该行首个非空字符),$(行尾) - 屏幕:
H(屏幕开头),M(屏幕中间),L(屏幕底部) - 翻页滚动:
Ctrl-u(上),Ctrl-d(下) - 整个文件:
gg(文件开头),G(文件结尾) - 多行:
:{number}<CR>or{number}G(line {number}) 如3G 跳转到第三行 - Misc:
%(匹配项) - Find:
f{character},t{character},F{character},T{character}- 定位到当前行匹配的字符前/后
,/;向下/向上匹配
- 查找:
/{regex},n/N进行匹配项的向下/上查找 d{motion}删除- e.g.
dwis 删除单词,d$is 删除当前字符到行尾的内容,d0is 删除当前字符到行开头的内容
- e.g.
- c{motion} 替换
- e.g.
cwis change word - like
d{motion}followed byi
- e.g.
x剪切一个字符(当前光标)相当于del- X 剪切一个字符(当前光标的前一个),相当于backspace
s替换字符 (equal tocl)- Visual mode + 操作
- 选取文本,
dto delete it orcto change it
- 选取文本,
u撤销,<Ctrl-r>to 重复y复制p粘贴- 其他: e.g.
~翻转大小写
5. visual modes
- Visual:
v - Visual Line:
V - Visual Block:
Ctrl-v
使用移动方向进行文本的选取
6. 批量操作
使用数字来重复操作
3wmove 3 words forward5jmove 5 lines down7dwdelete 7 words
8. modifiers
ci(更改当前括号内的内容ci[更改当前方括号内的内容da'删除单引号字符串,包括周围的单引号
9.多窗口操作
:sp/:vspto split windows- Can have multiple views of the same buffer.
10 . 宏操作
q{character}在寄存器{character}中记录宏q停止记录@{character} 复制宏- Macro 遇到错误会终止
{number}@{character}多次执行宏操作- 递归宏
- first clear the macro with
q{character}q - record the macro, with
@{character}to invoke the macro recursively (will be a no-op until recording is complete)
- first clear the macro with
其他操作百度、谷歌
配置 Vim 有更加深入的了解,Learn Vim Script the Hard Way 是一个很好的资源。

浙公网安备 33010602011771号