| Vim 命令小抄 | original card by Laurent Gregoires redesign by brohan | ||||||
| 基本移动 | 插入模式 | 撤消,重做 | |||||
| h l j k | 左/右 移动一个字符;上/下 移动一行 | ^Vc ^Vn | 插入字符 c 的本义/十进制值 n | u U | 撤销最近的改动 / 恢复最近被改动的行 | ||
| b w | 向 左/右 移动一个单词 | ^A | 插入最近插入的文本 | . ^R | 重复最近的改动 / 重做最近撤销的改动 | ||
| ge e | 向 左/右 移动一个单词(光标在词尾) | ^@ | 插入最近插入的文本,并退出插入模式 | n. | 重复最近的改动 n 次 | ||
| { } | 移动到 前一个/后一个 段落开头 | ^Rx | 原样插入寄存器 x 的内容 | 寄存器 | |||
| ( ) | 移动到 前一个/后一个 句子开头 | ^N ^P | 补全关键字并作 正向/反向 查找 | ||||
| 0 gm | 移动到 行首/行正中 | ^W | 删除光标前的单词 | qc qC | 记录键入的字符,存入/添加到 寄存器 c | ||
| ^ $ | 移动到行 第一个非空白字符/行尾 | ^U | 删除当前行光标前所有输入的字符 | q | 停止记录 | ||
| nG ngg | 移动到第 n 行,默认到 尾行/首行 | ^D ^T | 左移/右移 一个缩进位 | @c | 执行寄存器 c 的内容 | ||
| n% | 移动到文件的 n 百分比处 | ^KC1C2 | 输入 \C1,C2\ 代表的二合字母 | @@ | 重复上次的 @c 操作 | ||
| n| | 移动到当前行的第 n 列 | ^Oc | 在临时命令模式执行命令 c | :@c | 将寄存器 c 的内容当作 Ex 命令来执行 | ||
| nH nL | 移动到窗口 顶端/底部 第 n 行 | ^X^E | 向上滚动一行 | :rg/p/c | 在范围 r 中找到匹配内容 p 时执行 Ex 命令 c | ||
| % | 匹配下一个项目(括号、方括号等……) | ^X^Y | 向下滚动一行 | 复合移动 | |||
| M | 移动到窗口的中间行 | 结束插入模式,回到命令模式 | |||||
| 编辑修改 | 复制 | - + | 上移/下移 一行,至第一个非空白字符 | ||||
| B W | 向 前/后 移动一个字串 | ||||||
| i a | 在光标 前/后 插入文本 | "x | 指定下次删除、抽出和放置使用寄存器 x | gE E | 向 前/后 移动一个字串(光标在末尾) | ||
| I A | 在 行首/行尾 插入文本 | :reg | 显示所有寄存器的内容 | n_ | 下移 n-1 行,至第一个非空白字符 | ||
| gI | 在第一列插入文本 | :reg x | 显示寄存器 x 的内容 | g0 | 移动到屏幕行第一个字符 | ||
| o O | 在光标的 下方/上方 插入新行 | ym | 抽出动作 m 跨越的文本 | g^ g$ | 移动到屏幕行 第一个非空白字符/最后一个字符 | ||
| rc | 把光标下的字符换成 c | yy or Y | 抽出整 行 | gk gj | 上移/下移 一个屏幕行 | ||
| grc | 类似 r,但替换的是虚拟字符 | p P | 放置寄存器内容到光标 之后/之前 | fc Fc | 移动到 后一个/前一个 字符 c 处 | ||
| R | 进入替换模式 | ]p [P | 类似 "p" "P",但调整当前行的缩进 | tc Tc | 移动到 后一个/前一个 字符 c 之前 | ||
| gR | 类似 R,但替换的是虚拟字符 | gp gP | 类似 "p" "P",光标停留在新文本之后 | ; , | 正向/反向 重复上次 "f"、"F"、"t" 或 "T" 命令 | ||
| cm | 更改动作 m 跨越的文本 | 复杂改动 | [[ ]] | 向后/向前 一小节,置于小节的开始 | |||
| CC or S | 更改当前行的内容 | [] ][ | 向后/向前 一小节,置于小节的末尾 | ||||
| C | 更改光标到行尾的文本 | g?m | 对动作 m 跨越的文本做 rot13 编码 | [( ]) | 向后/向前 至未闭合的 '(' / ')' | ||
| s | 更改一个字符并进入插入模式 | n^A n^X | 光标之上或之后的数值或者字母 +n/-n | [{ ]} | 向后/向前 至未闭合的 '{' / '}' | ||
| ~ | 切换当前字符大小写,同时光标前移 | gqm | 格式化动作 m 跨越的所有行 | [m ]m | 向后/向前 至java method的开始 | ||
| g~m | 切换动作 m 跨越文本的大小写 | :rce w | 将范围 r 中的行依据宽度 w 居中对齐 | [# ]# | 向后/向前 至未闭合的 #if, #else, #endif | ||
| gum gUm | 小写/大写 动作 m 跨越的文本 | :rle i | 将范围 r 中的行靠左对齐,缩进 i 列 | [* ]* | 向后/向前 至注释的 开始/结束 /* */ | ||
| <m >m | 左移/右移 动作 m 跨越的行 | :rri w | 将范围 r 中的行依据宽度 w 靠右对齐 | 查找替换 | |||
| n<< n>> | 将 n 行 左移/右移 一个缩进位 | !mc | 将动作 m 跨越的行用命令 c 过滤 | ||||
| 删除 | n!!c | 将 n 行用命令 c 过滤 | /s ?s | 向前/向后 查找 s | |||
| :r!c | 将范围 r 中的行用命令 c 过滤 | /s/o ?s/o | 向前/向后 查找 s,光标偏移量 o | ||||
| x X | 删除光标 后/前 的字符 | 可视模式 | n or / | 向前重复上次查找 | |||
| dm | 删除动作 m 跨越的文本 | N or ? | 向后重复上次查找 | ||||
| dd D | 删除 当前行/到行尾 | v V | 以 字符/行 方式开始(结束)高亮 | # * | 向后/向前 查找光标下的标识符 | ||
| J gJ | 连接两行 删除缩进、插入空格/直接连接 | ^V | 以列块方式开始(结束)高亮 | g# g* | 同 "#" / "*",但也查找部分匹配 | ||
| :rd | 删除范围 r 包括的行 | o | 交换高亮区域的开始处和光标位置 | gd gD | 跳转到光标下标识符的 局部/全局 声明 | ||
| :rdx | 删除范围 r 包括的行到寄存器 x | gv | 使用上一次的可视区域开始高亮 | :rs/f/t/x | 将范围 r 中的 f 替换成 t 选项 x: g-所有匹配项, c-确认替换 | ||
| aw as ap | 选择 "一个单词" / "一个句子" / "一个段落" | ||||||
| ab aB | 选择 "一个块" ( ) / "一个大块" { } | :rs x | 在新的范围 r 中以选项 x 重复上一替换 | ||||
未曾生我誰是我 生我之時我是誰 來時歡喜去時悲 合眼朦朧又是誰
2008年11月24日星期一
Vim Cheat-Sheet中文版
2008年11月20日星期四
三步简单制作Slackware启动U盘
本来Slackware 12.0已经提供了制作启动U盘的方法,但是我经过多次实验居然没有一次成功,做出的来的U盘根本不能启动。而且做完启动盘之后U盘变成了16M,想正常 使用还得再恢复,非常不方便。经过上个周末的研究之后,发现做个Slackware的启动U盘其实也很简单,而且不影响U盘正常使用,现将方法介绍如下。
第一步:准备好U盘。这一步非常关键,否则你的U盘根本没法启动。
假设你的U盘在Linux下是/dev/sda,可以用fdisk查看一下分区信息
fdisk -l /dev/sda
如果一切正常,就可以直接进行下一步了。
如果有问题,就用fdisk重建一下分区表。因为U盘在某些情况下,比如重新分区又在Win下格过等,可能会造成分区表有问题,这种情况不会影响U盘的基 本功能,就是这种U盘在任何系统还能正常访问并读写数据了。但是要想用这种U盘启动机器,就必须修复分区表。我这里用的最直接的方法:fdisk(注意事 先保存好U盘上的重要数据!)。我的U盘只有一个分区,FAT格式,fdisk完再mkdosfs就完事了。U盘嘛,没必要搞得太复杂。
第二步:复制必要的文件到U盘上,我这里是简单制作,最少只要两个文件就行了(一个内核,一个syslinux.cfg配置文件)。
内核可以直接用系统里现成的(如果是为了启动硬盘上的系统最好就用这个),也可以用Slackware安装盘kernel目录里的,你自己另外弄一个也 行;syslinux.cfg找个现成的改改或自己写一个就行。然后是initrd的镜像文件,如果想做个LiveUSB就必须要了,Slackware 那个usb-and-pxe-installers目录下的不错,嫌大的话可以用isolinux目录下的,或者自己用mkinitrd做一个。另外你还 可以搞几个提示文件,就是像Slackware做的启动盘里那个message.txt,f1.txt什么的。本来这些文件直接放到U盘里就行了,但是为 了不让U盘显得太乱,我给它们全放到一个目录里了,目录的名字是syslinux(也可以是/boot/syslinux,syslinux.cfg只能 放在这两个目录)。
我的syslinux.cfg文件
解释一下:
default bzImage initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw root=/dev/ram vga=771
这是默认是进入LiveUSB,跟Slackware安装盘启动后进的系统一样
display message.txt
这是启动后显示的提示信息
F1 f1.txt
这是按下F1键之后显示的内容
label mount
kernel vmlinuz
append root=/dev/hda1 vga=771 ro
这是进入硬盘上/dev/hda1安装的系统,也可以通过输入选项启动其它地方的系统(注意,我这里用了两个不同的内核,其实用一个也可以)
比如想启动另外一个盘/dev/hdb2上的系统
mount root=/dev/hdb2 ro
vga=771不用我解释了吧,可以自行修改,实在不行就用normal。
第三步:经过以上两步之后准备工作就全部做完了,再运行一个命令,如果没有错误提示的话就大功告成
解释一下,因为我没有mtools,所以用的是syslinux-notools命令,你完全可以选择syslinux命令;-d syslinux 选项是为了把生成的ldlinux.sys文件也放到syslinux目录下。这样所有的文件都在syslinux目录下,便于管理,在Windows下 再把这个目录设置为隐藏就更好了:)
写到这里就应该能算是完工了,可是我发现只成功了一半。上面的方法在我的64M优盘上完全没有问题,新买的2G优盘却启动不了。我怀疑可能跟 syslinux有关(哪位知道真正原因一定要告诉我呵),就改用lilo试了一下,这次总算成功了。方法大致跟前面一样,只是改用lilo引导,下面简 单介绍一下吧。
第一步同上。
第二步只是把syslinux.cfg改成lilo.conf,并且lilo.conf都可以不放到U盘上了。这次我把文件都放到了boot目录下。
我的lilo配置文件如下(注意:我是把U盘mount到/mnt/hd下的)
第三步:运行lilo,正常可能会有个警告信息,说sda不是第一个设备
这样所有的文件也都放到了boot目录下。
注:这是去年写的一篇旧文,当然现在有了更好的办法(比如GRUB和U盘量产),保存下来只是为了记忆一下当时的心情。
第一步:准备好U盘。这一步非常关键,否则你的U盘根本没法启动。
假设你的U盘在Linux下是/dev/sda,可以用fdisk查看一下分区信息
fdisk -l /dev/sda
如果一切正常,就可以直接进行下一步了。
如果有问题,就用fdisk重建一下分区表。因为U盘在某些情况下,比如重新分区又在Win下格过等,可能会造成分区表有问题,这种情况不会影响U盘的基 本功能,就是这种U盘在任何系统还能正常访问并读写数据了。但是要想用这种U盘启动机器,就必须修复分区表。我这里用的最直接的方法:fdisk(注意事 先保存好U盘上的重要数据!)。我的U盘只有一个分区,FAT格式,fdisk完再mkdosfs就完事了。U盘嘛,没必要搞得太复杂。
第二步:复制必要的文件到U盘上,我这里是简单制作,最少只要两个文件就行了(一个内核,一个syslinux.cfg配置文件)。
内核可以直接用系统里现成的(如果是为了启动硬盘上的系统最好就用这个),也可以用Slackware安装盘kernel目录里的,你自己另外弄一个也 行;syslinux.cfg找个现成的改改或自己写一个就行。然后是initrd的镜像文件,如果想做个LiveUSB就必须要了,Slackware 那个usb-and-pxe-installers目录下的不错,嫌大的话可以用isolinux目录下的,或者自己用mkinitrd做一个。另外你还 可以搞几个提示文件,就是像Slackware做的启动盘里那个message.txt,f1.txt什么的。本来这些文件直接放到U盘里就行了,但是为 了不让U盘显得太乱,我给它们全放到一个目录里了,目录的名字是syslinux(也可以是/boot/syslinux,syslinux.cfg只能 放在这两个目录)。
我的syslinux.cfg文件
代码:
default bzImage initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw root=/dev/ram vga=771
prompt 1
timeout 1200
display message.txt
F1 f1.txt
F2 message.txt
#F3 f3.txt
label mount
kernel vmlinuz
append root=/dev/hda1 vga=771 ro
default bzImage initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw root=/dev/ram vga=771
这是默认是进入LiveUSB,跟Slackware安装盘启动后进的系统一样
display message.txt
这是启动后显示的提示信息
F1 f1.txt
这是按下F1键之后显示的内容
label mount
kernel vmlinuz
append root=/dev/hda1 vga=771 ro
这是进入硬盘上/dev/hda1安装的系统,也可以通过输入选项启动其它地方的系统(注意,我这里用了两个不同的内核,其实用一个也可以)
比如想启动另外一个盘/dev/hdb2上的系统
mount root=/dev/hdb2 ro
vga=771不用我解释了吧,可以自行修改,实在不行就用normal。
第三步:经过以上两步之后准备工作就全部做完了,再运行一个命令,如果没有错误提示的话就大功告成
代码:
syslinux-nomtools -d syslinux /dev/sda
写到这里就应该能算是完工了,可是我发现只成功了一半。上面的方法在我的64M优盘上完全没有问题,新买的2G优盘却启动不了。我怀疑可能跟 syslinux有关(哪位知道真正原因一定要告诉我呵),就改用lilo试了一下,这次总算成功了。方法大致跟前面一样,只是改用lilo引导,下面简 单介绍一下吧。
第一步同上。
第二步只是把syslinux.cfg改成lilo.conf,并且lilo.conf都可以不放到U盘上了。这次我把文件都放到了boot目录下。
我的lilo配置文件如下(注意:我是把U盘mount到/mnt/hd下的)
代码:
boot = /dev/sda
#message = /boot/boot_message.txt
#prompt
timeout = 1200
compact
lba32
large-memory
# VESA framebuffer console @ 800x600x256
vga=771
install=text
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# LiveUSB bootable partition config begins
image=/mnt/hd/boot/bzImage
initrd=/mnt/hd/boot/initrd.img
label=LiveUSB
root=/dev/ram0
append="max_loop=255 init=linuxrc load_ramdisk=1 prompt_ramdisk=0"
read-write
# LiveUSB bootable partition config ends
# Linux bootable partition config begins
# 其它的自己加吧
# Linux bootable partition config ends
代码:
lilo -C /mnt/hd/boot/lilo.conf -m mnt/hd/boot/lilo.map
注:这是去年写的一篇旧文,当然现在有了更好的办法(比如GRUB和U盘量产),保存下来只是为了记忆一下当时的心情。
订阅:
博文 (Atom)