Xiaoshier Blog

vim 常用操作

vim学习之查漏补缺.

Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。之前看到 vim 想到了黑客帝国里的情景,只见黑色的电脑屏幕上, 字母在飞快的变换着,当时就觉得好厉害啊,与我相隔十万八千里。

还得说点题外话,既然是查漏补缺的文章,就记录一下第一次见到 vim 操作时的情景吧. 还记得,刚入行时,做移动端项目,需要在手机上测试,这需要手机连接电脑,这可怎么办呢,还好家里有前辈,于是叫来前辈帮忙, 说是可以通过 apache 建立服务,手机与电脑同一网络下,输入网址即可看见我做的页面了,哇,听着就好高深的样子(对于入行前 是电脑白痴,前端又是一通自学的人来说),这位前辈在网上搜了搜,第一件事是把 mac 自带的 terminal 打开,噼里啪啦弄了一通 ,就好了(哇塞,这个敬仰之情).搞定之后,我也按照网上的教程,到了 vi 这一步时,怎么弄都没反应,只好把终端退出,这个就不了了之了.

用vi创建,编辑,保存文件

1.创建文件

  1. 使用终端创建

    1
    2
    3
    $ mkdir vim-study 
    $ cd vim-study
    $ vi hello.md //vi 指令,创建一个文件,并进入编辑模式
  2. 在 vim 编辑器中创建

    • 光标在目标文件上, 键入 m
    • a 添加文件夹或文件
    • m 移动到其他位置
    • d 删除,此删除为永久删除,无法找回,请留意
    • r 在 Finder 中显示该文件
    • o 使用系统默认编辑器打开该文件
    • q 快速查看该文件
    • c 复制该文件至其他位置
    • l 显示该文件信息

2.编辑文件

出现如下图内容,此时处于normal 模式,需进入Insert 模式,方可进行编辑,输入i即可进入Insert模式

img1

3.保存

如下图:编辑区和状态区,编辑完成后

  • 按下esc进入normal模式,
  • 保存并退出=>:wq(w:write,q:quit) 或ZZ:x
  • 保存=>:w
  • 直接退出不保存=>:q!
  • 强行退出不保存所有正在编辑的文件=>:qa!
  • 另存为=>:saveas

img2

此时,创建一个文件,并进行编辑保存的工作初步完成!

vi编辑中常用的快捷键

1. 模式切换

  • Normal模式 => escCtrl + [,该模式下,按键指令,可进行快捷操作,删除,复制等等
    img5
  • Insert模式 => ias,进入编辑模式
    img3
  • V-line模式 => Normal模式下,enter,以空行为分界线,连着的n行属于一块儿,按enter可进行整块儿向下选择
    img6
  • V-block模式 => Normal模式下,Ctrl+v进入该模式,可进块儿操作
    img4

2. Insert模式光标插入方向

  • i/I 在光标前插入/在行首插入
  • a/A 在光标后插入/在行尾插入
  • s/S 删除光标当前内容/删除一行并插入光标
  • o/O 向上/向下新建一行插入光标
  • r/R 替换当前内容
  • cw 替换当前光标到这个词结束

3. 光标移动

  • 左=>h,方向键,Backspace(delete)
  • 下=>j,Enter,+,方向键
  • 上=>k,-,方向键
  • 右=>l,Space(空格键),方向键
  • 向下翻页 =>Ctrl+f
  • 向上翻页 =>Ctrl+b
  • 向下翻半页 =>Ctrl+d
  • 向上翻半页 =>Ctrl+u
  • 向下/上按段落跳转 =>{/}(以空行来区分段落)
  • 页首=>gg
  • 页尾=>G
  • 光标移动至第n行=> nG/:n
  • 按照单词移动:
    1. 移动至下一单词开头=>w/W(以标点符号为跳动基准/以空格为跳动基准)
    2. 移动至下一单词结尾=>e/E
    3. 移动至上一个单词=>b/B
  • 多行插入 (同时在多行内选中的地方进行插入相同内容)
    1.Normal状态下 Ctrl+v 开始块儿操作
    1. Ctrl+dhjkl向下移动
    2. I--+esc(此处--为插入内容示例)

4. 复制粘贴

  • 剪切
    1. nx/X剪切光标当前所在n个字符;
    2. ndd剪切当前行;
    3. d$/0/^/G/gg/w/b删除光标至该行尾;
    4. d+hjkl删除左下右上内容
    5. dt*删除至*第一次出现;
    6. D=d$
  • 删除
    插入模式下的删除操作
    1. ^u 删除当前航
    2. ^h 删除前一个字符
    3. ^w 删除前一个单词
  • 复制
    1. y$/0/^/G/gg/w/b/e光标至该行首;
    2. nyy复制n行;
    3. yt*复制至*第一次出现;
    4. n"a/Ayy复制至a缓存区,可分别存储到26个英文字母的缓存区中,在分别进行粘贴;
  • 粘贴
    1. np/nP粘贴至当前位置前/后;
    2. "ap粘贴a缓存区的内容;
  • 替换
    1. r/R非插入式替换/替换直至esc;
    2. cc/S整行替换;
    3. c$/0/^/G/gg/w/b/e替换;
    4. C=c$替换值行尾;
    5. s/S插入式替换/整行;

5. 撤回操作

  • 撤回=> u
  • 取消撤回=>Ctrl+r

6. 查找

输入查找内容后, 按下回车, 然后使用 nN 进行上下切换

  • 语法
    1. /[text]\c大小写不敏感查找
    2. /[text]\C 大小写敏感查找
    3. /[text]向下查找,text为查找内容,回车,n/N切换查找方向
    4. ?[text]向上查找,text为查找内容,回车,n/N切换查找方向
    5. */#向下/向上查找光标所在单词,完全一样;
    6. g*/#向下/向上查找光标所在单词,部分一样;
  • 大小写敏感配置
    设置大小写不敏感查询
    :set ignorecase
    
    如果有一个大写字母, 则切换到大小写敏感查找
    :set smartcase
    

7. 替换

替换范围/被替换内容/要替换成内容/[每次替换前询问confirm/不显示error/不询问整行替换global/不区分大小写ignore]
:[range]s/pattern/string/[c,e,g,i]
c: 需要确认;
e: ;
g: 全局替换;
i: 大小写不敏感 I: 大小写敏感

  1. 全局替换
    :%s/foo/bar/g
    
  2. 当前行替换
    :s/foo/bar/g
    
  3. 选区替换(在有选区的情况下, 输入 : 会自动添加 ‘<,’>)
    :'<,'>s/foo/bar/g
    
  4. 2-11行替换
    :2,11s/foo/bar/g
    
  5. 当前行与接下来2行
    :.,+2s/foo/bar/g
    

8. 排版

  • = 按格式显示
  • <</>>左缩进/右缩进;
  • 获取tab值:
    :set tabstop[=4]
    
  • 每一级缩进长度

    :set shiftwidth[=4]
    
  • ~ 大写切换, 反向切换;

  • gugU, 全部切换成小写或大写;

9. 文件格式

:set filetype[=html] 获取[设置]文件格式;

10. 行号设置

:set number

11. 块儿操作

  • 如在行头添加 --

    1. ^ 到行头
    2. <C-v> 开始块儿操作
    3. <C-d>hjkl 选择操作行
    4. I--[ESC] I是插入, 插入内容 ‘–’, 按下 ESC 为每一行生效(这里可是是删除 x, 替换 r等等操作)
  • 如在行尾添加 ‘–’

    1. <C-v>
    2. j/k 选中行
    3. $ 到行尾
    4. A--[ESC] A插入内容 --, 按下ESC 为每一行生效

12. 分屏

  • 左右屏
    1. :vsplit
    2. double<C-w> or <C-h/l> 左右屏切换
  • 上下屏
    1. :split
    2. double<C-w> or <C-j/k> 上下屏切换

13. 书签

  • ma/A设置书签本文档/各文档间,a/A是26字母;
  • `a至书签a处;
  • 'a至书签a行行首;

vim 相关

1. MacVim

the text editor for Mac OS X

2. spf13-vim

一个 vim 插件的集合体,你所能用到的插件,基本上都在这里可以找到。一键式安装。
vundle a Vim plugin manager

3. Vimium

Chrome浏览器插件,可以在 Chrome 中使用键盘操作页面,快捷键如同 Vim。If you use vim that you are worth owing Vimium. It’s so cool.
插件如是介绍 “The Hacker’s Browser. Vimium provides keyboard shortcuts for navigation and control in the spirit of Vim.”

补充

1. 删除光标所在单词, 并进入编辑模式bce

2. 查找

`*` 与当前光标所在单词相同的下一个单词

参考资料

1.大家來學VIM