常用操作
1 | :g/profile/d |
安装
1 | # 可选源:http://mirrors.sohu.com/centos/5/os/x86_64/CentOS/ |
帮助
1 | help |
中文帮助安装
从http://vimcdoc.sourceforge.net/下载,或者直接http://sourceforge.net/projects/vimcdoc/files/vimcdoc/,解压后其中有个doc文件夹, 将其中的内容全部复制到~/.vim/doc, 或者vim安装目录下的doc目录中看解压出来的文件中的INSTALL文档。如果你是第一次接触vim,那么使用”:help tutor“或”:help tutor@cn“,你就会看到一个30分钟的vim教程
无插件Vim编程技巧
转自:无插件Vim编程技巧
跳转
1 | hjkl |
aaa
aaa
<!-- :E - 编辑,浏览目录
:cd <dir> – 改变当前目录
:pwd - 查看当前目录
:ls - 查看缓冲区
:buffer 4 - 打开指定浏览缓冲区
:He 上下分屏,全称为 :Hexplore
:Ve 左右分屏,全称为 :Vexplore
:set scb 分屏同步移动
:set scb! 解开分屏同步移动
窗口大小:[查看vim的`help split`]
CTRL-W + 扩大(高度)
CTRL-W - 缩小(高度)
CTRL-W _ 最大化(高度)
CTRL-W > 扩大
CTRL-W < 缩小
CTRL-W | 最大化
CTRL-W = 窗口等高等宽(恢复默认效果)
:q 退出
CTRL-W [jkhl] 鼠标转窗口
resize N 指定窗口高度,可以用于最小化窗口:resize 1
vertical resize N 指定窗口宽度
:Te Tab页浏览目录,全称是 :Texplorer
gt – 到下一个页
gT - 到前一个页
{i}gt – i是数字,到指定页,比如:5gt 就是到第5页
:tabs 打开的窗口和Tab的情况
vim -p cool.cpp shell.cpp haoel.cpp 用Tab页的方式打开多个文件
:mksession ~/.mysession.vim 保存会话
:mksession! ~/.mysession.vim 同名覆盖,强制保存
vim -S ~/.mysession.vim
:cw - Quickfix
:cp 跳到上一个错误
:cn 跳到下一个错误
:cl 列出所有错误
:cc 显示错误详细信息
:grep -r –include=”*.[ch]“ NGX_HTTP_VAR_INDEXED src/
字符相关
guu – 把一行的文字变成全小写。或是【Vu】
gUU – 把一行的文件变成全大写。或是【VU】
v - 键进入选择模式,然后移动光标选择你要的文本,按【u】转小写,按【U】转大写
ga – 查看光标处字符的ascii码
g8 – 查看光标处字符的utf-8编码
gf - 打开光标处所指的文件 (这个命令在打到#include头文件时挺好用的,当然,仅限于有路径的)
* 或# 在当前文件中搜索当前光标的单词
缩进相关
>> 向右给它进当前行 【<<】向左缩进当前行
= - 缩进当前行 (和上面不一样的是,它会对齐缩进)
=% – 把光标位置移到语句块的括号上,然后按=%,缩进整个语句块(%是括号匹配)
G=gg 或是 【gg=G】 - 缩进整个文件(G是到文件结尾,gg是到文件开头)
复制粘贴相关
v - 键进入选择模式,然后按h,j,k,l移动光标,选择文本,然后按 【y】 进行复制,按 【p】 进行粘贴。
dd 剪切一行(前面加个数字可以剪切n行),【p】粘贴
yy 复制一行(前面加个数字可以复制n行),【p】粘贴
光标移动相关
Ctrl + O 向后回退你的光标移动
Ctrl + I 向前追赶你的光标移动
这两个快捷键很有用,可以在Tab页和Windows中向前和向后trace你的光标键,这也方便你跳转光标。
读取Shell命令相关
:r!date 插入日期
上面这个命令,:r 是:read的缩写,!是表明要运行一个shell命令,意思是我要把shell命令的输出读到vim里来。
### 进行编辑的七种习惯
http://wenku.baidu.com/view/2bde7e21dd36a32d73758167.html
/pattern 正则查找定位
* 在全文中查找光标所在的词
% 从开始括号定位到对应关闭括号,对应项跳转
[{ 跳到代码段的起始{处
i 30i-Esc 插入,插入30个-字符,Esc键标记i命令的结束
gb 跳到变量的局部声明处
ctags ctrl-] 使用ctags
:s 使用sed进行较多文本的替换操作
* + cw 先*查找,然后使用cw命令替换,替换少量文本
ctrl-N 自动补全
宏 qa命令在a寄存器中录制宏,正常编辑,q退出宏录制并保存,使用@a重放宏。
:abbr 设定替换?确保修正?例如::abbr linuxx Linux 设定后,在编辑时会自动修正。
:grep 命令对一组文件进行模式搜索,vim把搜索结果做成一个列表,然后跳到第一个结果,使用:cn命令跳到下一个结果。
如果你想改变一个函数的参数个数,这个功能很有用。
[I: 把光标移到函数名下,然后敲[I: vim就会显示一个头文件中该函数名的所有匹配。
多窗口编辑 split vsplit tage 等命令
预览窗口preview-tag 可以打开一个特殊的窗口,光标还停留在你的编辑窗口,预览窗口可以是光标所指向函数的定义
选择一段文字,然后使用!sort,这可以调用外部的sort命令对它们进行排序。
vim提供:make命令用于编译,并把你带到错误处。
只要记住最常用的命令,用熟就可以了。
[Vim中的正则](http://www.cnblogs.com/penseur/archive/2011/02/25/1964522.html),很强大!
secureCRT颜色设置
options->session options->emulation->terminal选择linux(相应的服务器系统)ansi color 打上狗狗
options->global option ->appearance->ANSI COLOR->bold color ->里面的8种色彩就是服务器里文件相应的颜色,想改那只颜色点击就行了,比如目录的颜色是蓝色的,偶不想要蓝色,就点击蓝色,自己选择一种色彩,添加到自定义颜色
路径
~/.vimrc 配置文件
~/.vim/plugin
~/.vim/doc
~/.vim/syntax
~/.vim/syntax/c.vim
====================================================================================================
统一格式,修改~/.vimrc
该文件的一些配置
set helplang=cn
set encoding=utf-8
syntax enable
syntax on
colorscheme desert
注释使用"
开关
设置显示行号
显示行号 :set number 或 :set nu
去除行号 :set nonumber 或 :set nonu
兼容模式,兼容旧版的插件
set compatible
set nocompatible
打开语法高亮。
syntax enable on
设置自动缩进
set autoindent
设置制表符tab为8
set tabstop=8
设置统一缩进为8
set softtabstop=8
set shiftwidth=8
展开tab为空格
set et
set noet
设置增量和高亮搜索(编程很有用的)
set incsearch
set hlsearch
取消高亮搜索
set nohlsearch
搜索的时候不区分大小写
set ic
区分大小写
set noic
高亮当前行
set cursorline
这样光标当前行会有一个下划线
取消高亮当前行
set nocursorline
防止折行显示(把一行的最后一个单词折成两个部分显示在两行)
set linebreak
====================================================================================================
操作
:e d:\test.txt 打开文件test.txt
:e! 重新载入本文件
:! 执行命令
:s 应用sed
:w
:q
:%!xxd vi打开文件的模式就转变成二进制的模式了
:f 或者CTRL+G 显示当前打开的文件名
====================================================================================================
编辑
详细参考 http://vimcdoc.sourceforge.net/doc/visual.html
跳转 -- 扩展
h j k l 光标移动
y 拷贝
yy 拷贝行
nyy
:n1,n2y 命令行模式下,复制从行标n1开始n2结束所有行内容
yw 复制一个单词
d 删除
dd 删除行
ndd
:n1,n2d 命令行模式下,删除从行标n1开始n2结束的所有行内容
D 删除所选中部分所在的行
x 删除
r 替换
p 粘贴在光标后
P 粘贴在光标前
m 标记书签 mx 设置书签,x只能是a-z的26个字母
` 跳转到书签 `x 跳转到书签处("`"是1左边的键)
i 插入
I 在每一行所选中内容的开始前添加”字符串”改变文本
u 回退,撤销前一个操作
. 重复上一个编辑操作 无效?
Ctrl+R 还原被撤消的编辑操作。
a
f F t T 在当前行查找字符,查找后命令[;]可以继续查找
A 会在选中的块后面添加文本。它们是对齐的。 如果要在选中的块紧接每行末尾添加内容,则需用$来指定选择到行尾,而不是简单地用光标。
c 删除所选中的部分并切换到输入模式。
C 删除所选中的部分所在的行并切换到输入模式。
J 合并行 当选中想合并在一起的行以后,按下 J(大写)就可以了。
v 进入可视模式,以字符为单位选择。v,然后移动光标,就可以看到选择的块,再次按v,结束选择,被选的块放入了寄存器中,可以用p粘贴到你想要的地方。
V 进入可视模式,以行为单位选择。从按下V的那行起,一直到光标所移动到的行之间的所有行都被选中。
CTRL+V 块编辑,选择方框,再次按CTRL+V完成选择。块级别选择。
K 查看关键字的man page,以选中的文本为关键字
> 增加缩进,"x>"表示增加以下x行的缩进
< 减少缩进,"x<"表示减少以下x行的缩进
= 自动排列所选中的内容
~ 交换大小写(a -> A, A -> a)
U 将小写变大写(a -> A, A -> A)
u 将大写变小写(a -> a, A -> a)
esc 退出对应命令模式
* 在一个word上使用*,查找此word
其它
:n1con2 将行标n1的内容复制到行标n2的下面。
:n1,n2con3 将行标n1和n2之间的内容复制到行标n3下面。
:r 文件名 将文件所有内容复制到当前文件,插入到光标所在行下面。
CTRL+v 进入列块编辑
上下选中所要编辑行
大写I 进入插入模式
敲上在所编辑行前面要加的字符(这是会变成普通插入编辑方式)
Esc
(这里可能会有1-2秒的延迟)
五步做完后就在所有选中行前加上了相同的内容,很方便哦
查找
/string 向前搜索指定字符串
?string 向后搜索指定字符串
n 搜索指定字符串的下一个出现位置
N 搜索指定字符串的上一个出现位置
tabnew. 在当前目录打开
tabp 前翻页
tabn 后翻页
2gt
错误窗口 quickfix
:cw 打开
:cn
:cp
====================================================================================================
技巧
:g/^\s*$/d 删除所有空白行(^是行的开始,\s*是零个或者多个空白字符;$是行尾)
====================================================================================================
多次重复一组编辑操作。
那就是Vim为什么要引入命令记录的原因. 使用命令记录分三个步骤
1. 使用 "qa "命令开始, 后续的动作将被记录进名为a的寄存器中. 给出的寄存器名字必需是a到z之间的一个字母
2 执行你要执行的操作
3. 按下q以结束对命令的记录(注意仅仅是q一个字符, 不要键入多余的字符).
现在你可以通过 "@a"命令来执行刚刚记录下来的记录宏
示例:
qa 开始将后续的命令记入寄存器a
^ 将光标移动到行首
i\#include " <Esc> 在该行之前插入#include "
$ 移动到行尾
a " <Esc> 在行尾加上 "字符
j 移到下一行
q 停止记录
现在你已经将对第一行的操作完成了一遍, 对其它三行只需要执
行3次 "@ "命令 "@a "命令也可以加一个数字前辍1, 这会使该记录被回放由
该数字指定的次数. 在上面的例子中是:
normal mode command
3@a
## vundle 插件管理
<http://hahaya.github.io/2013/07/26/use-vundle.html>
### 安装
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
BundleInstall
PluginInstall
====================================================================================================
多个标签,每个标签一个文件
help tabe
tabn 下一个标签
====================================================================================================
help vsplit 打开多个窗口
====================================================================================================
标签
ctags通常系统默认安装,产生tags文件
ctags -R 对当前目录下所有源文件生成tags
vim中
:set tags=/home/wooin/vim71/tags
ctrl-], 光标会自动跳到setmouse()函数的定义处
ctrl-T, 这样又跳回
====================================================================================================
对齐
下载:http://www.vim.org/scripts/download_script.php?src_id=10110
安装:
vim Align.vba.gz
:so %
:q
使用
v 进入选择模式,选择要对齐的代码行,再快速按
\t= : align assignments (don't count logic, like == or !=)
\t, : align on commas
\t| : align on vertical bars (|)
\tsp : align on whitespace
\tt : align LaTeX tabular tables
:help align
====================================================================================================
插件: TagList
首先请先在你的~/.vimrc文件中添加下面两句:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
此时用vim打开一个c源文件试试:
$ vim ~/vim/src/main.c
进入vim后用下面的命令打开taglist窗口,
:Tlist
====================================================================================================
文件浏览器和窗口管理器 -- 插件: WinManager
====================================================================================================
s 字符串替换
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
====================================================================================================
格式化文件
粘贴到vim的代码,尤其是从WEB粘贴过来的代码,经常是一片混乱,看起来向右不断缩进造成的。
解决的办法是:
粘贴完毕使用命令:
gg=G
gg - 到文件开始处
= - 应用缩进
G - 直到文件尾
== 格式化当前行
====================================================================================================
处理粘贴时的缩进,也可以
命令,
set paste使得vim进入粘贴模式,则粘贴过来的内容能够保持原来的格式
set nopaste 关闭,默认
或者在vimrc中配置用F3来切换
"Paste toggle - when pasting something in, don't indent.
set pastetoggle=<F3>
====================================================================================================
文件编码
查询
:set fenc?
====================================================================================================
代码补全
ctrl+x, ctrl+o, ctrl+n, ctrl+p
====================================================================================================
drwxrwsr-x 7 dijk team 4096 4月 8 19:34 qingli
a) 这里的 s 属性有何作用?
set-uid位。当程序执行的时候,会改变执行权限,既设置了set-uid位后程序的执行权限变为文件所有者权限。
b) 属性字段后的数字 7 表示什么?
子目录的个数 包含. ..目录。
====================================================================================================
vim -b 以二进制方式打开文件
:%!xxd -g 1 切换成十六进制的一个字节的模式
vimdiff
=======
]c 跳到下一个不同的地方
[c 跳到上一个不同的地方
dp 将当前窗口光标位置处的内容复制到另一窗口
do 将另一窗口光标位置处的内容复制到当前窗口
zo 打开折叠
zc 关闭折叠
-->
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com