vim
概述
• vim是linux下面很流行的文本编辑工具, 最初是
  由Unix上的vi编辑器移植过来的, 在功能上做了
  一些增强; 除了基本的文本编辑功能之外, vim
  还支持一定的代码编写功能, 比如语法高亮等;
  另外可以通过插件的方式对vim进行扩展, 以实
  现更多其他的功能. 关于vim:
 wiki:   http://en.wikipedia.org/wiki/Vim_(text_editor)
 home:   http://www.vim.org/
• 通常在安装系统时默认会安装vim编辑器, 可以
  使用vim命令打开vim编辑器, 或者后面指定文
  件名进行编辑.
vim
                 - 模式
• vim可以工作在多种模式下面, 不同的模式提供了各自额外的
  特性; vim常用的模式有:
 normal   vim在启动之后默认进入此模式, 此模式用于光标移动和文
          本操作. 使用ESC键从其他模式返回到此模式, 示例:




 insert   在此模式下可以使用键盘输入文本内容, 使用
          i/a/o等键进入此模式, 示例:
vim
            - 模式
visual 可视模式用于选择文本区域, 在此模式下会给
选中的文本区域加上背景色, 在normal模式按v键进入此模
式, 示例:




command 命令模式, 此模式用于文本查找和替换, 还可用
于执行操作系统命令, 在normal模式使用:切换到此模式, 示
例:
vim
            - 命令
• vim提供了很多命令实现对文本的编辑操作, 比如光标移
  动, 文本复制粘贴等, vim命令是通过输入相应的字符来
  调用的; 可以使用vim打开一个文本文件进行实际操作.
  1, 光标移动命令
  k 光标向上移动一行
  j    光标向下移动一行
  w 光标向前移动一个单词的位置
  b 光标向后移动一个单词的位置
  gg 光标移动到文件起始位置
  G 光标移动到末尾行行首
  ctrl+b  显示当前光标之前的一屏, 光标位置不变
  ctrl+f  显示当前光标之后的一屏, 光标位置不变
  HOME/END   移动到行首/行尾
  方向键     上下左右移动光标的位置
vim
            - 命令
2, 文本操作命令
yy     复制光标所在的当前行
#yy    复制光标及后面的多行, 比如2yy复制光标所在行和
       下一行
y$     复制光标所在位置到行尾
y^     复制光标所在位置到行首
yw     复制光标所在位置到单词末尾
#yw    复制多个单词, 比如2yw就是复制两个单词
dd     剪切当前行
#dd    剪切光标及后面的多行, 比如2dd剪切光标所在行和
       下一行
dw     剪切光标后的单词
d$     剪切从光标到当前行尾的内容
#dw    剪切光标及后面的多个单词
vim
              - 命令
p           粘贴复制或者剪贴的内容, 光标之后
shift+p     粘贴复制或者剪贴的内容, 光标之前
u           撤销之前的编辑动作, 如剪切, 粘贴等
3, 模式切换命令
关于vim模式会在后面介绍.
ESC 回到normal模式
i     进入insert模式, 在光标之前插入
a     进入insert模式, 在光标之后插入
I     进入insert模式, 在光标行行首插入
A     进入insert模式, 在光标行行尾插入
o     光标下面添加空行, 移动光标至空行行首进入insert模式
O     光标上面添加空行, 移动光标至空行行首进入insert模式
v     进入visual模式, 在可视模式下会对选中的文本区域加背景色
:     进入命令行模式, 该模式可用于查找或者替换, 或者执行操作系统
      的命令
vim
             - 模式和命令
• 不同的模式下面能够使用的vim命令不同:
normal  可使用光标移动和文本操作命令, 使用
        :help normal-mode查看模式帮助, 在normal模
        式下使用如下命令对文件进行保存或者退出vim
        w        保存文件并回到normal模式
        q        退出编辑, 如果未保存会提示保存
        q!       忽略改动的内容, 强制退出
        wq       保存并且退出
insert  可使用大部分的vim命令, 需要配合额外的alt键使
        用:help insert-mode查看帮助
visual  可使用大部分的vim命令,使用
        :help visual-mode查看模式帮助
command 不能使用vim命令, 使用
        :help command-line-mode查看帮助
vim
              - visual模式
• 在normal模式下可以使用v, V, ctrl+v, gv进入到可视模式,
  表示的含义分别如下:
  v 进入字符可视模式, 根据光标的移动选中文本区域
  V 进入行可视模式, 根据光标的移动对行进行选中
  ctrl+v  进入块可视模式, 根据光标的移动选
          中矩形文本区域
  gv 进入上次使用的可视模式, 并选中上次选中的文
       本区域, 比如上一次是”块可视模式”退出该模式
       时选中了某个区域, 执行gv会进入”块可视模式”
       并且选中该区域
• 在可视模式下使用如下命令操作文本区域:
  y 赋值当前选中的文本区域
  d 剪切当前选中的文本区域
vim
            - 文本查找
• 在normal模式下输入:进入到命令模式, 在该模式下可以
  使用如下方式进行文本查看和替换(pattern表示正则表
  达式):
  /pattern 查找符合模式的文本, 查找完成之后使用n/N
  进行循环导航, n导航到下一处, N上一处, 示例:




 另外, 在normal模式下也可以实现文本查找功能, 输入*
 可以查找当前光标所在位置的单词, 并且进行导航;
vim
             - 文本替换
• 进入命令模式之后, 使用如下方式进行文本替
  换:
  :s/pattern/target/g 替换当前行匹配模式的文本
   :%s/pattern/target/g替换整个文件中匹配模式
  的文本
   :#,# s/pattern/target/g 替换指定行范围内匹配
  模式的文本, “.”表示当前行, “$”表示最后一行,
  示例: .,$ s/test/Test/gc 在当前行到末尾行中替
  换test为Test, 实际替换之前需要确认
vim
              - 正则表达式
• 使用vim进行文本的查找和替换时使用到了正则表达式操作, 这里介绍
  一些vim特有的一些正则表达式元字符:
  1, c 不区分大小写, 示例:
         /cTEST # 不区分大小写查找test
  2, * 表示0个或者多个, 示例:
         /abc*        # 匹配abc, abcc......
  3, +表示0个或者多个, 示例:
          /abc+      # 匹配abcc, abccc......
  4, [] 匹配方括号内的任意一个字符, 示例:
         /[Tt]est     # 匹配test和Test
     [x-y]匹配x到y范围中的字符, 示例:
         [a-z]xy      # 匹配axy, bxy, cxy...
     [^] 匹配不在方括号中的字符, 示例:
         [^aA]xy      # 匹配bxy, Bxy...
  5, | 匹配两个模式中的任意一个, 示例:
         /Test|test  # 匹配test和Test
vim
            - 正则表达式
6, {m}, {m,}, {m, n} 分别匹配字符出现次数m次, 大于m次,
m-n次, 示例:
     /abc{1,3}     # 匹配abc, abcc, abccc
7, = 匹配0个或者1个
     /ad=         # 匹配字符a后面跟0个或1个数字
8, ^表示行首, $表示行尾, 使用^, $分别表示^和$字符
9, s表示空白字符, 示例:
     /^s*$               # 匹配空行
10, d 表示数字字符, D表示非数字字符, 示例:
     /d+          #匹配由多个数组组成的文本
11, w 匹配一个单词
12, .匹配单个字符
13, <, >分别表示词首, 词尾
vim
                - 一些技巧
• 一些vim使用的技巧, 如下:
  1, vim支持命令历史功能, 进入命令模式之后使用
  上下箭头查看历史命令
  2, 显示/关闭行号
  :set nu/:set nonu
  3, 关闭查找后的高亮显示
  :noh
  4, 执行OS命令, 示例:
  :!date 打印当前日期
  5, 设置注释文本的显示颜色
   :hi Comment ctermfg=lightblue
  6, 设置备份
  编辑~/.vimrc加入如下两行:
  set backup
  set backupdir=~/.vim_backup
  对编辑的文件进行保存时, 会先将当前文件备份到指定的备份目录
  下面, 备份文件的名称在当前文件名后加~, 每次备份会覆盖上一次的
  备份文件.
END

6, vim

  • 1.
  • 2.
    概述 • vim是linux下面很流行的文本编辑工具, 最初是 由Unix上的vi编辑器移植过来的, 在功能上做了 一些增强; 除了基本的文本编辑功能之外, vim 还支持一定的代码编写功能, 比如语法高亮等; 另外可以通过插件的方式对vim进行扩展, 以实 现更多其他的功能. 关于vim: wiki: http://en.wikipedia.org/wiki/Vim_(text_editor) home: http://www.vim.org/ • 通常在安装系统时默认会安装vim编辑器, 可以 使用vim命令打开vim编辑器, 或者后面指定文 件名进行编辑.
  • 3.
    vim - 模式 • vim可以工作在多种模式下面, 不同的模式提供了各自额外的 特性; vim常用的模式有: normal vim在启动之后默认进入此模式, 此模式用于光标移动和文 本操作. 使用ESC键从其他模式返回到此模式, 示例: insert 在此模式下可以使用键盘输入文本内容, 使用 i/a/o等键进入此模式, 示例:
  • 4.
    vim - 模式 visual 可视模式用于选择文本区域, 在此模式下会给 选中的文本区域加上背景色, 在normal模式按v键进入此模 式, 示例: command 命令模式, 此模式用于文本查找和替换, 还可用 于执行操作系统命令, 在normal模式使用:切换到此模式, 示 例:
  • 5.
    vim - 命令 • vim提供了很多命令实现对文本的编辑操作, 比如光标移 动, 文本复制粘贴等, vim命令是通过输入相应的字符来 调用的; 可以使用vim打开一个文本文件进行实际操作. 1, 光标移动命令 k 光标向上移动一行 j 光标向下移动一行 w 光标向前移动一个单词的位置 b 光标向后移动一个单词的位置 gg 光标移动到文件起始位置 G 光标移动到末尾行行首 ctrl+b 显示当前光标之前的一屏, 光标位置不变 ctrl+f 显示当前光标之后的一屏, 光标位置不变 HOME/END 移动到行首/行尾 方向键 上下左右移动光标的位置
  • 6.
    vim - 命令 2, 文本操作命令 yy 复制光标所在的当前行 #yy 复制光标及后面的多行, 比如2yy复制光标所在行和 下一行 y$ 复制光标所在位置到行尾 y^ 复制光标所在位置到行首 yw 复制光标所在位置到单词末尾 #yw 复制多个单词, 比如2yw就是复制两个单词 dd 剪切当前行 #dd 剪切光标及后面的多行, 比如2dd剪切光标所在行和 下一行 dw 剪切光标后的单词 d$ 剪切从光标到当前行尾的内容 #dw 剪切光标及后面的多个单词
  • 7.
    vim - 命令 p 粘贴复制或者剪贴的内容, 光标之后 shift+p 粘贴复制或者剪贴的内容, 光标之前 u 撤销之前的编辑动作, 如剪切, 粘贴等 3, 模式切换命令 关于vim模式会在后面介绍. ESC 回到normal模式 i 进入insert模式, 在光标之前插入 a 进入insert模式, 在光标之后插入 I 进入insert模式, 在光标行行首插入 A 进入insert模式, 在光标行行尾插入 o 光标下面添加空行, 移动光标至空行行首进入insert模式 O 光标上面添加空行, 移动光标至空行行首进入insert模式 v 进入visual模式, 在可视模式下会对选中的文本区域加背景色 : 进入命令行模式, 该模式可用于查找或者替换, 或者执行操作系统 的命令
  • 8.
    vim - 模式和命令 • 不同的模式下面能够使用的vim命令不同: normal 可使用光标移动和文本操作命令, 使用 :help normal-mode查看模式帮助, 在normal模 式下使用如下命令对文件进行保存或者退出vim w 保存文件并回到normal模式 q 退出编辑, 如果未保存会提示保存 q! 忽略改动的内容, 强制退出 wq 保存并且退出 insert 可使用大部分的vim命令, 需要配合额外的alt键使 用:help insert-mode查看帮助 visual 可使用大部分的vim命令,使用 :help visual-mode查看模式帮助 command 不能使用vim命令, 使用 :help command-line-mode查看帮助
  • 9.
    vim - visual模式 • 在normal模式下可以使用v, V, ctrl+v, gv进入到可视模式, 表示的含义分别如下: v 进入字符可视模式, 根据光标的移动选中文本区域 V 进入行可视模式, 根据光标的移动对行进行选中 ctrl+v 进入块可视模式, 根据光标的移动选 中矩形文本区域 gv 进入上次使用的可视模式, 并选中上次选中的文 本区域, 比如上一次是”块可视模式”退出该模式 时选中了某个区域, 执行gv会进入”块可视模式” 并且选中该区域 • 在可视模式下使用如下命令操作文本区域: y 赋值当前选中的文本区域 d 剪切当前选中的文本区域
  • 10.
    vim - 文本查找 • 在normal模式下输入:进入到命令模式, 在该模式下可以 使用如下方式进行文本查看和替换(pattern表示正则表 达式): /pattern 查找符合模式的文本, 查找完成之后使用n/N 进行循环导航, n导航到下一处, N上一处, 示例: 另外, 在normal模式下也可以实现文本查找功能, 输入* 可以查找当前光标所在位置的单词, 并且进行导航;
  • 11.
    vim - 文本替换 • 进入命令模式之后, 使用如下方式进行文本替 换: :s/pattern/target/g 替换当前行匹配模式的文本 :%s/pattern/target/g替换整个文件中匹配模式 的文本 :#,# s/pattern/target/g 替换指定行范围内匹配 模式的文本, “.”表示当前行, “$”表示最后一行, 示例: .,$ s/test/Test/gc 在当前行到末尾行中替 换test为Test, 实际替换之前需要确认
  • 12.
    vim - 正则表达式 • 使用vim进行文本的查找和替换时使用到了正则表达式操作, 这里介绍 一些vim特有的一些正则表达式元字符: 1, c 不区分大小写, 示例: /cTEST # 不区分大小写查找test 2, * 表示0个或者多个, 示例: /abc* # 匹配abc, abcc...... 3, +表示0个或者多个, 示例: /abc+ # 匹配abcc, abccc...... 4, [] 匹配方括号内的任意一个字符, 示例: /[Tt]est # 匹配test和Test [x-y]匹配x到y范围中的字符, 示例: [a-z]xy # 匹配axy, bxy, cxy... [^] 匹配不在方括号中的字符, 示例: [^aA]xy # 匹配bxy, Bxy... 5, | 匹配两个模式中的任意一个, 示例: /Test|test # 匹配test和Test
  • 13.
    vim - 正则表达式 6, {m}, {m,}, {m, n} 分别匹配字符出现次数m次, 大于m次, m-n次, 示例: /abc{1,3} # 匹配abc, abcc, abccc 7, = 匹配0个或者1个 /ad= # 匹配字符a后面跟0个或1个数字 8, ^表示行首, $表示行尾, 使用^, $分别表示^和$字符 9, s表示空白字符, 示例: /^s*$ # 匹配空行 10, d 表示数字字符, D表示非数字字符, 示例: /d+ #匹配由多个数组组成的文本 11, w 匹配一个单词 12, .匹配单个字符 13, <, >分别表示词首, 词尾
  • 14.
    vim - 一些技巧 • 一些vim使用的技巧, 如下: 1, vim支持命令历史功能, 进入命令模式之后使用 上下箭头查看历史命令 2, 显示/关闭行号 :set nu/:set nonu 3, 关闭查找后的高亮显示 :noh 4, 执行OS命令, 示例: :!date 打印当前日期 5, 设置注释文本的显示颜色 :hi Comment ctermfg=lightblue 6, 设置备份 编辑~/.vimrc加入如下两行: set backup set backupdir=~/.vim_backup 对编辑的文件进行保存时, 会先将当前文件备份到指定的备份目录 下面, 备份文件的名称在当前文件名后加~, 每次备份会覆盖上一次的 备份文件.
  • 15.

Editor's Notes

  • #3 附注:emacs是另一个非常流行的文本编辑器, 最初是由RMS编写的, 关于vim和emacs谁更优秀的争论由来已久.