vim操作备忘录
vim操作备忘录
vim的书籍虽然看不不少,可是老是容易忘记,主要是自己操作总结过少,这个博客就主要用来记录一些比较常见的术语和操作,以防止自己再次忘记。
<leader>的含义
- <leader> 在vim中默认表示" \ "
- :let mapleader = “-” 可以通过以下命令修改成自己喜欢的键。
<c-p>
- 以<c-…开头的表示:ctrl + …按键一起按,例如<c-p> 就是ctrl + p 一起键入。
不加载任何vim插件,使用最原始的vim
vim -u NONE -N XXXX.CC
-u NONE 表示不加载.vimrc
-N vim nocompatible vi
windows下的插件均安装在xxxx\xxxx\vim80(版本号)\colors(以颜色主题为例)下
ubuntu下均在~/.vim/colors(以颜色为例),颜色主题启动均以colorscheme monokai 来启动。
ubuntu通过vundle进行管理,主体步骤.vimrc---->通过命令if filereadable(expand(xxx))找到vundle的配置文件,并source启动-------->.vim.bundles------------>set rtp+=xxxx\Vundle.vim 以及call vundle#begin(默认 .vim\bundle)寻找到各类插件
source xxx.vim 用于启动xxx.vim插件
vim中常用配置
退格
shiftwidth reindent 操作(<<和>>)时缩进的列数(这里的一列相当于一个空格)
tabstop 一个tab键所占的列数,linux 内核代码建议每个tab占用8列
softtabstop 敲入tab键时实际占有的列数。
expandtab 输入tab时自动将其转化为空格
一般用法 :set shfitwidth = 4 softtabstop = 4 expandtab 换行自动缩进4格,softtabstop表示键入tab按钮实际所占行数,本例所占4列,expandtab使得tab实际不满足所定义列数,则以空格来凑。
filetype 根据文件后缀名来确定文件所属类型,可以通过set filetype=cpp来强制制定文件所属类型。
:filetype on 打开 未改变 未改变
:filetype off 关闭 未改变 未改变
:filetype plugin on 打开 打开 未改变
:filetype plugin off 未改变 关闭 未改变
:filetype indent on 打开 未改变 打开
:filetype indent off 未改变 未改变 关闭
:filetype plugin indent on 打开 打开 打开
:filetype plugin indent off 未改变 关闭 关闭
要查看当前的状态,只需输入: >
:filetype查看不可见字符
:set invlist
:set nolistwindows 下的vim设置字体
c:\Program Files(x86)\Vim下的_vimrc 添加 set guifont=Consolas:h11
配置文件_vimrc与安装的插件文件夹colors不在一个文件中,其他均在Vim\vim80\ 之下
映射
- inoremap就只在插入(insert)模式下生效
- vnoremap只在visual模式下生效
- nnoremap就在normal模式下(狂按esc后的模式)生效
- 在vim打开文件norm6al模式下键入 :help nnoremap,得出以下提示
- :nn[oremap] {lhs} {rhs} |mapmode-n| :nn *:nnorem
- 在映射命令作用的模式中把键序列 {lhs} 映射为 {rhs}
- 以YouCompleteMe的映射跳转定义的使用用例如下:
- nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处
高效修改符号内的字符
ci’、ci"、ci(、ci[、ci{、ci< - 分别更改这些配对标点符号中的文本内容
di’、di"、di(或dib、di[、di{或diB、di< - 分别删除这些配对标点符号中的文本内容
yi’、yi"、yi(、yi[、yi{、yi< - 分别复制这些配对标点符号中的文本内容
vi’、vi"、vi(、vi[、vi{、vi< - 分别选中这些配对标点符号中的文本内容
it : 选择xml标签内部内容,例如,高亮tags
at:选择一对xml标签,例如,高亮所有内容
将工作区分割成窗口
- 分割窗口操作
命令 | 用途 |
---|---|
<C-w>s | 水平切分当前窗口,新窗口仍显示当前缓冲区 |
<C-w>v | 垂直切分当前窗口,新窗口仍显示当前缓冲器 |
:sp[lit] {file} | 水平切分当前窗口,新窗口中载入{file} |
:vsp[lit] {file} | 垂直切分当前窗口,新窗口中载入{file} |
- 在窗口间切换
命令 | 用途 |
---|---|
<C-w>w | 在窗口间切换 |
<C-w>h | 切换到左边的窗口 |
<C-w>j | 切换到下面的窗口 |
<C-w>k | 切换到上面的窗口 |
<C-w>l | 切换到右边的窗口 |
- 关闭窗口
Ex命令 | 普通模式命令 | 用途 |
---|---|---|
:clo[se] | <C-w>c | 关闭活动窗口| |
:on[ly] | <C-w>o | 只保留活动窗口 |
- 改变窗口大小
命令 | 用途 |
---|---|
<C-w>= | 使所有窗口等高等宽(常用于恢复) |
<C-w> - | 减少窗口中的一行 |
<C-w> + | 增加窗口中的一行 |
<C-w>_ | 最大化窗口中的行(高度) |
<C-w>| | 最大化窗口的列 |
[N]<C-w>_ | 窗口中的行(高度)设置为N |
[N]<C-w>| | 最大化窗口的列设置为N |
在标签中切换
浏览Quickfix列表
命令 | 用途 |
---|---|
:cnext | 跳转到下一项 |
:cprev | 跳转到上一项 |
:cfirst | 跳转到第一项 |
:clast | 跳转到最后一项 |
:cc N | 跳转到第N项 |
:copen | 打开quickfix窗口 |
:cclose | 关闭quickfix窗口 |
:cnfile | 下一个文件的第一项 |
:cpfile | 上一个文件的最后一项 |
ctrl+i:进入定义或声明之处
ctrl+o:跳出定义或声明之处
YCM中采用vim的jumplist
单词,字符串之间跳跃
b:反向跳跃到单词首字符
B:反向跳跃到字符串首字符
w:正向跳跃到单词首字符
W:正向跳跃到字符串首字符
e:正向跳跃到字符末尾字符
E:正向跳跃到字符串末尾字符
ge:跳跃到上一个字符末尾
gE:跳跃到上一个字符串末尾
显示
zt:当前行显示到顶部
zz:当前行显示到屏幕中间
3H:跳到顶部第三行
5L:调到底部第五行
面向字符,行,列操作
- v:面向字符,配合b,w,e,ge可以快速选择并且匹配
- caw,yaw,daw:面向单词级别的处理
- V:面向行处理,Vr|,将一行全部转换成|
- ctrl+v:面向列处理,c-v3j,连续选择下面三列同位置,包含最初一行
- shift+i 在所选高亮区域前插入,shift+a 在所选高亮区域后以为插入
- gv:重复选择上次的高亮区域
- gU{motion},motion比如:it,V等,大写所选内容,gUgU大写所在行
- gu{motion},motion比如:it,V等,小写所选内容,gugu小写所在行
- i:当前光标前插入,I行首插入
- a:当前光标后插入,A行末插入
- o:切换高亮选区的活动端
vim比较文件方法
- #最简单的方法
- vimdiff FILE_LEFT FILE_RIGHT #方法1
- vim -d FILE_LEFT FILE_RIGHT #方法2
- vim FILE_LEFT
- :vertical diffsplit FILE_RIGHT #方法3
- [c #反向跳转
- ]c #正向跳转 下一个不同点
- :set noscrollbind #不需要同步移动
- :diffupdate 更新之后,需要手动同步
- #如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。分别在两个窗口里面输入命令:
- :diffthis
- 合并文档:
- dp 将差异点的当前文档内容应用到另一文档(diff put)
- do 将差异点的另一文档的内容拷贝到当前文档(diff get)
- 上下文的展开和查看
- 比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置:
- :set diffopt=context:3
- 可以用简单的折叠命令来临时展开被折叠的相同的文本行:
- zo (folding open, z这个字母看上去比较像折叠的纸)
- 然后可以用下列命令来重新折叠:
- zc (folding close)
常见需要掌握的vim操作
- 不按Esc而是按[或者c,速度快很多
- 学会几个定位键的区别:0, $, {, }, g, G, w, e, b…
- o, O分别是当前位置下面/上面插入一个新行并进入插入状态
- Shift+V选定几行,然后用 一起移动
- Ctrl+V选定行首或行尾的字符,然后用shift+i做插入,或者shift+x做删除
- 学会用y,d 和p, P做粘贴剪切
- 学会用^W的窗口操作。打开文件用sp或者vs
- 学会记录宏的命令。用q加任意键开始录制,再按q保存。然后可用@加这个任意键回放,在@前加数字可定义回放次数。
- "."重复上一个命令,“u"取消上一个命令,”^r"反取消
- ^n, ^p用buf里的关键词补全。
- 学会搜索替换":%s/要搜的东西/要换成的东西/g"
- 任何时候移到一个单词上按#的话可以高亮这个文档里所有一样的单词
- 用“/”做搜索, 按n或N 上一个/下一个
- ":!命令 &“可直接运行这个命令,用”:!命令 %&"如果你想让这个命令对当前所编辑文件做操作。
- 任何时候可用":cd %:p:h"来切换目录到当前编辑文件所在目录。
vimscript中不错的语句小结
- "打开或读取python相关的程序,才高亮所有python语法
- autocmd BufRead,BufNewFile *.py let python_highlight_all = 1
- au FileType python setlocal formatprg=autopep8\ -
- autocmd FileType c,cpp,java,go,php,javascript,puppet,python,rust,twig,xml,yml,perl autocmd BufWritePre <buffer> :call <SID>StripTrailingWhitespaces()
- autocmd ! 清除vimcrc组全部的自动命令
- #快捷键函数映射
- map <F3> :call FormatSrc()<CR><CR>
- func FormatSrc()
- exec "w" "保存文档
- if &filetype == 'py' || &filetype == 'python'
- exec "r !autopep8 -i --aggressive --aggressive %" ”读取该命令执行后的结果
- endif
- exec "e! %" “编辑当前文件:无论缓存区里是否已经更改,考虑多人编辑文档的情况
- endfunc
- noremap <F3> :Autoformat<CR> "f3映射到命令autoformat
- au BufWrite * :Autoformat "保存文档前执行autoformat
- "使得formatprg带有参数
- au FileType python let &l:formatprg='autopep8 -a -a -'
- "au FileType python setlocal formatprg=autopep8\ -
vim操作备忘录的更多相关文章
- linux下vi或vim操作Found a swap file by the name的原因及解决方法
在linux下用vi或vim打开Test.java文件时 [root@localhost tmp]# vi Test.java出现了如下信息: E325: ATTENTION Found a s ...
- [No0000191]7种提高工作效率的Vim操作-Vim使用技巧(6)
Vim一直被认为是一种非常高效的文本编辑器,但是对于普通用户来说,很难在入门的时候就体会到Vim的所谓高效性. 本文介绍7种提高你工作效率和生产力的Vim使用技巧,主要集中在对某个文件范围内的特定目标 ...
- VIM操作基础命令
VIM操作基础命令 1 文件操作 1.1 打开文件 VIM 使用 –o 或 –O 选项打开多个文件,其中 –o 表示垂直并排,例如 vim -o lesson4 lesson5 lesson6.大O表 ...
- vim学习笔记(1)——vim操作
仅记录一些自己最经常使用的vim操作.随时更新 文本操作 d 剪切.双击剪切一行 y 复制,双击复制一行 p 粘贴 x 删除当前光标下字符 r 替换当前光标字符.后面接替换的字符 :s/old/new ...
- VIM操作常用指令(转)
vim是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interface&q ...
- Ubuntu/Linux 下pdf阅读器Zathura(类vim操作)
Ubuntu下源安装: sudo apt-get install zathura 操作总结: 基本操作与vim一致,对于熟悉vim快捷键的十分方便: 向下移动一页是J(Ctrl+f),向上移动一页是K ...
- vim操作集合
Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...
- vim操作笔记
1.切换到下一个文件 假设要切换的文件名为 test.py :ex test.py 2.文档内复制命令 yy "复制光标所在行.或大写一个Y. 2yy "复制两行. y^ &quo ...
- vim 操作
vim -b test.bin vim 的 -b 选项是告诉 vim 打开的是一个二进制文件,不指定的话,会在后面加上 0x0a ,即一个换行符,这样若是二进制文件,则文件被改变了,后面多了一个0x0 ...
随机推荐
- React源码解析:setState
先来几个例子热热身: ......... constructor(props){ super(props); this.state = { index: 0 } } componentDidMount ...
- arcgis地图服务之 identify 服务
arcgis地图服务之 identify 服务 在近期的一次开发过程中,利用IdentityTask工具查询图层的时候,请求的参数中ImageDisplay的参数出现了错误,导致查询直接不能执行,百度 ...
- 自己动手搭建一个简易的SpringBoot环境
什么是springboot? Spring Boot俗称微服务.Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特 ...
- vi使用手册
VI是unix上最常用的文本编辑工具,我自己电脑上面也装了VIM编辑器,这个据称是程序员码字神器我实在没觉得那里舒服了,所以又用回了自己的Sublime.这里整理下vi常用操作,如果以后直接在Linu ...
- 网络编程之UDP编程
网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了Data ...
- linkin大话面向对象--属性详解
成员变量和局部变量 成员变量: 1.在一个类中,任何方法之外定义的变量: 2.从面向对象的思想来说我们又把实例变量看成一个类的属性. 3.实例变量在没有符初值时系统会自动帮我们做初始化 ...
- 解决ubuntu系统root用户下Chrome无法启动问题
由于ubuntu16.04系统自带的是Firefox浏览器,需要安装Chrome浏览器,但是在root用户下安装后发现,Chrome无法正常启动.安装及问题解决具体如下: 1. ubuntu上Chro ...
- PHP中变量的销毁
PHP的变量或对象的销毁可以分成显式销毁和隐式销毁: 1.显式销毁,当对象没有被引用时就会被销毁,所以我们可以unset或为其赋值NULL; 2.隐式销毁,PHP是脚本语言,在代码执行完最后一行时,所 ...
- shell第四篇(下)
摘自王垠的:Unix的缺陷 我想通过这篇文章解释一下我对 Unix 哲学本质的理解.我虽然指出 Unix 的一个设计问题,但目的并不是打击人们对 Unix 的兴趣.虽然 Unix 在基础概念上有一个挺 ...
- Gitlab备份与恢复[七]
标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 备份 配置文件中加入 gitlab_rails['bakup_path']='/da ...