本文主要包括:
与大部分其它编辑器不同,进入 Vim 后,缺省状态下键入的字符并不会插入到所编辑的文件之中。Vim 的模式(mode,可以简单地理解为“状态”)概念非常重要。需要知道,Vim 有以下几个模式:
- 正常(normal)模式,缺省的编辑模式;下面如果不加特殊说明,提到的命令都直接在正常模式下输入;任何其它模式中都可以通过键盘上的 Esc 键回到正常模式。
- 命令(command)模式,用于执行较长、较复杂的命令;在正常模式下输入“:”(一般命令)、“/”(正向搜索)或“?”(反向搜索)即可进入该模式;命令模式下的命令要输入回车键(Enter)才算完成。
- 插入(insert)模式,输入文本时使用;在正常模式下键入“i”(insert)或“a”(append)即可进入插入模式(也有另外一些命令,如“c”,也可以进入插入模式,但这些命令有其它的作用)。
- 可视(visual)模式,用于选定文本块;可以在正常模式下输入“v”(小写)来按字符选定,输入“V”(大写)来按行选定,或输入“Ctrl-V”来按方块选定。
一般的发布版中还常常带有一个简单的 30 分钟的 Vim 教程,新手在操作系统的命令行上输入vimtutor
命令即可开始学习。除上面的简单说明外,本文并不介绍最基本的 Vim 命令,Vim 的新手应该先通过教程熟悉一下 Vim,再继续往下阅读。
常用的指令序列
左右交换光标处两字符的位置:xp
命令拆分:- x剪切当前字符
- p粘贴剪切的字符到光标后面
上下交换光标处两行的位置: ddp
命令拆分:- dd 剪切当前行
- p 粘贴剪切的内容到光标的下一行
行转列:
第一种, 多行合并成一行,即:
AAAAA
BBBBB
CCCCC
合并为:
AAAAA BBBBB CCCCC
方法1: normal状态下 3J 其中的3是范围,可以是书签或者搜索位置等方式实现,J为合并
注: 如果改为3gJ的话,则合并时各行没有空白AAAAABBBBBCCCCC, 下面方法类似,不再重复这两种合并方式的区别.方法2: 命令状态下 :1,3 join 或 :1,3 j (注意j前面是空格)
方法3: 传统一点的,替换换行符的方式,为避免最后一行也被换掉,范围缩小了,命令状态下 :1,2s/\n/ /
第二种,隔行合并,即:
AAAAA
BBBBB
CCCCC
DDDDD合并为:
AAAAA BBBBB
CCCCC DDDDD方法1: 借用一下宏录制功能, normal状态下 qaJjq 实现录制, 然后在合适的区域重复执行n遍,这里2遍即可,normal状态下2@a
方法2: 命令状态下 :1,4g/^/ join 增加了g过滤后,合并变成了隔行处理
在每行行首添加相同的内容
:%s/^/要添加的内容在每行行尾添加相同的内容
:%s/$/要添加的内容利用正则表达式删除代码段每行的行号
:%s/^\s*[0-9]\s//gc删除某一行之前的所有内容
- 先找到这一行,复制这一行的内容,然后全文查找这一行的内容,这时候这一行是高亮的
- 然后gg回到第一行
- dn
- 先找到这一行,复制这一行的内容,然后全文查找这一行的内容,这时候这一行是高亮的
在vim里使用类似Emacs里的orgmode
- 在.vimrc里添加配置:
Plugin 'jceb/vim-orgmode'
- 在vim命令行模式运行:
之后就能直接用vim编辑.org文件,目前vim-orgmode有如下功能::PluginInstall
当前 vim orgmode不支持所有orgmode功能,但它非常有用。 已经支持的功能的简短列表: - 语法高亮显示
- 标题的循环可见性( 折叠)
- 在标题之间导航
- 编辑文档的结构: 添加,移动,提升,表示标题和更多
- vim orgmode和外部( 文件,网页,等等 ) 中的超链接
- 待办事项列表管理
- 标题标记
- 列表中的字母符号和项目符号符号和复选框支持
- 基本日期处理
- 导出到其他格式( 通过 Emacs’org模式
vim设置leader键
leader 键简单的说就是一个前缀键,可以自由设定
例如,绑定leader键为‘,’
" 设置 leader 键,例子为,键,也可以设置为其他的 默认为"/"
let mapleader=","
" 设置快捷键,关闭一个窗口
map <leader>wq :wq<CR>
这个例子中,在 vim 的normal-mode
下,按空格键+w+q 就可以保存文件退出窗口
在这个leader的前提下,就不会有键冲突的的情况了