码迷,mamicode.com
首页 > 系统相关 > 详细

键盘是vim的舞台

时间:2015-07-16 00:32:44      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:

下面的命令仅指限于noramal mode
<ESC> : 进入Normal mode( Bee模式, 因为在某些情况下, 只能根据这一声Bee去判断是否在Normal mode )
 
` : go to mark, 跳到标记处, `x 将光标移动到标记x处
~ : 大小写转换,相当实用
 
 
! : external filter, 执行一个外部脚本, 并且将结果输入到当前光标所在处,
很适合拿来写log 吧
 
 
@ : paly macro, 执行宏, 比方说之前录好一个宏Q, 现在只要输入@Q 就可以执行了, @的前面接受数字参数, 3@Q就是执行3次宏Q
 
 
# : prev ident, 向上完整匹配光标所在处的单词, g# 向上部分匹配光标所在处的单词
 
 
$ : eol, 跳到光标所在行的行尾, 在正则表达式中$ 用来匹配一行的行尾, 1$等价于$, 2$表示移动到下一行的行尾, 以此类推
 
 
% : go to match, 当光标位于一个配对符号上面时, %可以跳到另一个配对的符号上
 
 
^ : "soft"bol, 跳到光标所在行的行首, 之所以称为soft是因为这里跳到的行首不包含空格, 注意和0的区别, 另外|也可以移动到行首
 
 
& : reapeat, 相当于执行ex命令:g, 即重复上一个全局操作, 如果用作替换, 这倒是比:s<ENTER>省了两个按键
 
 
* : next ident, 查找光标所在单词. 譬如hello, 那么相当于发出一条命令/\<hello\>, g* 向下部分匹配光标所在处的单词
 
 
( : begin sentence, 跳到当前光标所在句的句首
 
 
) : end sentenct, 跳到当前光标所在句的句尾
0 : "hard"bol, 跳到光标所在行的行尾, 和^ 不同, 0是包含空格的
 
 
_ : "soft"bol down, 往下跳到指定行的行首, 注意是"soft", 使用时前面必要一个数字参数, 2_ 代表跳到下一行行首, 关键是行首
- : prev line, 往上移动, 和K 的用法一样
 
 
+ : next line, 往下移动,和J 的用法一样
= : auto format, 有待补充
 
 
Q : ex mode, 进入到远古编辑模式, 当年的设备还只是字符设备, 注意这个键在window gvim被映射为gq 了
Command-Line : 命令行模式, 普通模式下按冒号(:)进入Command-Line模式,可以输入各种命令
Ex Mode : 普通模式下按Q进入Ex模式,其实就是多行的Command-Line模式
q : record macro, 录制宏, 例子qq, 就是录制一个宏, 这个宏的名字是q, 名字可以取任意字母, 这就意味着最多可以录制26个宏
 
 
w : next word, 下一个单词的开头
W : next WORD, 下一个"单词"的开头
 
 
e : next word, 下一个单词的结尾, 如果光标在本单词的结尾,则跳到下一个单词的结尾
E : next WORD, 下一个"单词"的结尾
 
 
R : replace mode, 具体参照prativalvim.note
r : replace char, 例子ra, 用a替换当前光标所在字符
 
 
T : back till, 反向寻找一行中的一个字符,并且跳到这个字符的前一个字符
t : back till, 正向寻找一行中的一个字符,并且跳到这个字符的前一个字符
 
 
Y : yank line, 复制一行, 和yy 一样
y : yank, 遵循 motion + movement 的模式, 自行补充数字参数
 
 
U : undo line, 很少用,撤销在一行上的所有操作
u : undo, 撤销上一个操作.
 
 
I : insert at bol, 在一行的行首插入
i : insert mode, 在光标前插入
 
 
O : open above,在光标所在行的上一行插入一行
o : open below,在光标所在行的下一行插入一行
 
 
P : put before, 可以在前面指定寄存器的名字, 譬如"1p , 就是将寄存器1的内容粘贴下来
p : put after
 
 
{ : begin parag, 跳到当前光标所在段的段首
[ : misc, 有待补充
 
 
} : end parag, 跳到当前光标所在段的段尾
[: misc, 有待补充
 
 
A : append at eol, 在一行的行尾后插入
a : append, 在光标后面插入
 
 
S : subst line, 替换一整行, 相当于cc
s : subst char, 替换光标所在字符, 相当于 cl
 
 
D : delte to eol, 从光标所在处删除到行尾
d : delete, 遵循 motion + movement 的模式, 自行补充数字参数, daw删除一个单词及其后面的空格, 即便光标位于该单词的中间, diw删除一个单词但不含空格, dj删除上一行, dk删除下一行格
 
 
F : "back" find char, 在一行中反向寻找字符
f : find char, 在一行中正向寻找字符
 
 
G : eof/goto ln, G跳到文件的末尾, nG跳到第n行
g : extra cmds:
gg 跳到文件的第一行;
ge 相当于反向的e;
gt 跳到前一个tab, gt接受数字参数, 2gt跳转到顺数第二个tab
gT 跳到后一个tab
gj 是按屏幕向下及向上移动
gk 是按屏幕向下及向上移动
g0 移动到屏幕行的行首
g^ 移动到屏幕行的第一个非空白字符
g$ 移动到屏幕行的行尾
 
 
H : screen top, 跳到当前屏幕的最顶行
h : 向左移动一个字符
 
 
J : join lines, 将光标所在行的下一行合并到光标所在行的行尾
j : 向下跳一行
 
 
K : help
k : 向上跳一行
 
 
L : screen bottom, 跳到当前屏幕的最底行
l : 向右移动一个字符
 
 
: : ex cmd line, 进入到命令行模式
; : repeat t/T/f/F, 重复这四个操作, 和, 相反
 
 
" : reg.spec, 寄存器空间, "2p就是取出第二个寄存器, 还有一种用法是采用字母命令的空间, 示例: "f4yy  复制四行到缓冲区f, "fp  把缓冲区中的文本粘贴到当前光标的下面
‘ : goto mk.bol, ‘‘ 跳回最后一次操作的行的行首, ‘x 将光标移动到标记x所在行的第一个字符
 
 
| : bol/goto col, 如果没有数字参数就跳到一行的开头, 如果有数字参数就跳到指定的列
\ : not used!,<leader>
 
 
Z : quit, 后面还要接一个参数, 目前知道ZZ相当于:wq, ZQ相当于:q!  z : extra cmds, 又一个leader, zt:scroll cursor to top, zb: bottom, zz:center
 
 
X : backspace, 退格并删除字符
x : delete char, 删除光标所在字符
 
 
C : change to eol, 从光标处一直删除到所在行的行尾,然后进入insert mode
c : change, 遵循 motion + movement 的模式, 自行补充数字参数
 
 
V : visual lines, 行选可视模式
v : visual mode, 字符可视模式
 
 
B 和 b : prev word, 跳到前一个word的第一个字符
 
 
N : prev find, 用/ 或者? 全文检索后,N使得光标跳到上一个匹配的word的首个字符
n : next find, 用/ 或者? 全文检索后,N使得光标跳到下一个匹配的word的首个字符
 
 
M : screen mid, 跳到当前屏幕的中间一行
m : set mark, 对文件中的某一行做标记, 比方m1 ,以后就可以用`1 快速导航到这一行
 
 
< : unident, 向左缩进一个制表位
, : reverse t/T/f/F, 执行倒序的操作
 
 
> : indent, 向右缩进一个制表位
. : repeat cmd, 重复上一个操作, 很实用
 
 
? : find(rev.), 反向全文检索, 如果你嫌弃高亮碍眼, :noh可以暂时消除高亮
/ : find, 正向全文检索
 
 
ex mode 下的常用命令:(如果说vim是上古神器, 那么ex就是远古兵器, 参考另外ex.note)
:w 保存
:q 退出
:q! 不保存并且退出
:e [filename] 打开文件filenme
:s/x/y/g 将整个文件中的x用y替换, g处可选的参数:g 表示替换该行所有的符合的目标字符串, p表示列印, c表示每次执行替换的时候都需要请求确认, 如果这个地方什么都不写,表示只是替换第一个匹配到的字符串, 还可以在s前面加上参数, 如:1,5s/x/y/g, 意思就是将1至5行的x替换为y
:h 打开vim的帮助文档
:new 在vim中新建一个文档, 具体Vim会开一个split
:sav 另存为
 
 
另外一些比较常用的命令
^R : redo(vim only)
^F : page down
^B : page up
^E : scroll line up
^Y : scroll line down, 同样在window gvim中被映射了
^V : block-visual mode(vim only)
 
 
关于tab的命令:
:tabnew   [++opt选项] [+cmd]文件 建立新的tab
:tabc      关闭当前的tab
:tabo      关闭所有其他的tab, 最后的字母o可以理解为only
:tabs      查看所有打开的tab
:tabp      前一个
:tabn      后一个
使用noraml mode下的 Ngt 来进行切换.
另外,如果需要在当前的tab页中也可以打开多个文件,文件之间用 ctrl + 6 来切换.
 
 
关于分屏的命令:
:vsp filename : 左右分割,并打开一个新的文件
:sp filename : 上下分割,并打开一个新的文件
:only : 只保留当前窗口,并杀掉其他窗口
 
ctrl+w c : 关闭当前窗口, 或者:q
Ctrl+W q : 关闭当前窗口,如果只剩最后一个了,则退出Vim
ctrl+w x : 将当前窗口和其他窗口调换位置
 
Ctrl+W l : 光标向右移动
Ctrl+W h : 光标向左移动
Ctrl+W k : 光标向上移动
Ctrl+W j : 光标向下移动
 
Ctrl+W L : 将整个分割窗口向右移动
Ctrl+W H : 将整个分割窗口向左移动
Ctrl+W K : 将整个分割窗口向上移动
Ctrl+W J : 将整个分割窗口向下移动
 
Ctrl+W + 增加高度
Ctrl+W - 减少高度
ctrl+w = : 让左右上下各个分屏宽度,高度均等
 
 
简单排版
:ce(nter)    居中显示光标所在行
:ri(ght)     右显示光标所在行
:le(ft)      靠左显示光标所在行
J            将光标所在下一行合并到光标所在行
>>           光标所在行增加缩进(一个tab)
<<           光标所在行减少缩进(一个tab)
n>>          光标所在行开始的n行增加缩进
n<<          光标所在行开始的n行减少缩进
 
 
vim在insert mode 下的快捷键
<c-w> delete a word in front of cursor
<c-h> delete a char
<c-u> delete all the words in front of cursor
<c-t> insert a tab in the head of current line
<c-i> insert a tab in front of cursor
<c-r> call register
<c-v> call register +
 
 
<c-o> 一发入魂
<c-[> <ESC>
<c-c> <ESC>
 
 
<c-p> 补全
<c-x> 补全
<c-n> 补全
<c-a> insert 上次进入insert mode 输入的内容
<c-s> :write
 
 
<c-z> <ESC>ui
<c-m> insert 一个 <CR>
<c-j> insert 一个 <CR>
<c-l> 我自己把它定义为将光标右移一个位置
<c-b> 未定义,可用
<c-f> 未定义,可用
<c-,> unknown
<c-.> unknown
<c-q> unknown
<c-e> unknown
<c-y> unknown
<c-d> unknown
<c-g> unknown
<c-k> unknown
<c-;> unknown

键盘是vim的舞台

标签:

原文地址:http://www.cnblogs.com/alfayed/p/4649757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!