贡献者: addis
vi 就是 vim, 打开的都是 vim 程序.
vimtutor 进入基础教程
ctrl+u 向上翻半页,ctrl+d 向下翻半页,ctrl+b 上一页,ctrl+f 下一页
:w 保存,:wq 保存并退出,:w /<path>/<file> 另存.
u, 重做: Ctrl+r
dd 剪切一行,p 粘贴。
G 可以跳到文档最后,gg 可以跳到文件开始
y (yank), 剪切: d (delete)
Ctrl+D 可以查看所有候选的补全
hjkl 按键可以上下左右移动,不需要方向键(好远)
w 可以跳到下一个单词,比 l 要快
b 跳到上一个单词,比 h 要快
e 跳到下个单词末尾
0 使光标跳到行首
^ 跳到第一个不为空格/tab 的字母
$ 跳到行末
ctrl+e 将窗口向下移动一行,ctrl+y 向上移动一行
ctrl+] 可以进入一个 tag,相当于点击链接,用 ctrl+o 返回
123G 跳到第 123 行
:<number> 也可以直接跳到指定的行
$ 跳到行末
A 跳到行末并编辑
`` 可以让光标回到上一个位置, '' 让光标回到上一个位置的行首。连续按多次将在两个位置间跳转
" insert mode 快捷键
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
" command mode 快捷键
cnoremap <C-h> <Left>
cnoremap <C-j> <Down>
cnoremap <C-k> <Up>
cnoremap <C-l> <Right>
z+回车 用于将当前行移动到屏幕顶部,zz 移动到中间
H 让光标跳到屏幕第一行行首,L 跳到最后一行行首,M 跳到中间
( 和 ) 把光标移动到上一句或者下一句。下一句。下一句。下一句。
{ 和 } 把光标移动到上一段或者下一段
i 直接编辑
x 键删除光标处的字符
dw 可以删除当前字符到单词 d 开启 delete 模式,w 跳到下一个单词行首
d$ 可以删除当前字符到行末
dw, d$ 这样的操作叫做 operator + motion
100w,d3w(删除三个字)
dd 删除一行,3dd 删除三行
ctrl+U 可以删除光标左边的内容
f 加一个字符可以跳到同一行内下一个出现该字符的位置(话说为什么不直接用 /)
set mouse=a 可以使用鼠标!
:help 内容 可以进入帮助页面
esc 进入 normal mode
u 撤销, ctrl+R 重做,10u 撤销 10 次。注意每次撤销一个命令,一次插入很多单词也算一个命令,10x 也算一个命令
U 用于撤销改行的所有修改
p(put)用于把 dd 删除的行插入到光标下方,可以多次粘贴,可以 5p
r(replace)可以替换光标处的单个字符,例如 ra 替换为 a,3ra 连续三个字符替换为 a
c(change)相当于 d 再 a
ctrl+G 查看当前的位置和文件状态
% 可以找到对应的另一半括号 (), [],
v, 选择行: V, 选择块: ctrl+v.
v 粘贴(光标右侧): p, 粘贴(光标左侧): P
dd (事实上是剪切!)
V 或, 粘贴(光标下一行下移): p, 粘贴(光标所在行下移): P
ggVG 即可
/, 用 \/ 即可,可能的转义的字符都用 \ 试试就行
/ *<string>* 会向下搜索文档中所有包含 string 的位置, 如果再按 n, 会搜索下一处.
/pattern,向上搜索 ?pattern,下一个 n,上一个 N.
:noh 可以取消搜索匹配的高亮(如果有设置)
q/ 可以打开新窗口编辑搜索历史,用回车执行,按两次 ctrl+c 关闭
/搜索词\c,区分大小写 /搜索词\C
:set ignorecase,不设置则默认区分。
* 可以搜索当前光标下的单词
esc 返回 Normal mode
q: 打开一个窗口编辑历史命令,用回车执行,按两次 ctrl+c 关闭
命令模式下,ctrl+r 快捷键可以插入许多内容。ctrl+r % 可以插入当前文件名(含相对目录)
:help usr_08.txt
:split 将当前窗口复制一份,选中上方窗口
:10split 指定新增窗口行数
:split [file] 在新窗口打开文件
:only 关闭其他所有窗口
:new 创建新文件,在新窗口打开
ctrl+w w 切换窗口,ctrl+w ctrl+w 也一样(ctrl 按着连按两个 w)
ctrl+w 以后,ctrl 都可以一直按着也没关系,例如 ctrl+w 后 ctrl 不松手连续按 wj, wk
ctrl+w + 或 ctrl+w - 用于调整窗口大小,例如 10ctrl+w -
10 ctrl+w _ 指定大小为 10 行
:q 仅退出当前窗口,:qa 退出所有窗口
:vsplit 可以让窗口左右划分
:vnew 可以就是左右划分的 new
ctrl+w 后加上 hjkl 可以切换到指定方向的窗口
ctrl+w 后加上 t 或者 b 可以跳到最上方和最下方的窗口
vim -o 1.txt 2.txt 3.txt 可以每个文件开一个窗口
:tabnew 新建一个 tab
:tabf 文件名 新建一个 tab 用于打开某文件
q 退出当前 tab
:tabn 和 :tabp 用于切换到后一个/前一个 tab
set ts=4
:pwd 查看
:cd 可以更改当前目录
find: **/文件名 可以搜索当前目录和子目录下的文件名并打开(但如果有太多 match 就会出错)
:source ~/.vimrc 就可以生效,不需要重启 vim
:e <filename> 打开文件.
gd 跳到光标所在变量的声明处, 其实是搜索最早出现的地方.
:edit 命令可以刷新
file -bi <filename> 命令可以检测文件的 encoding,注意 UTF8 文件首位要有 BOM (Byte Order Mark) 该命令才能检测到 UTF8。
:set bomb 才行, BOM 有时候会产生一些问题,例如 gcc (GNU compiler collection) 不接受 BOM, 又例如 cat 两个文件的时候第二个文件的 BOM 也会复制到第一个文件的结尾.
:set fileencoding.
:set number. 要隐藏,用 :set nonumber. 如果要默认显示行号,在 ~/.vimrc 文件中输入 set number 即可
? 可以查看简单的说明
u 可以将 root 移动到上一层
U 相当于 u 但是保持打开的子目录
C 将选中的目录作为 root
q 退出
 
 
 
 
 
 
 
 
 
 
 
友情链接: 超理论坛 | ©小时科技 保留一切权利