用vim/gvim写程序

  写大程序用专用的IDE开发环境,写小程序用vim是一个相当不错的选择,特别是对于像我一样懒得动鼠标的人,
,vim几乎对所有语言都可以进行语法加亮,还支持代码的自动缩进,变量名的自动补全等等,用熟悉了真是得心应手.
配置.vimrc/.gvimrc文件(windows下是_vimrc):


set
backspace=indent,eol,start
set nocp
set cin "Enables automatic C program indenting
set sm "sm会在你敲},]或)显示出对应匹配的{,[或(来
set ai "自动对齐
set sw=4 "设置Tab宽度
syntax on "语法加亮
"以上配置对于一般使用已经足够了
 

常用操作(命令模式下):

X 直接进入当前函数或变量的 man

:make 直接编译

:source $VIMRUNTIME/syntax/2html.vim  将代码转成html,上面的彩色代码就是这样转的

ggVG= 整个文件自动缩进

:zf% 折叠函数

:zo 解开折叠

在函数中移动
[ [ = Go to previous first-column '{'; equivalent to ?^{

] ] = Go to next first-column '{'; equivalent to /^{

[ ] = Go to previous first-column '}'; equivalent to ?^}

] [ = Go to next first-column '}'; equivalent to /^}

{ = Go to previous blank line.

} = Go to next blank line.

gd = Go to definition of current local variable (current = cursor
is on it)

* = Go to next instance of current word

# = Go to previous instance of current word

'' = Go to location where last search was started.

括号匹配:
% 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去, 对花括号和
圆括号, 方括号都有效, 常用于手工检查括号是否匹对.

替换操作:

: [address] s//string/[g|c|N] (其中的N是一个整数值).
此命令查找由grep风格的正则表达式指定的匹配模式, 并将其替换为由
string指定的字符串, `address', `g', 和`N' 是对命令的补充选项, 它们分别
决定了命令的作用范围, 是只替换第一个匹配的字符串还是替换所有匹配的字符串,
只替换每行中第N次匹配的字符串.
g = Global: Replace all occurances of on the line.

c = Cond. Ask before making each replacement.

N = Nth Replace only the Nth occurance of on the line.

第N次 只替换在一行中第N个匹配的字符串(如:s/zhao/slimzhao/2, 而
当前行的内容是zhao zhao zhao, 则替换后的内容为zhao slimzhao zhao, 译
者注)

(如果没有指定这些辅助修饰标志, 则vim默认为只替换一行中第一个匹配的字符串
) (即等价于address1, address2s//string/1, 译者注)

[address values] -May be one specifier or two seperated by a comma. (below
, x represents an integer).

. = The current line

$ = The last line in the file

% = Entire file

x = The xth line of the file

+x = x lines after the current line

-x = x lines before the current line

逗号用于分隔任何上面指定的单个行, 以形成一个范围(当然, 这个范围的下界不
能小于上界, 如10,1为非法的范围, 此时vim会给出一个警告信息, 问你是否进行
反向操作, 如回答y, 则等价于1,10, 操作仍正常进行, 否则, 撤消当前操作,
译者注), 其后指定的操作将作用于此处给出的范围, vim帮助里有关于替换操作
的充分信息.


其它杂项
Vim有众多诱人的小功能, 这里不可能一一列出, 下面列出一些尤其值得注意的一
些特性.

包含文件搜索- `:h include-search'

书签设置- 'mx'用于设置书签, ''x'用于从书签返回;(其中的x可以为任何字母,
但, 只能记录当前文件里的书签) (退出vim后再次进入将不会保留这些书签,
书签就是代表在文件中某一特定位置的一种标记, 译者注)

"剪贴板" 缓冲- ' "xY ' 用于剪切或复制到一个名为x的缓冲区(Y 代表任何的
删除或取样命令), ' "xZ ' 用于粘贴内容(Z代表粘贴命令p 或 P); (其中x可以为
任何字母, 也可在跳转到另一文件中时继续生效(:e filename).
Comment Specifiers- ':h comments'

注释符- `:h comments'

<B>插件:</B>
ctags 在源代码目录执行:[/home/someuser/src]$ ctags *
就可以利用vim在不同函数跳转了。 启动vim时 vim -t 函数名 就可以跳到该函数
所在的文件的当前行,或在命令行输入,:ta 函数名 等效。或 Ctrl + ]跳到函数
定义处。

Tlist 可以生成函数变量列表
http://vim.sourceforge.net/scripts/script.php?script_id=273

一些命令或快捷键

v$从当前位置选择到行尾
V 选择当前行
v0 从当前位置选择到行首
viw 选择一个单词 
vis 选择一个句子
vi( 选择(括号内的内容,如果需要同时选择括号,va(
vts 从当前位置选择到这一行第一个s出现之前 vfs包含这个匹配的s
定位到一个(或者{或者[,然后v%,选中至匹配的括号


) 下一句
( 上一句
} 下一段
{ 上一段
]] 下一节
[[ 上一节
0 行的开头
$ 行的末尾
^ 行的第一个非空白字符
+ 下一行的开头
- 上一行的开
(空格) 下一个字符
(回车) 下一行
/ 向前搜索
? 向后搜索
% 查找当前小(中,大)括号的匹配字符
, 逆向重复上一个f,F,t或T操作
; 重复上一个f,F,t或T操作
. 重复上一个操作
` 转到标记处
' 转到标记所在行的开头
`` 查找前回到上一个做标记的地方
'' 查找前回到上一个做标记所在行的开头
~ 切换字符的大小写
" 保存到寄存器中
!! 重复上一次SHELL命令
! 把后面的文本送给命令, 取代输出(例如, !}fmt把当前的段落
送给命令fmt处理,然后用fmt返回的东西替换输出.)
>> 右移当前段落一个移动宽度(shiftwidth)
<< 左移当前段落一个移动宽(shiftwidth)
>% 从当前到匹配小(中,大)括号之间的文本右移
<% 从当前到匹配小(中,大)括号之间的文本左移
(似乎漏了一个符号|, 移动到某一列----译注)
a 在当前位置之后添加
A 在当前行的末尾添加
^a 没有使用
b 上一个单词的开头
B 上一个单词的开头,忽略标点符号
^b 上移一屏
c 覆盖...
C 覆盖到行末尾
^c 终止插入模式,在命令模式没有用
d 删除...
D 删除到行末尾     
^d 下移半屏,如果在插入模式下则移到上一个移动宽度(ShiftTab)处
e 单词的末尾
E 单词的末尾,忽略标点符号
^e 屏幕下卷一行
f 查找...
F 向后查找...
^f 下移一屏
g 未用
G ...跳至[缺省是到文件末尾]
^g 显示状态栏
h 左移
H 屏幕上的第一行
^h 在插入模式下是退格,命令模式下是左移
i 在当前的位置前面插入
I 在本行的第一个非空白字符前面插入
^i 插入模式下是制表键,命令模式下未用
j 下移
J 把下一行合并到本行
^j 命令模式下是下移,插入模式下是建一个新行
k 上移
K 未用
^k 未用
l 右移
L 屏幕中的最后一行
^l 重绘屏
m 把当前位置标记到寄存器中
M 屏幕的中间行
^m 回车
n 重复上次查找
N 逆向重复上次查找
^n 命令模式下是下移
o 在当前行的下面建一个新行
O 在当前行的上面建一个新行
^o 未用
p 在当前行的下面粘贴
(译注--应为在当前位置的后面粘贴)
P 在当前行的上面粘贴
(译注--应为在当前位置的前面粘贴)
^p 命令模式下是上移
q 未用
Q 退出并且启动ex
^q 未用
r 覆盖当前的字符
R 在插入模式下一直覆盖字符
^r 在命令模式下面重绘屏幕
s 替换
S 替换整行
t 到...
T 向后到...
^t 移到下一个移动宽度(shifttab)处
u 撤消上一次操
U 撤消对本行的所有修改
^u 上移半屏
v 未用
V 未用
^v 未用
w 下一个单词的开头
W 下一个单词的开头,忽略标点符号
^w 命令模式下未用,在插入模式下是到上一个单词的开头处
x 删除当前字符
X 删除前一个字符
^x 未用
y 复制...
Y 复制整行
^y 屏幕上卷一行
z 重新配置当前行周围的屏幕
ZZ 保存之后退出
^z 未用

:r <文件> 把<文件>读入到当前文档
:r !<命令> 把<命令>的输出插入到当前文本中
:nr <文件> 把<文件>插入到第n行
:!<命令> 运行<命令>,然后返回
:sh 转到SHELL
:so <文件> 读取<文件>,再执行文件里面的命令
(译注--文件中的命令应该都是一些ex命令)
 保存之后退出
:wq 保存之后退出
:l1,l2w <文件>把第l1和第l2行之间的文本写到<文件>中去,
如果没有指定<文件>,
vi就假定是当前文件,如果没有指定l1,l2,就假定是整个文件(就成了:w)
:w >> <文> 添加到<文件>末尾. 也可以使用行号
:w! 覆盖当前文件
:q 退出
:q! 不存盘就退出
:e <文件> 不离开vi编辑<文件>
:e! 重新编辑当前文件,忽略所有的修改
:n 编辑下一个文件
:e +n <文件> 从第n行开始编辑<文件>,如果超过了末尾,就从末尾开始编辑
:e# 编辑替换文件(如果使用了命令:e<文件>,替换文件就指的是原始文件)
:args 显示所有要编辑的文件
:rew 重新回到第一个编辑的文档
:map m n 创建一个宏(使 m 做 n)
:map! m n 创建一个插入模式的宏(使 m 做 n)
:unmap m 删除宏m
:unmap! m 删除插入模式的宏m
:ab <1> <2> 缩写,敲<1>的时候<2>取代
:unab <1> 取消缩写<1>
:set <选项> 设置<选项>..

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值