日期:2014-05-16  浏览次数:20621 次

VI/VIM高级技巧征集中,欢迎大家来交流,谢绝灌水!
偶然看到2003年有这样的帖子。翻出来重贴!准备好好整理一下!
http://topic.csdn.net/t/20030429/18/1723102_2.html

:r !command

将command的输出插入到当前位置。

------解决方案--------------------
我常用的是gg=G,呵呵,整理代码格式
------解决方案--------------------
set foldmethod=indent
zR
zM
------解决方案--------------------
好贴 先占个座


------解决方案--------------------
楼上的折叠我也经常用
set foldmethod=indent "折叠方式设置
map <F2> zO<CR>

另外我不喜欢鼠标闪烁
set gcr=a:block-blinkon0 ""取消鼠标闪烁

另外还有同时看两个文件 :vsp
------解决方案--------------------
sp hello.c
------解决方案--------------------
查找的时候
set hls
然后*在要查找的字符上
------解决方案--------------------
复制n行
nyy

删除n行
ndd

找对应的{}
光标放在一个{}上,按'%',找到相对应的另一个{},

找单词
光标所在的单词上按'*' 可将此文件中光标所在的单词显示高亮,按N,n进行查找.

gg--->首行

G--->尾行




------解决方案--------------------
好多哀~
45G 跳到45行
G跳到最后一行
$行尾

......不知道自己说的高级不,我很菜
好像有本vim 101 hacks不错
------解决方案--------------------
ctrl+b 屏幕后翻动一页
ctrl+u 屏幕后翻动半页
ctrl+f 屏幕前翻动一页
ctrl+d 民间幕前翻动半页
------解决方案--------------------
n<enter> 光标下移n行
:e! 重新加载文件
:w [filename] 另存一个名为filename的文件
------解决方案--------------------
按 V 选中一些行,然后按 ‘=’ 这些代码就自动对齐了。
------解决方案--------------------
:g/a/s//b/g
把a替换为b
------解决方案--------------------
vim -d file1 file2 直接打开两个文件对比
CU这个帖子也是讨论这个的 已经10页了!
http://bbs.chinaunix.net/viewthread.php?tid=15797
------解决方案--------------------
探讨

楼上的折叠我也经常用
set foldmethod=indent "折叠方式设置
map <F2> zO<CR>

另外我不喜欢鼠标闪烁
set gcr=a:block-blinkon0 ""取消鼠标闪烁

另外还有同时看两个文件 :vsp

------解决方案--------------------
:copen 
:make
双击错误跳转到错误出现地方
------解决方案--------------------
整理这个还是有难度的。各种技巧太多了,如果不经常用很快就会忘了。看到哪个好用的,必须强化的多用几次才记得住。
不知道怎么算高级,随便贴一点吧:

w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏

------解决方案--------------------
再贴一点。有好多都没用过。刚才试了几个,挺好玩的,不过还是记不住

依字母顺序的vi快速参考
# (这里#代表一个数字) 执行n次后面的命令...
: 进入ex模式
) 下一句
( 上一句
} 下一段
{ 上一段
]] 下一节
[[ 上一节
0 行的开头
$ 行的末尾
^ 行的第一个非空白字符
+ 下一行的开头
- 上一行的开头
(空格) 下一个字符
(回车) 下一行
/ 向前搜索
? 向后搜索
% 查找当前小(中,大)括号的匹配字符
, 逆向重复上一个f,F,t或T操作
; 重复上一个f,F,t或T操作