This website requires JavaScript.

VIM学习笔记

最近发现自己掌握的VIM技巧还不够,回顾了一下,记录如下:

移动

b 向前移动一个单词 W 移动到空格后的文字 B 移动到空格前的文字 ^ 移动到行首(不包括空格) G 移动到文件尾 } 向下段落移动 { 向上段落移动 f + 字符 移动到改行下一个匹配到该字符的位置 F + 字符 移动到改行上一个匹配到该字符的位置 t + 字符 移动到改行下一个匹配到该字符的前一个字符的位置 T + 字符 移动到改行上一个匹配到该字符的前一个字符的位置 ctrl-f 下一页 f 就是forword ctrl-b 上一页 b 就是backward ctrl-d 向后滚动半屏 M 移动到屏幕中间的位置 H 移动到屏幕顶部 L 移动到底部 gj 与j不同在段落中下移一行,而不是下一道下一个段落。

编辑

db 删除前一个单词 cw 删除单词并进入插入模式 cc 删除整行并进入插入模式 ct+字符 删除光标所在位置到字符之间的所有字符 ci" 删除前后双引号之间的字符(花括号等也可以这样使用) ca" 同上,双引号也会删除 viw 选中一个单词 vaw 选中一个单词和该单词后面的一个空格 diw 删除一个单词 daw 删除一个单词和该单词后面的一个空格 vip 选中整段 vap 选中整段和该段后面一个换行 gUis 使当前句子中的文字变为大写 das 删除当前句子 vit 选中Tag中的文字,如<\p>What's up?</\p> vat 选中Tag中的文字和Tag本身 cit 选中Tag中的文字,并修改 vi(/) 选中括号中的内容,同vib va(/) 选中括号和括号中的内容,同vab viB 选中一个大嵌套结构

剪切、拷贝、粘贴

P 粘贴文字(会从当前光标的前一个位置开始粘贴) yw 复制单词 y0 拷贝光标位置至行首的字符

搜索

/\c 搜索的时候忽略大小写 /\n\n发现空行 N 前一个搜索到的字符 :set incsearch 输入字符的时候即刻搜索 :set hlsearch 开启高亮显示 :nohlsearch 去掉高亮显示 :noh 去掉高亮显示(简写) . 重复上一个命令 * 移动到光标所在单词的下一个同一个单词处 # 移动到光标所在单词的上一个同一个单词处 % 选择对应匹配的Tag

替换

:s/Ember/Amber 将当前行单词Ember替换成Amber :%s/Ember/Amber 将第一个匹配到的Ember替换成Amber :%s/Ember/Amber/g 全局替换

局部替换:以下过程修改某函数的内容 1.光标定位到花括号 2.按v进入visual模式 (V 可以进入Visual Line模式) 3.按%会将整个花括号的内容都选中 4.:'<,'>s/router/dispatchear/gc 替换内容,(这里c为Confirm,每个替换都需要确认.)

gv 选中上一次选择的区域

原格式:

<option value="AF">Afghanistan</option>
<option value="AI">dfsdf</option>
<option value="AZ">Afghaniadsfstan</option>
<option value="BS">sdf</option>

目标格式:

Afghanistan
dfsdf
Afghaniadsfstan
sdf

步骤:

1.光标放在第一行第一个'<'的位置 2.qa 开始录制宏,宏名为a 3.df> 删除第一个'<'到第一个'>'的所有字符 4.f< 移动到后面的一个'<'符号 5.d$ 删除'<'及以后的内容 6.j0 向下移动一行并移动至行首 7.q 宏录制完成 8.reg 查看宏 9.@a 运行名为a的宏 10.200@a 执行两百次

运行终端命令

:!date 在终端运行date命令 :read !date 从终端读取日期 :r !curl --silent https://raw.github.com/gist/xxxx 读取curl获取的内容

多窗口和标签

:e filepath 打开filepath文件 :b# 在打开的文件中切换 :vs 垂直分割窗口(可以直接加文件路径) :sp 水平分割窗口 ctrl+wh/j/k/l 编辑上下左右的文件 :sb2 分割窗口并且打开第二个开启的文件 :q 关闭分割的窗口 :tabedit app/controller/xxx.sh 以标签页方式打开文件 gt 切换到后一个标签 gT 切换到前一个标签 :table filepath 打开一个文件

缩进

>> 缩进一个Tab set list 显示Tab(^)、回车($)等特殊字符。 set nolist 不显示以上字符 set expandtab 将Tab替换为空格。 set noexpandtab 取消用空格替换Tab。 set shiftwidth=3 按>>时缩进三个空格 V 行选择模式,可以同时选中多行进行缩进,在此模式中,按o和O可以在所选的区域中移动光标所在的顶点。 Ctrl+v 列选择模式,在此模式中,按o和O可以在所选的区域中移动光标所在的顶点。 set smartindent 设置自动缩进 set sts=3 设置缩进空格数 ctrl+t 向前缩进 ctrl+d 向后缩进

代码折叠

zs5j 折叠5行代码 zo 展开折叠的代码 zc 折叠代码 zd 删除折叠 zf% 折叠匹配行的代码,比如在花括号上执行该命令 set fdm=syntax 根据语法自动折叠代码 zC 折叠所有代码 ZO 打开所有折叠了的代码 set foldmarker=test,test 设置缩进代码为test

其他

:set ft? 查看文件类型 :so ~/.vimrc 重新加载配置文件 :set warp 设置换 :set linebreak 换号的时候不拆分单词 :set showbreak=>\ 将换行符显示为'> ' :set scrolloff=5 距离屏幕5行的时候停止scroll :set undofile 设置undofile,该文件记录你所编辑的文件变化,在你保存编辑的文件再打开之后仍然可以undo。 :set gdefault 设置默认g标志,即s/this/THIS/g的时候不用打g :set laststatus=2 设置始终显示状态行。 :set statusline=%f\ \ line:%l/%L\ col:%c\ %p%%\ %y set ai 自动缩进 set bs = 2 在insert模式下用退格键删除 set showmatch 代码匹配 set laststatus = 2 总是显示状态行 set expandtab 设置tab和缩进空格数 set shiftwidth = 4 set tabstop = 4 set cursorline 为光标所在行加下划线 set autoread 文件在Vim之外修改过,自动重新读入 set ignorecase 检索时忽略大小写 set fileencodings = uft-8, gbk 使用 utf-8或 gbk打开文件 set hls 检索时高亮显示匹配项 set helplang = cn 将帮助系统设置为中文 set number 显示行号 syntax on 开启语法高亮 syntax enable 开启语法高亮 set syntax=apache 设置语法语言 colorscheme desert 设置主题 set ft=javascript 设置文件格式为javascript

参考

如何让 vim 成为我们的神器

0条评论
avatar