让思想和双脚带我去梦的远方
分类: LINUX
2015-01-31 21:14:41
保存退出
ZZ 保存修改并退出
wq 保存修改并退出
q! 强制退出,放弃修改
w! 强制保存,不退出
e! 放弃修改,重新加载原始文件,不退出
移动
% 在范围字符(括号, html标签等)首尾移动
{} 在空行之间移动
() 在段落之间移动, 包括空行
ctrl+e 单行向上翻滚
ctrl+u 半屏向上翻滚
gd 查找当前word定义的位置
fx 在当前行查找字符x
ddp 将上下两行调换
ctrl+o 依次沿着跳转记录往后跳转, 跳转至上次鼠标位置
ctrl+i 依次沿着跳转记录往前跳转
b, B 向前移动一个word或WORD
ib - 选中括号中内容,不包括括号
ab - 选中括号中内容,包括括号
i{ - 选大括号中内容,不包括大括号
a{ - 选大括号中内容,包括大括号
Gvim的整体缩进一段代码
1 “选中一段代码,< ”, 指的是在normal模式下使用shift+v 选中代码然后再“<”或者“>”
2 还有一种方法就是使用列模式, 在normal模式下使用ctrl+v选中要插入tab的位置, 然后使用“I"进入插入模式, 输入一个或多个tab即可.
3 如果是c语言的话, 一个最nb的功能就是自动排序, "="命令, shift+v选择全文件, 然后"="
要想单行自动对齐, 请使用"==".
缓冲区之间的切换
CTRL-^ 现实顺序切换
也可以在按键 CTRL-^ 前加数字,直接切换到以该数字为编号的缓冲区
如何把所有缓冲区的内容在不同的窗口中打开?
首先说的是,gVim里的窗口,不是Windows意义上的窗口,事实上这些窗口还是在gVim字符界面下的,打开所有buffer也是一个命令就能搞定:
:ball 或 :sball
如何设置,在试图切换到别的缓冲区时自动保存当前缓冲区的内容?
承接上面的问题,如果想在切换到别的缓冲区时自动保存当前缓冲区的内容,该如何做呢?因为,我们知道,如果不保存就想切换到别的缓冲区,gVim会一直报警当前缓冲区的内容没有保存,不让切换。
gVim提供了一个设置自动保存当前缓冲区的配置项:
:set autowrite
当前缓冲区已修改,不立即保存,但又想编辑别的缓冲区怎么办?
如果当前缓冲区还没有修改完成,又不想立即保存,但这个时候又要修改别的缓冲区的文件,这可怎么办呢?
别着急,这是编辑器的基本功能,gVim当然可以,这里只需使用 hidden 选项就可以了:
:set hidden
q 退出
===================================================================================================================================
用Gvim来编辑,编译c语言程序
编辑$home/.vimrc文件,没有的话创建一个.14
====================================================================================================================================
数字加减, CTRL-A, CTRL-X
—————-
vim里自动缩进一段
把光标移动到某个花括号,
按 =% 缩进整段。
把整段不按格式往外缩一个tab
>%
缩两个
>>%
往里缩
<%
注意%匹配很多东西,
如果你想从
#ifdef
缩到
#endif
也可如此
try :help c_CTRL-R
:help c_CTRL-D
….
常用命令:
——————————
CTRL-Z vim 切换到后台
:g/xxx 列出所有含 xxx 的行; 适合想到含 xxx 的某行, 但不知道行号,
/xxx 又太慢
q: q/ q? 编辑长命令时比较舒服, 执行按回车, 按 CTRL-C 再次进入
: / ? 原来的输入状态, 再按一次关闭.
CTRL-W= 所有窗口等高, 适合 diff 时自己移动了 window 大小
CTRL-Wo 等效于 nly
CTRL-Wc 等效于 :close!
gvim -u 用 NONE 的话必须大写, 可以用 nul 文件, gvim -u nul, 而且不
区分大小写
-s 执行脚本文件, 是 normal 时的指令, cmd 的命令要 :, 但不用加
-w 把所有按键记录 appedn 到指定文件中
-W overwrite
这 2 个适合不会 perl sed 的 vimer
–servername
–remote-silent 这 2 个搭配着用, 可以总在一个 vim 里打开新文件, 比如
gvim.exe –servername smarter –remote-silent test.text
命令太长, 可以自己 alias 一下(win32 下用 doskey 就可以)
再次选中 上次选中的内容, 用 gv
在选中的区域首尾跳动, 用 大写 O
:redi 把输出信息重定向, 比如 保存所有 set 选项到 剪切板
:redi @*
:se all
具体 :h redi
c\c++ 下常用的:
——————————
[[
]] 在 C 的 {} 形成的段落中移动 (在第一列 { 之间跳动,
一次一个函数,一个结构或类的定义)
[# 和 ]# 在 #if #else #endif 的上下位置间移动
[{ ]}
[( ])
[/ ]/ 在注释 /* */ 间移动
这样在这些块的中间位置, 就能迅速到块头和块尾
如果已经在这些行上, 如果不是到对应点,
会到上一级范围, 如 { 上按 [{ 到上一级
]} 则到对应点
(vim 里常用 [ 表示 "向上",
] 表示 “向下”,
比如上面的例子, 以及 [i ]i, diff 时候的 [c ]c 等)
% 在 () {} [] #ifdef #endif /* */之间跳转
可以 :so $VIMRUNTIME/macros/matchit.vim
这样可以在 if endif
对 1 个块的操作, 具体 :h v_a
里面的 iX aX 什么的都很好用
ctags 用 -a 附加新 tags 到 ctags 文件后
— 对 c
— ctags -R –c-types=+px d:\mingw\include (etags)
— 因为 ctags 确省不把函数声明作为 tag
— 对 c++
— ctags -R –language-force=c++ –c++-types=+px –verbose –extra=+q
extra=+q 用来增加生成 Class::member 的形式, 默认没有
这样就可以用 :ts CView::OnDraw 这种形式看
— 因为 c++ 一些头文件不用 .h 所以要用 –language-force
— 对 java
— ctags -R –languages=java c:/jdk131/src
— 要把 src.jar 展开
:che 检查 include 的文件在 path 中是否存在, 注意会递归验证
插入模式
——————————
insert 模式下的:
CTRL-W 回删一个 word, 具体 :h i_ctrl-w
CTRL-U 回删在当前行输入的内容
CTRL-R 用某个 reg 的内容
CTRL-E
CTRL-Y
0CTRL-D 这 2 个对缩进, 具体 :h i_0_CTRL-D
^CTRL-D
CTRL-C 退出 insert
另外, ascii 第 1 – 26 个对应的就是 CTRL-A 到 CTRL-Z
所以下面几个也常用
CTRL-H 对
CTRL-J 对
CTRL-M 对
不使用 ab: 输入 缩写 后, 按 ctrl-v 接着输入以后的字符
发信人: sysfree (虫), 信区: VIM
标 题: 插入模式下的命令汇总
发信站: BBS 水木清华站 (Wed Nov 17 14:36:29 2004), 站内
插入模式下有用的键盘命令:
(注意:以下命令都是在插入模式用的,也就是左下角要显示”–Insert–”)
CTRL-[ or CTRL-C: 退出插入模式。如果嫌
CTRL-A: 插入先前插入过的内容。看起来比较有用,但是飘忽不定,很难把握。
CTRL-N/CTRL-P: 搜索匹配,自动完成单词(超级有用)。
CTRL-R: 插入寄存器内容。例如
CTRL-T/CTRL-D: 将本行缩进/去缩进,无论光标在什么位置
CTRL-Q: 当CTRL-V不能用时,可以试试这个。
CTRL-Y: 输入和上面一行相同的字符。有时候可能用的着。
CTRL-E: 输入和下面一行相同的字符。
CTRL-X: 进入CTRL-X模式。
CTRL-X模式基本上是用来自动完成的。vim的自动完成可以包含当前文件、头文件、tag文件、字典文件等。
CTRL-X模式中的主要命令:
CTRL-X CTRL-L: 整行自动完成
CTRL-P/CTRL-N: 在当前文件中自动完成单词
CTRL-I: 在头文件中查找匹配的单词
CTRL-]: 在tag中补全单词
CTRL-F: 自动完成文件名
CTRL-D: 在头文件中查找宏定义
以上命令都可以再紧跟CTRL-P或CTRL-N,表示继续向前或向后搜索。
例如:按CTRL-X CTRL-L补全了一行,但不是自己想要的,可以继续按CTRL-L查找,也可以按CTRL-P或CTRL-N继续查找。找到后如果再按CTRL-X CTRL-L将会把找到的那一行的下面的行也复制过来,很过瘾吧?
下面两个命令也在CTRL-X模式,但是不属于自动完成:
CTRL-X CTRL-E: 在插入模式下让屏幕往上滚一行
CTRL-X CTRL-Y: 同上,屏幕下滚一行