Vim Tips

trim multi-newline into one newline :%s//(/n/)/+//1/igc

J 将下一行整行接至本行(Joint)。
ce(nter) 本行文字置中。注意是冒号命令!
  :ri(ght) 本行文字靠右。
  :le(ft) 本行文字靠左。
   所谓置中、靠左右,是参考 textwidth(tw) 的设定。
  如果 tw 没有设定,预设是 80,就是以 80 个字元为总宽度为标准来置放。
  当然您也可以如 sw 一样马上重设。

gqip 整段重排。中文会出槌!:-(
  gqq 本行重排。
   重排的依据也是 textwidth。这里的重排是指您键入文字时没有按 Enter 键,
  就一直在 keyin,这样会形成一个很长的一行(虽然萤幕上会替您做假性折行),
  重排后,则会在每一行最后加入 EOL。gq 重排功能是 vim 才有的功能。


问题来了!忘记谁是谁的时候怎么办? :reg(冒号命令)就
  会列出所有 registers 的代号及内容。您现在就试著按看看
  咦!怎么还有数目字、特殊符号的缓冲区,原来您刚刚删除
  (复制)的内容就预设放在 " 这个缓冲区,然后依序是
  0,1,2,...9。也就是说您按 p 不加什么的话,是取出 " 缓
  冲区的内容的。% 指的是目前编辑的档案,# 指的是前一次
  编辑的档案。还有其它的呀!因为没什么重要,就请
  :h registers 吧!registers 有个 "s" 结尾,不要搞错了,

天大的指令
  . 这是什么?ㄚ,是英文句点啦!没错,就是英文句点。什么意思?重复前次的编辑动作。这个指令太高

明了,只要是编辑动作(移动游标不算,冒号命令也不算)都可以按英文句点来重复,要重复几次都可以。

例如:您按了 yy,然后按 p 就会复制、贴上一整行,如果要重复这个动作的话,就可以按 . ,也可以把游标

移到其它地方后再按。其它 dd,dw,r,cw 等编辑指令都可以这样来重复。如果您要重复做某些编辑动作时,

千万千万一定要想到有这么一个英文句点重复指令。ㄚ,拜托啦!您一定要常用这个指令。

* 寻找游标所在处之 word(要完全符合)。
  # 同上,但 * 是向前(下)找,# 则是向后(上)找。
  g* 同 * ,但部份符合即可。
  g# 同 # ,但部份符合即可。
   n,N 之继续寻找键仍适用。
  

替换(substitute)
  :[range]s/pattern/string/[c,e,g,i]

range 指的是范围,1,7 指从第一行至第七行,1,$ 指从第一行至最后一行,也就是整篇文章,也可以 % 代表


   还记得吗? % 是目前编辑的文章,# 是前一次编辑的文章。

vim 对于书签的扩充功能


  小写字母 只作用于单一档案内。
  大写字母 可作用于编辑中之各档案间。
  数目字 可作用于前次编辑的十个档案。
   数目字的用法比较特殊,'0 是回到前一次编辑档案中离开
  前的最后位置,'1 则是回到前二次编辑档案的最后位置,
  依此类推。您不必使用 m 来标示,vim 会自动记忆。
  很玄吧!其实这是 viminfo 的功能,您要认真追究的话,
  请 :h viminfo-file-marks。viminfo 关掉,就没这个功能了!


:n 编辑下一个档案。
  :2n 编辑下二个档案。
  :N 编辑前一个档案。
   注意,这种用法只能用于 argument list 的情形。

:e 档名 这是在进入 vim 后,在不离开 vim 的情形下再开其它档案。只要您要编辑的档案是在目前目录,Tab

补全键还是可以使用。
  :e# 或 Ctrl-^ 编辑前一个档案,用于两档互相编辑时相当好用。
   这种用法不管是 argument list 或 buffer list 档案间皆可使用。


v 小写 v 这是属于字元标示(character visual),按下 v 后您就可以移动游标,游标走过的地方就会标示

起来。再按一次 v 就会结束 v-mode。您用 mouse 拉出的标示区也是属于这类的标示。
  V 大写 V 这是行标示(line visual),按下 V 后会整行标示起来(包括空白的部分),您移动上下键,

会标示多行。mouse 连按三次左钮,也是属于此类的标示。再按一次 V 就会结束 v-mode。
   mouse 按两次左钮是标示一个 word。
  

Ctrl-v 这是方块标示(block visual),可纵向标示矩形区域。再按一次 Ctrl-v 就会结束 v-mode。
   结束 v-mode 的方式亦可使用 Esc 键,或一使用 Ctrl-c。
  windows 系统下 Ctrl-v 是复制键,可以使用 Ctrl-Q 来替代。

*************************************

h,j,k,l,w,b等等)或者是指行号.
# (这里#代表一个数字) 执行n次后面的命令...
: 进入ex模式
) 下一句
( 上一句
} 下一段
{ 上一段
]] 下一节
[[ 上一节
Ctrl-O temporary change insert mode into normal mode

'a,'bs/aa/AA/  change aa to AA in the range of mark a and mark b

Ctrl-w delete a word backword in insert mode
Ctrl-u delete current line backword in insert mode

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 未用
(译注--在命令模式下,^z执行了UNIX暂停操作)
6.1 - 命令模式的输入选项(:命令)
(注: 这不是一个规范的列表,, 我只是列出了一些最重要的命令)
: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 <选项> 设置<选项>...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值