转载说明: 文章转自https://github.com/adambard/learnxinyminutes-docs, 版权归原作者所有,感谢原作者分享!
category: tool
tool: vim
filename: LearnVim-cn.txt
contributors:

  • [“RadhikaG”, “https://github.com/RadhikaG”]
    translators:
  • [“Jiang Haiyun”, “https://github.com/haiiiiiyun”]
    lang: zh-cn

文章目录

  • Vim 导航基础
  • 模式:
  • Vim 的 '语法'
  • 一些快捷键和技巧
    • 配置 ~/.vimrc
    • 参考

Vim
(Vi IMproved) 是 Unix 上的流行编辑器 vi 的克隆版本。这个文本编辑器
是为性能和提升效率而设计的,并且在大多数基于 unix 的系统上普遍存在。
它有大量的快捷键可用来快速导航到文件的特定位置,以便进行快速编辑。

Vim 导航基础

    vim <filename>   # 在 Vim 中打开 <filename>:q               # 退出 Vim:w               # 保存当前文件:wq              # 保存文件并退出 Vim :q!              # 退出 Vim 并且不保存文件# ! *强制* 执行 :q, 因此没有保存就退出 Vim:x               # 保存文件并且退出 Vim, 是 :wq 的简写版本u                # 撤销CTRL+R           # 重做h                # 左移一个字符j                # 下移一行k                # 上移一行l                # 右移一个字符# 在行内移动0                # 移到行首$                # 移到行尾^                # 移到行内的第一个非空白字符处# 在文本中查找/word            # 光标之后的所有该词都高亮显示?word            # 光标之前的所有该词都高亮显示n                # 查找后将光标移到该词的下一个出现位置N                # 光标移到该词的上一个出现位置:%s/foo/bar/g    # 将文件每一行上的所有 'foo' 都改成 'bar':s/foo/bar/g     # 将当前行上的所有 'foo' 都改成 'bar'# 跳到字符处f<字符>         # 向前跳移到 <字符> 上t<字符>         # 向前跳移到 <字符> 的左侧# 例如,    f<               # 向前跳移到 < 上t<               # 向前跳移到 < 的左侧# 按词移动# 默认一个单词由字母,数字和下划线组成w                # 移动到下一个词首b                # 移动到前一个词首e                # 移动到下一个词尾# 移动的其它命令gg               # 移到文件顶部G                # 移到文件末尾:NUM             # 移到第 NUM 行 (NUM 是任意数字)H                # 移到屏幕顶部M                # 移到屏幕中间位置L                # 移到屏幕末尾

模式:

Vim 基于 模式 这个概念。

命令模式 - Vim 启动后就处于这个模式,用于导航和操作命令
插入模式 - 用于在你的文件中进行修改
可视模式 - 用于高亮文本并对它们进行操作
Ex 模式 - 用于跳到底部的 ‘:’ 提示行上输入命令

    i                # 在光标位置前,将 Vim 切换到插入模式a                # 在光标位置后,将 Vim 切换到插入模式v                # 将 Vim 切换到可视模式:                # 将 Vim 切换到 ex 模式<esc>            # 无论你当前处于什么模式,都返回到命令模式# 复制和粘贴文本y                # 复制所选的内容yy               # 复制当前行d                # 删除所选的内容dd               # 删除当前行p                # 在当前光标位置后粘贴复制的文本P                # 在当前光标位置前粘贴复制的文本x                # 删除当前光标位置处的字符

Vim 的 ‘语法’

Vim 可以被认为是按 ‘动词-修饰词-名词’ 格式编排的一组命令:

动词 - 你的动作
修饰词 - 你如何执行你的动作
名词 - 你的动作所作用于的对象

关于 ‘动词’,‘修饰词’,和 ‘名词’ 的几个重要例子:

    # '动词'd                # 删除c                # 修改y                # 复制v                # 可视化选择# '修饰词'i                # 内部的a                # 周围的NUM              # 数字 (NUM 是任意数字)f                # 查找文本并位于其上t                # 查找文本并停于其前面/                # 从光标处开始查找字符串?                # 在光标前查找字符串# '名词'w                # 词s                # 句子p                # 段落b                # 块# 示例 '语句' 或命令d2w              # 删除 2 个词cis              # 修改段落内的内容yip              # 复制段落内的内容 (复制你所在的段落)ct<              # 修改直到括号开启处# 对你的当前位置直到下个括号开启处的内容进行修改d$               # 删除直到行尾

一些快捷键和技巧

    <!--TODO: Add more!-->
    >                # 将所选内容缩进一级<                # 将所选内容取消缩进一级:earlier 15m     # 将文档还原到 15 分钟前的状态:later 15m       # 逆转上述命令ddp              # 相邻行交换位置,先 dd 再 p.                # 重复之前动作

宏基本上来说就是可录制的动作。
当你开始录制宏时,它会记录你使用的 每个 动作和命令,
直到你停止录制。当调用宏时,它会将这个完全相同的动作和命令序列
再次应用于所选文本之上。

    qa               # 开始录制一个叫 'a' 的宏q                # 停止录制@a               # 重播宏

配置 ~/.vimrc

.vimrc 可用于在启动时对 Vim 进行配置。

这里是一个示例 ~/.vimrc 文件:

" 示例 ~/.vimrc
" 2015.10 " 需要 Vim iMproved 版本
set nocompatible" 根据文件名检测文件类型,以便能进行智能自动缩进等操作。
filetype indent plugin on" 开启语法高亮
syntax on" 更好的命令行补全
set wildmenu" 除了当使用大写字母时使用大小写无关查找
set ignorecase
set smartcase" 当新开一行时,如果没有开启文件特定的缩进规则,
" 则缩进保持与你当前行一致
set autoindent" 在左侧显示行号
set number" 缩进选项,根据个人偏好进行修改" 每个 TAB 的可视空格数
set tabstop=4" 编辑时 TAB 对应的空格数
set softtabstop=4" 当使用缩进操作 (>> 和 <<) 时缩进的空格数
set shiftwidth=4" 将 TAB 转换成空格
set expandtab" 为缩进和对齐开启智能化的 TAB 和空格切换功能
set smarttab

参考

Vim | Home

$ vimtutor

A vim Tutorial and Primer

What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)

Arch Linux Wiki

[转]vim基础入门、语法速探、快捷键与宏相关推荐

  1. 大数据必学Java知识(一):Java基础入门语法和安装

    Java基础入门语法和安装 1. Java概述 1.1 Java语言背景介绍(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应用) 2. ...

  2. Java基础入门语法和安装

    1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...

  3. python基础语法类型_Python基础入门语法和变量类型(一)

    1 基础语法 标识符 标识符由字母.数字和下划线(_)组成,其中不能以数字开头,并且区分大小写. 以下划线开头的标识符是有特殊意义的: 单下划线开头的如 _foo,表示不能直接访问的类属性,需要通过类 ...

  4. python输入一个字母标识符_Python基础入门语法和变量类型(一)

    1 基础语法 标识符 标识符由字母.数字和下划线(_)组成,其中不能以数字开头,并且区分大小写. 以下划线开头的标识符是有特殊意义的: 单下划线开头的如 _foo,表示不能直接访问的类属性,需要通过类 ...

  5. Python基础入门语法

    Python基础语法目录 一.Python环境 1.python2和python3同时存在电脑时 二.HelloPython 三.数据结构 1.List 2.String 3.Dict 四.赋值_条件 ...

  6. CSS 基础入门语法

    2019独角兽企业重金招聘Python工程师标准>>> 盒模型--边框 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 如下面代码为 ...

  7. python的0基础入门语法_学习小结(1)

    1.print()的运用 (1)直接打印就用print(),但是括号里要打印的内容还是有限制的: eg: A:打印'复仇者联盟--终局之战'; B:打印'Let'go!!!'; C:打印复仇者联盟'' ...

  8. HTML的基础入门语法。(学习前端开发必备!!!)

    1.HTML的基本操作 2.HTML的复习代码 <!DOCTYPE html> <html lang="en"> <head><meta ...

  9. latex 甘特图_[简004] 史上'最全最精简'Markdown语法-速览速用

    < Markdown Syntax by Andy - Saturday, March 16, 2019> 目录: 一.Markdown 基础常用语法速览速用 1. 标题1-6(" ...

最新文章

  1. 平面广告设计和Web设计的差别
  2. 【转】职场三国杀:为什么职场争斗中认真干活的人有时会败给不干活的人
  3. kmalloc/kfree,vmalloc/vfree函数用法和区别
  4. Linux操作(3)—— 重定向操作
  5. “会”和 好”纯粹是两个概念
  6. PhpStorm+Xdebug断点调试环境搭建
  7. 说说 Spring AOP 原理
  8. 学习曾国藩,学做人做事学技术
  9. U盘版便携式Linux制作, casper-rw 解析
  10. smtplib python教程_Python使用poplib模块和smtplib模块收发电子邮件的教程
  11. Linux Select
  12. python中acosh_带有Python示例的math.acosh()方法
  13. python中不可变对象_Python中的可变对象与不可变对象、浅拷贝与深拷贝
  14. 微课|中学生可以这样学Python(例8.21):选择法排序
  15. xp系统突然上不了网【解决方案】
  16. 为什么Byte类型的运算结果要用int类型来接收
  17. EmitMapper,AutoMapper,NLiteMapper和手工映射性能大比拼
  18. [Usaco2007 Demo]City skyline
  19. 初识Python导图笔记
  20. 第11章:项目风险管理——章节真题

热门文章

  1. 使用 asp.net mvc和 jQuery UI 控件包
  2. HarmonyOS之深入解析视频的功能和使用
  3. 2013\National _C_C++_C\1.好好学习
  4. ALGO-221 数据交换
  5. P1739 表达式括号匹配
  6. PAT (Basic Level) Practice (中文)1005 继续(3n+1)猜想 (25 分)
  7. ubuntu中如何解压rar文件
  8. python中count()函数的用法
  9. 【机器视觉】 reset_fuzzy_measure算子
  10. 【Qt】QModbusTcpServer类