gvim 常用快捷键

来源:互联网 发布:松江报警主机编程号 编辑:程序博客网 时间:2024/05/21 18:40

保存退出

    ZZ   保存修改并退出

   wq  保存修改并退出

    q!    强制退出,放弃修改

    w!  强制保存,不退出

    e!  放弃修改,重新加载原始文件,不退出

 

 

移动
%   在范围字符(括号, html标签等)首尾移动
{}  在空行之间移动
()  在段落之间移动, 包括空行
ctrl+e 单行向上翻滚
ctrl+u 半屏向上翻滚
gd 查找当前word定义的位置
fx 在当前行查找字符x
ddp 将上下两行调换
ctrl+o 依次沿着跳转记录往后跳转, 跳转至上次鼠标位置
ctrl+i 依次沿着跳转记录往前跳转

b, B 向前移动一个word或WORD


将光标移至括号内,按shift+v进入行选模式,然后

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



自定义:
alt+up 上移一行并调整缩进
alt+down    下移一行并调整缩进

命令行模式
ctrl+r+w    将当前光标的word拷贝到命令行中
ctrl+r+*    将系统剪贴板中的内容copy到命令行中
ctrl+r+=    表达式求值
ctrl+r+"    将buffer中的内容copy到命令行中
:g/xxx     列出包含xxx的所有行
:history    列出所有的历史记录
:his c     列出所有的行命令记录
:his s     列出所有的搜索记录
q:(/)     显示命令行的历史窗口


文件操作
:Exp 浏览文件夹
:Sex 分割窗口浏览文件夹
:args 查看当前打开的所有文件
:ls 显示缓冲区
:cd 显示当前文件夹

大小写转换
guu 将当前行全部小写
gUU 将当前行全部大写
Vu 将选中的行(单行或多行)全部小写
VU 将选中的行(当行或多行)全部大写
g~~ 将当前行小写的转换成大写, 大写的转换成小写

insert模式
ctrl+n(p)   自动补全
ctrl+w 回删一个word
ctrl+u 删除到行首(包括行首空白)
ctrl+t 向右缩进
ctrl+d 向左缩进
ctrl+h 对应Backspace键
ctrl+j 对应回车键
ctrl+m 貌似也是回车键

使用 Ctrl-O 就可以临时切换到 normal mode, 执行一个命令后自动返回 insert mode。

"{a-z} yy 将复制的行存储在[a-z]指定的存储器中

nG  移动到第n行
//  重复上一次/<regexp>搜索

编辑
x   删除当前光标文字
J   将下一行接到当前行末尾
rx  将当前光标字符替换为x 
.   重复前一个编辑操作命令, dd...会删除4行文字, J....可以连接4行文字
d   可以用来结合任何移动命令
dw  删除当前光标到下一个单词开始处的内容
d%  删除范围首尾字符之间的内容
d)  删除到下一个句子结束的位置
d}  删除当前段落的剩余内容
du  取消删除准备
I   在当前行开始插入
A   在当前行末尾开始插入
o   在当前行下新建一空行以供插入
O   会在当前上方新建一空行
cc  用空白行代替当前行内容
c$  删除当前位置到当前行结束内容
c0  删除当前位置到当前行开始内容
==  对当前行自动缩进
gg=G 对全文进行自动缩进
<<(>>) 对整行进行缩进

视图模式
ctrl+q 块选择

替换
:s/regexp/replacement/g 替换当前行
:%s/regrep/replacement/g    全文替换, 如果一行有多个匹配只替换第一个
:%s/regexp/replacement/gc   全文替换, 并在每次替换之前进行提示
:%s/str/\r/g 替换并换行


养成每次编辑之后随时按esc退出插入模式进入命令模式的习惯

能熟练使用各种组合命令是vi高手的一个标志

常用插件
calendar:
\cal 左边垂直位置打开日历
\caL 下面水平位置打开日历
:Calendar year month 根据制定的日期打开日历
t   回到今天
q   退出日历

MRU 最近打开的文件
:MRU 显示最近打开的文件列表

NERDTree 在左边显示文件目录
:NERDTree   打开NERDTree插件
o   展开折叠选中文件夹
t   在tab页打开选中文件
T   在后台标签页打开
!   执行此文件
p   到上层目录
P   到根目录
K   到第一个节点
J   到最后一个节点
u   回到上层目录
m   显示文件系统菜单
?   帮助

q   退出





===================================================================================================================================

用Gvim来编辑,编译c语言程序

编辑$home/.vimrc文件,没有的话创建一个.
     #一个tab代表四个空格
      1 set softtabstop=4
     #展开所有的tab键
     2 set expandtab
     #定义自己的make命令
     3 set makeprg=build apps_tcmd PRODUCT=BARBADOS
     #定义缩进为4个空格
     4 set cindent shiftwidth=4
      5
      6 "Make autoindent happen
      7 set autoindent
      8 "Show actual cursor position
      9 set ruler
     #高亮显示查到的字符
     10 set showmatch
     11 set showmode
     12 set showcmd
     #显示行号
     13 set number

     14


====================================================================================================================================

数字加减, CTRL-A, CTRL-X

—————-

vim里自动缩进一段
把光标移动到某个花括号,
按 =% 缩进整段。
把整段不按格式往外缩一个tab
>%
缩两个
>>%
往里缩
<%

注意%匹配很多东西,
如果你想从
#ifdef
缩到
#endif
也可如此

try :help c_CTRL-R
:help c_CTRL-D

<C-R><C-W>: 将光标下的keyword拷贝到命令行缓冲区中
<C-R>*: 从系统剪贴版中拷贝内容
<C-R>=: 表达式求值
<C-R>”: 拷贝buffer中的内容
….

<C-D>: 命令和文件提示
常用命令:
——————————
CTRL-Z      vim 切换到后台

:g/xxx      列出所有含 xxx 的行; 适合想到含 xxx 的某行, 但不知道行号,
/xxx 又太慢

q: q/ q?    编辑长命令时比较舒服, 执行按回车, 按 CTRL-C 再次进入
: / ? 原来的输入状态, 再按一次关闭.

CTRL-W=     所有窗口等高, 适合 diff 时自己移动了 window 大小
CTRL-Wo     等效于 :o nly
CTRL-Wc     等效于 :close!

gvim -u     用 NONE 的话必须大写, 可以用 nul 文件, gvim -u nul, 而且不
区分大小写

-s     执行脚本文件, 是 normal 时的指令, cmd 的命令要 :, 但不用加<CR>
-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 <tr> <\tr> 之间使用

对 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  对 <BS>
CTRL-J  对 <LF> vim 里叫 <NL>
CTRL-M  对 <CR>

不使用 ab:  输入 缩写 后, 按 ctrl-v 接着输入以后的字符
发信人: sysfree (虫), 信区: VIM
标  题: 插入模式下的命令汇总
发信站: BBS 水木清华站 (Wed Nov 17 14:36:29 2004), 站内

插入模式下有用的键盘命令:
(注意:以下命令都是在插入模式用的,也就是左下角要显示”–Insert–”)

CTRL-[ or CTRL-C: 退出插入模式。如果嫌<Esc>太费事,可以试试这个。
CTRL-A: 插入先前插入过的内容。看起来比较有用,但是飘忽不定,很难把握。
CTRL-N/CTRL-P: 搜索匹配,自动完成单词(超级有用)。
CTRL-R: 插入寄存器内容。例如<C-R>*会插入windows剪贴板的内容。:reg命令查看全部寄存器。
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: 同上,屏幕下滚一行


原创粉丝点击