我是用ssh远程登陆后在服务器上使用vi没有语法高亮,google后得到答案:
一:如过没有~/.vimrc的话,先创建该文件;
二:在文件中写入:
set autoindent
set cindent
set modeline
set ruler
set showcmd
set showfulltag
set showmode
set smartcase
set smartindent
set imcmdline
set previewwindow
set hlsearch
syntax on
set cindent
set modeline
set ruler
set showcmd
set showfulltag
set showmode
set smartcase
set smartindent
set imcmdline
set previewwindow
set hlsearch
syntax on
syntax on这一设置就是语法高亮显示,set autoindent是自动缩进,别的有待进一步查证
三:此时如果没有彩色显示的话
在/etc/profile中写入
export TERM=xterm-color
最常用VI指令及其使用技巧
理解VI关键是理解VI有两个状态(我个人认为):一个是命令状态,一个是编辑状态
两个状态的切换主要是下面插入文本类命令,VI刚进去是命令状态。
vi
============
vi filename: 打开或新建文件,并将光标置于第一行首
vi +n filename: 打开文件,并将光标置于第n行首
vi -r filename: 在上次正用vi编辑时发生系统崩溃,恢复filename
==============
w或W : 光标右移一个字至字首
b或B : 光标左移一个字至字首
e或E : 光标右移一个字至字尾
}: 光标移至段落开头
{: 光标移至段落结尾
nG: 光标移至第n行首
n+: 光标下移n行
n-: 光标上移n行
n$: 光标移至第n行尾
H: 光标移至屏幕顶行
M: 光标移至屏幕中间行
L: 光标移至屏幕最后行
0: 光标移至当前行首
$: 光标移至当前行尾
==============
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替换
========
:set number 将行号作为屏幕显示的一部分,但是行号并不是文件的一部分。它的缩写形式为:set
nu
:set nonumber 清除屏幕上的行号。也可以使用缩写形式:set nonu
:set showmode 在屏幕的右下角显示追加模式信息
:set list 在每行的行末显示美元符号,并用Ctrl+I表示制表符
:set showmatch 在输入)或]时,将光标移到与之匹配的(或[
:set window=value 定义屏幕上显示的文本行的行数
:set autoindent 自动缩进。也可以使用缩写形式:set ai
:set tabstop=value 设置显示制表符的空格字符个数。也可以使用缩写形式ts=value
:set wrapmargin=value 设置显示器的右页边。当输入进入所设置的页边时,编辑器自动回车换行
:set ignorecase 指示编辑器搜索字符串,并忽略目标中字母的大小写
:set 显示设置的所有选项
:set all 显示所有可以设置的选项
==============
:n1,n2 co n3: 将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d: 将 n1行到n2行之间的内容删除
:w: 保存当前文件
:e filename: 打开文件filename进行编辑
: wq 保存当前文件并退出
: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号删除寄存器中
VI命令的高级版本是VIM,操作基本一样。
下面是VIM配置文件的使用方法,比如自动缩进等功能可以加到这里面去:
在每个用户的主目录下,都有一个 vi 的配置文件".vimrc"或".exrc",用户可以编辑它,使这些设置
在每次启动 vi 时,都有效。
例如,加入如下设置行:
syntax on 使命令文本显示彩色
set nu 显示行号
set nonu 不显示行号
set ic 查找时不考虑大小写
set noic 查找时考虑大小写
set autoindent 设置自动缩进功能(对于编辑C++文档有用)
set softtabstop=4 tab键为4个字符