用户工具


keyworkds: vim

编辑文件:

  • i 在当前位置生前插入
  • I 在当前行首插入
  • a 在当前位置后插入
  • A 在当前行尾插入
  • o 在当前行之后插入一行
  • O 在当前行之前插入一行

移动

  • h 左移一个字符
  • l 右移一个字符,这个命令很少用,一般用w代替。
  • k 上移一个字符
  • j 下移一个字符
  • 以上四个命令可以配合数字使用,比如20j就是向下移动20行,5h就是向左移动5个字符,在Vim中,很多命令都可以配合数字使用,比如删除10个字符10x,在当前位置后插入3个!,3a!<Esc>,这里的Esc是必须的,否则命令不生效。
  • w 向前移动一个单词(光标停在单词首部),如果已到行尾,则转至下一行行首。此命令快,可以代替l命令。
  • b 向后移动一个单词 2b 向后移动2个单词
  • e,同w,只不过是光标停在单词尾部
  • ^ 移动到本行第一个非空白字符上。
  • 0(数字0)移动到本行第一个字符上,
  • $ 移动到行尾 3$ 移动到下面3行的行尾
  • % 所有行
  • gg 移动到文件头
  • G(shift + g) 移动到文件尾
  • 10G 跳到第10行
  • f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。
  • 查找:
  • /text  查找text,按n健查找下一个,按N健查找前一个。
  • ?text  查找text,反向查找,按n健查找下一个,按N健查找前一个。

替换

  • :1,$s/aaa/bbb/ 从第一行到最后一行,将第一个aaa改成bbb
  • :1,$s/aaa/bbb/g 从第一行到最后一行,将所有的aaa改成bbb
  • :1,$s/aaa/bbb/c 从第一行到最后一行,将所有的aaa改成bbb(交互模式)每次遇到aaa时问你是不是需要修改,确定按y 否则n
  • :%s/^/#/g 注释整个文档
  • :1,3s/^/#/g 注释前3行

保存,退出

  • :wq 保存并退出
  • ZZ 保存并退出
  • :q! 强制退出并忽略所有更改
  • :e! 放弃所有修改,并打开原来文件。
  • :e! a.txt 放弃所有修改,并打开a.txt。

多文件

  • :split file或:new file 用新窗口打开文件
  • split打开的窗口都是横向的,使用vsplit可以纵向打开窗口。
  • Ctrl+ww 移动到下一个窗口
  • Ctrl+wj 移动到下方的窗口
  • Ctrl+wk 移动到上方的窗口
  • :r /etc/group 将一个文件的内容写到当前文件中
  • :w 保存不退出

删除

  • dd 删除一行
  • d$ 删除当前字符之后的所有字符
  • dgg 删除当前行之前所有行,不包括当前行
  • dG 删除当前行之后所有行,包括当前行
  • dfx 删除光标处到下一个x之间的所有字符

复制,黏贴

  • yy 拷贝当前行
  • 5yy 拷贝当前后开始的5行
  • p 在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。
  • u 撤销(Undo)
  • U 撤销对整行的操作
  • Ctrl + r 重做(Redo),即撤销的撤销。

字符操作

  • 5x 删除5个字符
  • rx 将当前字符替换成x

其他

  • :set nu 显示行号
  • :set nonu 显示行号
  • :!command 执行shell命令
  • 设置tab建长度:<code>修改~/.vimrc文件,加入:set ts=4</code>