欢迎和你们交流技术相关问题:
邮箱: jiangxinnju@163.com
博客园地址: http://www.cnblogs.com/jiangxinnju
GitHub地址: https://github.com/jiangxincode
知乎地址: https://www.zhihu.com/people/jiangxinnjuhtml
ctrl + opython
删除3104至5403行之间的内容:git
:3104,5403d
当光标处在函数名称时:按K便可进入函数说明(至关于man),也可使用nK制定man的级别github
打开一个文件,在该文件下复制几行到另外一个文件(如到test.txt),会覆盖目标中的内容vim
10,100w!test.txt
在该文件下复制几行到另外一个文件,但不会覆盖原内容,即追加windows
10,100w!>>test.txt
在一个文件中复制几行到缓冲区python3.x
"anyy
在另外一个文件中粘贴app
"ap
有时候从编辑器里面复制粘贴代码到vim中,代码格式会彻底乱套。其缘由是vim开启了smartindent(智能缩减)或autoindent(自动对齐)模式。为了保持代码的格式,在粘贴前能够先中止上面的两种模式,命令为:编辑器
:set nosmartindent :set noautoindent
为了一个粘贴搞出这么多事来,确实是麻烦。不过还有一个更加简单的方法,用命令开始粘贴模式,即:函数
:set paste
因为粘贴模式和上面的smartindent、autoindent模式是互斥的,而smartindent是不可少的,因此粘贴完后使用下面的两条命令之一来关闭粘贴模式。
:set nopaste :set paste!
另外还能够经过绑定自定义快捷键的方式来快速切换,例如将下面配置加入到.vimrc中
方式1:
set pastetoggle=<F4>
方式2:
:map <F8> :set paste :map <F9> :set nopaste
注意:方式1在阅读和编辑模式下均可以使用,对粘贴模式开启和关闭进行切换;方式2是在阅读模式下使用,按下相应的快捷键就至关于执行后面定义的命令。
vim 在插入模式下
:set backspace=indent,eol,start
或者:
set nocompatible
:0,$s/^/#/gc " 在行首加一个#号 :6,10s/^/#/gc " 在6~10行的行首加一个#号 :%s/^ *//g " 删除行首的空格 :%s/ *$//g " 删除行尾的空格 :%s/^\n//g " 删除空行 :g/^s*$/d " 删除空行
若是咱们想以第4列数据进行排序,能够在vim中如此作:
1,12!sort -r -n -k4.1,5 -r 降序排序 -n 按数字大小排序 -k,表示根据那个字段排序,4.1,表示第4列第一个字符开始 ,5表示到第5个字段为结束 -t 后面跟分隔符,缺省是空格
在VIM里面, 若是你要把从当前行如下20行按字母顺序排序
.,+20!sort
vim尚未启动的时候:在终端里输入
vim file1 file2 ... filen
vim已经启动,输入
:open file
同时显示多个文件:
:split :vsplit
文件间切换,对于用(v)split在多个窗格中打开的文件,这种方法只会在当前窗格中切换不一样的文件。
Ctrl+6—下一个文件 :bn—下一个文件 :bp—上一个文件
在窗格间切换的方法
Ctrl+w+方向键——切换到前/下/上/后一个窗格 Ctrl+w+h/j/k/l ——同上 Ctrl+ww——依次向后切换到下一个窗格中
网页经常会出现乱码的状况,通常都是编码设置不对形成的。例如一个网页源文件的编码不是utf8的,但声明为utf8<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
网页就会出现乱码。能够用vim修改源文件编码为utf8,命令是
:set fileencoding=utf-8
若是用vim打开文件时里面有乱码,可能用上面的命令修改文件后没法保存。能够用其余软件打开文件,而后把内容拷贝到vim里再保存就好了。
Vim/Gvim 在中文 Windows 下的字符编码有两个问题:
第一个问题的解决办法是在 ~/.vimrc 中加入如下配置:
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
第二个问题的解决办法是强制要求 Vim 的内部编码采用某种 UTF 编码。好比 UTF-8:
set encoding=utf-8
可是,把 Vim 的内部编码设为 UTF-8 会带来如下新问题
要解决非 GUI 界面的 vim 的乱码问题,须要设置终端编码为系统默认编码:
set termencoding=cp936
而要让提示信息不乱码则要须要使用 UTF-8 版本的提示信息:
language messages zh_CN.UTF-8
综上所述,在中文 Windows 下正确配置字符编码,须要把如下内容加入你的 ~/.vimrc 中
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 set encoding=utf-8 set termencoding=cp936 language messages zh_CN.UTF-8
:help leader
ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。好比,tags文件就是Taglist和OmniCppComplete工做的基础。
sudo apt-get install ctags
在程序的根目录下运行ctags -R,生成tags文件,而后在编辑程序时按Ctrl+]就会跳转到当前光标所在东西的定义处。如有多个tag,执行:ts,进行选择。按Ctrl+o便可跳回。不过,当修改过代码后,须要从新生成tags。
有时候要使用VIM打开了一些文件,可是在其余地方把次文件改动了,例如使用git进行checkout等操做,须要从新载入此文件。
1 从新载入当前文件:
:e :e! #放弃当前修改,强制从新载入
2 从新载入全部打开的文件:
:bufdo e 或者 :bufdo :e! :bufdo命令表示把后面的命令应用到全部buffer中的文件。
vim中大小写转化的命令是:gu或者gU,形象一点的解释就是小u意味着转为小写,大U意味着转为大写。接下来讲明对这两个命令的限定(限定操做的行,字母,单词)等等。
整篇文章大小写转换
打开文件后,无须进入命令行模式。键入
:ggguG/:gggUG
解释一下:ggguG分做三段gg gu(U) G
G=到文件结束
gU1G 从光标所在位置到文章第一个字符,都变为大写
map re: reduce 被映射的序列被递归映射 i: insert n: normal no: no
这里只讨论官方提供的windows版本的安装文件对python的支持配置,至于本身编译vim的状况,通常都很清楚python如何配置了,不在此讨论。官方提供的gvim安装文件默认是支持python和python3两种模式的,编译时带有该选项,但并无附带对应的运行库和运行环境.因此在本地没有安装python时直接在vim中执行
:py echo "ABCDE"
会提示没法加载python27.dll, 针对于这种状况,请到官方下载 windows 版本的 32位 的python 2.7.x 安装文件. 使用64位的python没法正常在gvim中使用。python3.x系列在某些vim相关插件中仍不支持,因此依旧推荐使用2.7.x
在vim的官方FAQ (http://vimdoc.sourceforge.net/cgi-bin/vimfaq2html3.pl)找到的:
格式化全文: gg=G
自动缩进当前行: ==
这个是原文节选:
14.6. How do I format/indent an entire file?
You can format/indent an entire file using the gg=G command, where
gg - Goto the beginning of the file = - apply indentation G - till end of file
For more information, read
:help gg :help = :help G :help 'formatprg' :help C-indenting
帮助文档:23.4
在 Normal Mode下执行:
ggvGJ
gg 用于跳到行首
v 转换成 visual 模式
G 跳到最后一行
J 合并行
:set autoread