Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26092
  • 博文数量: 19
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 187
  • 用 户 组: 普通用户
  • 注册时间: 2015-10-14 16:24
文章分类

全部博文(19)

文章存档

2015年(19)

我的朋友

分类: LINUX

2015-11-10 10:58:21

1、光标定位快捷键:

H -> 光标定位到屏幕上方

M -> 光标定位到屏幕中间

L -> 光表定位到屏幕下方

b -> 光标向前移动上一个单词词头

B -> 光标向前移动一个big-word的单词词头

e -> 光标向后移动下一个单词的词尾

E -> 光标向后移动下一个big-word的单词词尾

w -> 光标向后移动到下一个单词的词头

W -> 光标向后移动到下一个big-word的单词词头

u -> undo 取消操作

Ctrl+r -> redo 恢复操作

r -> 在命令模式中,覆盖当前字符

R -> 进入编辑模式,覆盖当前字符,也就是替换模式

Ctrl+t -> 在编辑模式,向右缩进一格

Ctrl+d -> 在编辑模式,向左缩进一格

 

2、当前行定位快捷键:

zt -> 把当前行放到屏幕的最上方

zb -> 把当前行放到屏幕的最下方

zz -> 把当前行放到屏幕的中间

3、光标不动,屏幕上翻,下翻:

Ctrl + e:光标不动屏幕上翻

Ctrl + y: 光标不动屏幕下翻

4、在命令模式,增加/减少数字:

Ctrl + x:使光标下的数字做减1操作

Ctrl + a:使光标下的数字做加1操作

5、函数名字匹配:

Ctrl + x Ctrl + p:在输入模式,写出一个不完整的函数名字后,按ctrl+x

ctrl+pvim自动向上匹配函数名字,如果名字不对,继续按ctrl+p

Ctrl + x Ctrl + n:在输入模式,写出一个不完整的函数名字后,按ctrl+x

ctrl+nvim自动向下匹配函数名字,如果名字不对,继续按ctrl+n

6、单词操作:

yaw: 复制一个单词 caw: 修改一个单词

daw: 删除一个单词

VIM中用iw或者aw表示一个单词,两者稍有区别。

viw:选择光标所在的单词(v进入visual模式,然后iw

yiw:复制光标所在的单词

查找的话就是两个很常用的明令:# *

7、在输入模式怎么方便的执行命令模式才可以运行的命令:

Ctrl + o:在输入模式,可以运行在命令模式下执行的命令

8Visual模式:

v: 在命令模式按v,进入视图模式,用hjkl 进行选择,

然后通过ycd进行复制,剪切,删除操作

Ctrl+v: 块选择

Shitf+v: 整行选择

gv: 选择上一次选择的块

怎么在100行代码前加上//呢?

a、把光标定在这100行代码的首位置;

bCtrl+v99+j,这样就选中了这100行代码第一列

c、通过I(大写的i),进入插入模式,并且是光标定在第一行的行首

d、输入//,然后按 ESC键,奇迹出现了,下面的99行全自动加上了//

9、字符串替换

:1, $ s/niu/jie/gc: 从第1行到文件结尾,将其中含niu字符串的替换为jie

每替换一个均有询问是否替换

gc也可以用?来替换,:1, $ s/niu/jie/?(但是我没实验成功)

询问:replace with /niu (y/n/a/q/l/^E/^Y)?,按y便替换了

:%s/niu/jie/g: 将个文件中含有niu字符串替换为jie,不询问是否替换

斜杠可以换成任意的字符,比如:+-

举例:

:%s+niu+jie+g 将全文件中三个字符”niu” 替换为”jie

: %s-jie-/niu-g 将全文件中三个字符”jie” 替换为”/niu

10、窗口分裂

:vsplit 将窗口竖着分裂出一个,其简写 vsp

:split 将窗口水平分裂出一个,其简写 sp

:new filename split相同

怎么在窗口间移动光标呢?

Ctrl+w后,按hjkl进行上下左右窗口移动光标。

也可以

:set mouse=a:打开鼠标动作,然后用鼠标进行选择窗口

Ctrl+w+t 切换到顶部的窗口

Ctrl+w+b 切换到底部的窗口

Ctrl+w+p 切换到我们进行切换操作以前我们所在的窗口

11、过滤命令

:!

:!xxd 将文件以16进制显示

:1,5:xxd 将第1行到5行以16进制显示

:%!sort n 按数字排序

:!awk '{ print $1 }' gmsisdn.conf > tfile 将文件中第一列的值保存到tfile

:!ls ls命令一样

12、折叠

zf: 将选中的行折叠为1

zr: 将折叠的行打开;l (向右键)也有打开折叠的功能

zd: 删除折叠

不免有这个疑问:如何把fold一次全部打开?

答案:zR 或者 :set foldlevel=999

13、在函数中查找man手册

 

 

K: 光标定位在函数名字上,按下K,则自动跳转到man手册里,

退出后仍然回到函数中

14、将程序挂起

Ctrl + z:将文件挂起

fg: 返回

15、看历史记录

q/:在命令模式输入q/vim会列出搜索的记录

q::在命令模式输入q:vim会列出冒号模式中操作的记录

16、比较两个文件不同

vi -d file1 file2

17map命令

首先 /string 搜索一个字符串

然后 :map ndd

这样,在按F4键,就可以删除含有string字符串的行

18make的一个命令

make -j n+1: 其中nCPU的个数

19CTRL-D命令

0Ctrl+d: 命令以后,光标会回到第一列,而且下一行也是从第一列开始的

^Ctrl+d: 命令只会将当前行的光标放在第一列.当我们开始下一行时,

这种缩进形式又会自动的执行

20、关闭文件,打开一个新的文件,又想看上次编译的那个文件怎么办?

Ctrl+o Ctrl+o: 按两次Ctrl+o就可以了

21、复制和粘贴

复制

方法1 num+yy,复制num

方法2: 先ma标记当前位置为a

再将光标移动到新的位置;

然后y`a复制从标记位置a到当行的内容。

方法3: 按vVCtrl+V进入visual模式,移动光标选择一段内容,按y

三者的区别:

v以字符为单位,V以行为单位,Ctrl+V是块选择。

这个方法只在VIM下适用。

粘贴

pP:前者粘贴到光标后面,后者粘贴到光标前面。

22、 如何在多个文件中进行替换?

一般可以用sed或者vim来做。比如要对当前目录下的*.c文件进行替换:

方法一:

for i in *.c; do

sed ''s/oldvalue/newvalue/g'' $i

done

方法二:

vim *.c

:argdo %s/oldvalue/newvalue/g

方法三:

创建一个脚本文件change_str_infile.sh,将下面内容输入,保存,并使用chmod

+x change_str_infile.sh,使之具有可执行权限;

$: change_str_infile.sh old_str new_str

#!/bin/bash

#

#change_str_infile.sh

#

# Get List of Files to Be Replaced

#file_list=`find path -name "*" -type f `

#file_list=`find $1 -name "Root" -type f `

file_list=`find $1 -name "*" -type f `

# Perform Substitution

old=$2

new=$3

for fn in $file_list

do

ffnt="$fn.temp"

echo "Processing $fn ...... "

sed "s/$old/$new/g" $fn > $ffnt

mv -f $ffnt $fn

done

这样就将多个文件中的old_strnew_str替换了。

23、如何计数搜索的字符串?(蓝色的是经过我测试的)

如果需要统计缓冲中一个模式(pattern)出现的频率,需要把 ''report'' 置为0,然后用替

换命令把模式替换成它自己。Vim 报告的已替换的数目就是模式出现的次数。例:

:set report=0

:%s/./&/g characters个数

:%s/i+/&/g words

:%s/^ lines

:%s/the/&/g "the" anywhere

:%s//&/g "the" as a word

你可能希望复位 ''hlsearch'' 或者使用 ":nohlsearch"

24、如何去掉高亮搜索?

方法一::nohlsearch

方法二:/awertgvcxz (查找一个肯定不存在的字符串)

设置了高亮搜索(:set hlsearch)以后,可以通过 :set nohlsearch 永久地关闭

高亮显示,也可以通过 :nohlsearch 暂时关闭高亮显示,下次搜索时将自动恢复高亮。

25、如何快速插入多行数字0-99

目的:要往文件test.c中插入0-99这一百行数

步骤:

avi tmp

b、将代码

let i = 0

while i < 100

put = i

let i = i + 1

endw

输入,并保存退出;

cvi test.c

:source tmp

也可以:

avi test.c

b:let i = 0

:while i < 100

……

:endw

在冒号模式下,输入上述命令;

如果位数不足需要在前面补零,可以用Ctrl-V块选择,然后I插入0

26、如何设置中文编码?

.vimrc中作如下设置,可以实现界面以及显示字体采用gb2312,遇到utf8文件时自

动做转换:

set encoding=prc

set fileencoding=prc

set fileencodings=utf8,prc

需要注意的是,按照上面的设置,如果你打开一个空的(0字节)或者是纯7bits的文

件,这时VIM将认为是utf8编码的文件,如果你往里面输入中文,存盘的时候也将是utf8。因

此你可能需要在存盘之前 :set fileencoding=prc 把编码改回来。另外,对于纯7bits的文

件,由于认成了utf8,每次打开存盘的时候都要做一次转换,会比较慢,所以如果你很长一

段时间不会接触utf8的话,可能暂时把 fileencodings一行注释掉比较好。[警告]:转换可能

会造成信息丢失!如果你需要编辑的是重要的系统文件,最好把fileencodings 一行暂时注

释掉。

27、 如何去掉或者插入^M这样的字符?

VIM的插入模式或者命令行中用输入^M这样的特殊字符,例如输入

:s///g

实际显示是

:s/^M//g

就可以去掉文件中所有的^M。同理,要在文件中输入^M只要按即可。

这个问题往往发生在WINDOWS/DOS系统和UNIX系统之间交换文件时,因为这两类系

统对于文本的“换行”概念解释不同。所以,还有一个解决方法就是对这类文本进行转换。

vim内部就可以做这件事情。首先打开文本,然后set fileformat=unix再从新保存该文件覆

盖原文件就可以去除:^M了。

28、如何整体缩进一段代码(插入tab)?

选中一段代码,< > 2< 3> ……

29、如何合并两行?

合并两行的键是 J

另外,如果你设置了set backspace=2

你就可以用backspace或者delete很方便的删到上一行或者下一行。

30、如何设置缩进距离(tab宽度)?

set tabstop=8

set shiftwidth=8

阅读(390) | 评论(0) | 转发(0) |
0

上一篇:chmod

下一篇:VNC的一些用法

给主人留下些什么吧!~~