VI编辑器在linux下用的很多,我一直不怎么会,因为真的是记住命令太恐怖了,不是windows下的鼠标选择和ctrl+c +V什么的,挺不适应的。但要在linux下工作,那还是得了解,摘抄一下,以后可以查。
进入vi的命令
vi filename: 打开或新建文件,并将光标置于第一行首
vi +n filename: 打开文件,并将光标置于第n行首
vi + filename: 打开文件,并将光标置于最后一行首
vi +/pattern filename: 打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename: 在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename: 打开多个文件,依次进行编辑
移动光标类命令
h: 光标左移一个字符
l: 光标右移一个字符
space: 光标右移一个字符
Backspace: 光标左移一个字符
k或Ctrl+p: 光标上移一行
j或Ctrl+n: 光标下移一行
Enter: 光标下移一行
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: 向文件首翻一屏
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令
i: 在光标前
I: 在当前行首
a: 光标后
A: 在当前行尾
o: 在当前行之下新开一行
O: 在当前行之上新开一行
r: 替换当前字符
R: 替换当前字符及其后的字符,直至按ESC键
s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
S: 删除指定数目的行,并以所输入文本代替之
ncw或nCW: 修改指定数目的字
nCC: 修改指定数目的行
删除命令
ndw或ndW: 删除光标处开始及其后的n-1个字
do: 删至行首
d$: 删至行尾
ndd: 删除当前行及其后n-1行
x或X: 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u: 删除输入方式下所输入的文本
搜索及替换命令
/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索pattern
n: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换
选项设置
all: 列出所有选项设置情况
term: 设置终端类型
ignorance: 在搜索中忽略大小写
list: 显示制表位(Ctrl+I)和行尾标志($)
number: 显示行号
report: 显示由面向行的命令修改过的数目
terse: 显示简短的警告信息
warn: 在转到别的文件时若没保存当前文件则显示NO write信息
nomagic: 允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan: 禁止vi在搜索到达文件两端时,又从另一端开始
mesg: 允许vi显示其他用户用write写到自己终端上的信息
最后行方式命令
:n1,n2 co n3: 将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d: 将 n1行到n2行之间的内容删除
:w: 保存当前文件
:e filename: 打开文件filename进行编辑
:x: 保存当前文件并退出
:q: 退出vi
:q!: 不保存文件并退出vi
:!command: 执行shell命令command
:n1,n2 w!command: 将文件中n1行至n2行的内容作为command的输入并执行之, 若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command: 将命令command的输出结果放到当前行
寄存器操作
"?nyy: 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw: 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl: 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p: 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd: 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中
那现在知道删除一行是怎么处理了:d$ / 1dd / 3dd(3行)
复制内容:"a1yy / "a3yy
取出内容:"ap
进入vi的命令
vi filename: 打开或新建文件,并将光标置于第一行首
vi +n filename: 打开文件,并将光标置于第n行首
vi + filename: 打开文件,并将光标置于最后一行首
vi +/pattern filename: 打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename: 在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename: 打开多个文件,依次进行编辑
移动光标类命令
h: 光标左移一个字符
l: 光标右移一个字符
space: 光标右移一个字符
Backspace: 光标左移一个字符
k或Ctrl+p: 光标上移一行
j或Ctrl+n: 光标下移一行
Enter: 光标下移一行
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: 向文件首翻一屏
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令
i: 在光标前
I: 在当前行首
a: 光标后
A: 在当前行尾
o: 在当前行之下新开一行
O: 在当前行之上新开一行
r: 替换当前字符
R: 替换当前字符及其后的字符,直至按ESC键
s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
S: 删除指定数目的行,并以所输入文本代替之
ncw或nCW: 修改指定数目的字
nCC: 修改指定数目的行
删除命令
ndw或ndW: 删除光标处开始及其后的n-1个字
do: 删至行首
d$: 删至行尾
ndd: 删除当前行及其后n-1行
x或X: 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u: 删除输入方式下所输入的文本
搜索及替换命令
/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索pattern
n: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换
选项设置
all: 列出所有选项设置情况
term: 设置终端类型
ignorance: 在搜索中忽略大小写
list: 显示制表位(Ctrl+I)和行尾标志($)
number: 显示行号
report: 显示由面向行的命令修改过的数目
terse: 显示简短的警告信息
warn: 在转到别的文件时若没保存当前文件则显示NO write信息
nomagic: 允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan: 禁止vi在搜索到达文件两端时,又从另一端开始
mesg: 允许vi显示其他用户用write写到自己终端上的信息
最后行方式命令
:n1,n2 co n3: 将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d: 将 n1行到n2行之间的内容删除
:w: 保存当前文件
:e filename: 打开文件filename进行编辑
:x: 保存当前文件并退出
:q: 退出vi
:q!: 不保存文件并退出vi
:!command: 执行shell命令command
:n1,n2 w!command: 将文件中n1行至n2行的内容作为command的输入并执行之, 若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command: 将命令command的输出结果放到当前行
寄存器操作
"?nyy: 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw: 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl: 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p: 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd: 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中
那现在知道删除一行是怎么处理了:d$ / 1dd / 3dd(3行)
复制内容:"a1yy / "a3yy
取出内容:"ap
之前安装mysql都启动不了,今天安装却出奇的平静,没有出问题,看来选择一个好的安装包也是安装成功与否的因素了,呵呵。
首先是下载一个安装包,我是在这里下载的:
http://download.chinaunix.net/download/0008000/7159.shtml
我下载的版本是 5.0.40,之前下载过一个是 5.0.20 ,忘记在哪里下载的了,反正是安装完毕之后没法启动,提示是 不能通过'/tmp/mysql.sock'连到服务器 ,让我很是痛苦,总觉得是否哪个步骤错了,重新试过也没法。
说一下安装过程,一般而言,压缩包里面都有一个叫 INSTALL 的文本文件,打开看看就有安装过程的说明,一般按照说明就可以了,这次当然也不例外 ^_^
参考文件:INSTALL-SOURCE
不懂英文那就照着打就是了,很简单。
mysql安装完毕之后,就下载个phpmyadmin管理数据库,一切没有问题~~
有更懒的方法,在tar.gz文件的目录里面执行这个就可以了:
首先是下载一个安装包,我是在这里下载的:
http://download.chinaunix.net/download/0008000/7159.shtml
我下载的版本是 5.0.40,之前下载过一个是 5.0.20 ,忘记在哪里下载的了,反正是安装完毕之后没法启动,提示是 不能通过'/tmp/mysql.sock'连到服务器 ,让我很是痛苦,总觉得是否哪个步骤错了,重新试过也没法。
说一下安装过程,一般而言,压缩包里面都有一个叫 INSTALL 的文本文件,打开看看就有安装过程的说明,一般按照说明就可以了,这次当然也不例外 ^_^
参考文件:INSTALL-SOURCE
引用
The basic commands that you must execute to install a MySQL source
distribution are:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> bin/mysqld_safe --user=mysql &
distribution are:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> bin/mysqld_safe --user=mysql &
不懂英文那就照着打就是了,很简单。
mysql安装完毕之后,就下载个phpmyadmin管理数据库,一切没有问题~~
有更懒的方法,在tar.gz文件的目录里面执行这个就可以了:
tar xvfz mysql-5.0.40.tar.gz && cd mysql-5.0.40 && groupadd mysql && useradd -g mysql mysql && ./configure --prefix=/Data/apps/mysql && make && make install
cp support-files/my-medium.cnf /etc/my.cnf
cd /Data/apps/mysql && chown -R mysql . && chgrp -R mysql .
bin/mysql_install_db --user=mysql
chown -R root . && chown -R mysql var && bin/mysqld_safe --user=mysql &
cp support-files/my-medium.cnf /etc/my.cnf
cd /Data/apps/mysql && chown -R mysql . && chgrp -R mysql .
bin/mysql_install_db --user=mysql
chown -R root . && chown -R mysql var && bin/mysqld_safe --user=mysql &
linux系统安装过一次,在rpm管理里面有添加vsftp,可是死活不能连上并且上传文件,烦
后来重新安装了一次系统,连apache、mysql、ftp和php都不安装,甚至没有安装编译环境,决定拿自己开刀学习,这次安装ftp也是,重新下载一个。
vsftpd可以到官方网站下载到最新的:
号称曰:Probably the most secure and fastest FTP server for UNIX-like systems.
http://vsftpd.beasts.org/
我们公司网络有些是proFtpd,剩下的就是vsftpd为主了
安装过程也就是解压、编译、安装了,不啰嗦了,阿权发现了一篇很好的介绍,所以就懒得写了,自己碰到问题的时候就看看它吧,英文的资料也挺多的,可也不要拿那么多鸡肠为难我了
1.编译
cd vsftpd-1.2.1
make
2.安装前的准备工作
后来重新安装了一次系统,连apache、mysql、ftp和php都不安装,甚至没有安装编译环境,决定拿自己开刀学习,这次安装ftp也是,重新下载一个。
vsftpd可以到官方网站下载到最新的:
号称曰:Probably the most secure and fastest FTP server for UNIX-like systems.
http://vsftpd.beasts.org/
我们公司网络有些是proFtpd,剩下的就是vsftpd为主了
安装过程也就是解压、编译、安装了,不啰嗦了,阿权发现了一篇很好的介绍,所以就懒得写了,自己碰到问题的时候就看看它吧,英文的资料也挺多的,可也不要拿那么多鸡肠为难我了
1.编译
cd vsftpd-1.2.1
make
2.安装前的准备工作
最近有一个测试机,打算安装个服务器环境,以便可以在本地做测试用。想的就是下载回来之后,安装说明安装就可以了,只是没有想像中的容易,ftp软件安装了一直不知道怎么可以上传以及配置,mysql安装了,也还没办法启动,不知道啥问题。
幸好,apache安装好了,php也刚好今天可以OK,笔记笔记:
阿权的系统是 Red Hat Linux release 9 (Shrike)
(命令: cat /etc/redhat-release)
首先是下载文件了,到官方网站下载就容易了:
我下载的是 httpd-2.2.6.tar.gz 和 php-5.2.0.tar.gz
参考下载地址:
Apache:http://httpd.apache.org/download.cgi
PHP:http://www.php.net/downloads.php
.tar.gz文件是tar打包gunzip压缩的文件,一般这样解压 tar -zxvf ***.tar.gz
解压到当前文件夹,然后到文件夹后
./configure -> make -> make install
一般是这个步骤就完成一个软件的安装,但还需要些参数来做细节的调整
先安装apache:
apache2就安装到/usr/local/apache2目录了,并且启动,如果这个过程出错,那就需要调整一下了
顺利安装完后,可以配置一下apache的文档路径
DocumentRoot "/var/www/www.aslibra.com"
然后重启一下apache就可以了
阿权的机器随便配置了一下,发现第一步就出错了
细看了一下提示,看似是没法编译
于是想起来好像没有安装编译环境,汗死,赶紧在删除添加程序里面找:
添加开发工具和内核开发的软件包应该就可以了
apache2还算顺利,php的安装就困难了些
configure的步骤就提示我需要高版本的 libxml2-2.6 以上
于是去找相应的文件,建议可以到这个网站找一下缺少的文件:
http://download.chinaunix.net/
安装libxml的时候,又提示我需要 autoconf-2.60 ,于是又去找
幸好都能够找到,否则我就不玩了,哈哈
安装好autoconf,然后安装好libxml,就可以编译php啦
好不容易编译完毕,安装php文档里面的 INSTALL 做就可以了
谁知道启动的时候提示加载php5的模块的时候出错:
按操作都出错,还真的郁闷,菜鸟就是这样了,不过还是可以求救于网络的:
from:http://diyke.com/?uid-2-action-viewspace-itemid-1362
赶紧试试,发现还是出错,该文章说还有别的方法,我看了一下,可能是编译的时候没有清理的缘故:
先运行这两个命令清理一下:
make clean
make distclean
然后重新编译,于是PHP5也就OK啦~~
幸好,apache安装好了,php也刚好今天可以OK,笔记笔记:
阿权的系统是 Red Hat Linux release 9 (Shrike)
(命令: cat /etc/redhat-release)
首先是下载文件了,到官方网站下载就容易了:
我下载的是 httpd-2.2.6.tar.gz 和 php-5.2.0.tar.gz
参考下载地址:
Apache:http://httpd.apache.org/download.cgi
PHP:http://www.php.net/downloads.php
.tar.gz文件是tar打包gunzip压缩的文件,一般这样解压 tar -zxvf ***.tar.gz
解压到当前文件夹,然后到文件夹后
./configure -> make -> make install
一般是这个步骤就完成一个软件的安装,但还需要些参数来做细节的调整
先安装apache:
$ ./configure --prefix=/usr/local/apache2
$ make
$ make install
$ /usr/local/apache2/bin/apachectl start
$ make
$ make install
$ /usr/local/apache2/bin/apachectl start
apache2就安装到/usr/local/apache2目录了,并且启动,如果这个过程出错,那就需要调整一下了
顺利安装完后,可以配置一下apache的文档路径
DocumentRoot "/var/www/www.aslibra.com"
然后重启一下apache就可以了
阿权的机器随便配置了一下,发现第一步就出错了
细看了一下提示,看似是没法编译
于是想起来好像没有安装编译环境,汗死,赶紧在删除添加程序里面找:
添加开发工具和内核开发的软件包应该就可以了
apache2还算顺利,php的安装就困难了些
configure的步骤就提示我需要高版本的 libxml2-2.6 以上
于是去找相应的文件,建议可以到这个网站找一下缺少的文件:
http://download.chinaunix.net/
安装libxml的时候,又提示我需要 autoconf-2.60 ,于是又去找
幸好都能够找到,否则我就不玩了,哈哈
安装好autoconf,然后安装好libxml,就可以编译php啦
好不容易编译完毕,安装php文档里面的 INSTALL 做就可以了
谁知道启动的时候提示加载php5的模块的时候出错:
引用
undefined symbol: _zend_list_delete的错误
按操作都出错,还真的郁闷,菜鸟就是这样了,不过还是可以求救于网络的:
引用
许多朋友在装apache并使其支持php时,可能会遇到undefined symbol: _zend_list_delete的错误。
这是装了apache和php后,apache的配置文件httpd.conf中有启动php模块的语句
LoadModule php5_module modules/libphp5.so
而libphp5.so运行时找不到zend_list函数相关的库导致的。我从国外网站查了一些解决办法。我自己的办法是:装php时configure 加上--libdir=/usr/lib形如:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pear --with-mysql=/usr/local/mysql --libdir=/usr/lib
这是装了apache和php后,apache的配置文件httpd.conf中有启动php模块的语句
LoadModule php5_module modules/libphp5.so
而libphp5.so运行时找不到zend_list函数相关的库导致的。我从国外网站查了一些解决办法。我自己的办法是:装php时configure 加上--libdir=/usr/lib形如:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pear --with-mysql=/usr/local/mysql --libdir=/usr/lib
from:http://diyke.com/?uid-2-action-viewspace-itemid-1362
赶紧试试,发现还是出错,该文章说还有别的方法,我看了一下,可能是编译的时候没有清理的缘故:
引用
there may be some problem with the path to libc and other libs on your system.
per default php5 s configure script uses /usr/local/lib.
you might want to add some --libdir=/usr/lib to your ./configure
like
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pear --with-mcrypt --with-mysql --libdir=/usr/lib
to be sure it uses the new path do some
make clean
make distclean
before recompiling.
per default php5 s configure script uses /usr/local/lib.
you might want to add some --libdir=/usr/lib to your ./configure
like
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pear --with-mcrypt --with-mysql --libdir=/usr/lib
to be sure it uses the new path do some
make clean
make distclean
before recompiling.
先运行这两个命令清理一下:
make clean
make distclean
然后重新编译,于是PHP5也就OK啦~~





