vim

VIM 列编辑
1、命令模式下:ctrl + v, 然后按上下左右键选中范围
2、输入 “I”
3、输入要编辑的内容
4、最后按 “Esc”退出列编辑模式,输入的内容自动扩展到选中的所有行

w: 调到下一个首字母
e:调到下一个尾字母(包括当前单词)
b:调到上一个首字母(包括当前单词)
num + w/e/bW/E/B,向指定方向跳动 num 个 单词位置
0:移动到行首
^:移动到行首的第一个非空字符
$: 移动到行尾
x: 删除当前字符
X:删除前一个字符
num + x/X: 删除多个字符
dd: 删除一行,相当于剪切,删去的内容暂存在缓冲区里
D:删除当前位置到行尾
d +[num] w/e/b/W/E/B/0/$/^(各种移动命令): 向指定位置 删除 num 个位置
yy:复制一行
y +[num] w/e/b/W/E/B/0/$/^: 复制指定位置

粘贴:
p:粘贴到当前字符后面
P:粘贴到当前字符前面

n+:光标下移n行
n-:光标上移n行

nG:光标移至第n行首
n$:光标移至第n行尾

:n

H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行

0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

:set nu  //display the line number
/sdxxyy    //向下查找 "sdxxyy"

?sdxxyy //向上查找"sdxxyy"

:wq // save and exit

搜索忽略大小写
:set ignorecase //设置忽略大小写
:set noignorecase //取消忽略大小写

另外还有以下方法 (也可以忽略大小写)
/\cword 可以匹配word Word WORD WoRd

 

 

------------行号-------------
:set nu
:set nonu
-------移动----------------------
以输入到/dev/null

h :光标左移一个字符 
l :光标右移一个字符 
k或Ctrl+p:光标上移一行 
j或Ctrl+n :光标下移一行 

w或W 移动到下一个单词词首
b或B :光标左移一个字至字首
nw 移动到后面第n个单词词首

) :光标移至句尾 
( :光标移至句首 
}:光标移至段落开头 
{:光标移至段落结尾 
nG:光标移至第n行首 
n$:光标移至第n行尾 
n+:光标下移n行 
n-:光标上移n行 
H :光标移至屏幕顶行 
M :光标移至屏幕中间行 
L :光标移至屏幕最后行 
0:(注意是数字零)光标移至当前行首 
$:光标移至当前行尾 
Ctrl + f 下一页
Ctrl + b 上一页
-------恢复-------------------
u 恢复操作
-------edit----------------------
i insert befor a alpha
I insert before a line
a insert after a alpha
A insert after a line
o 开一行编辑
-------查找--------------------
搜索忽略大小写
:set ignorecase //设置忽略大小写
:set noignorecase //取消忽略大小写

find :
/ 向下查找
? 向上查找

/\cstring 忽略大小写
--------替换-----------------
利用 :s 命令可以实现字符串的替换。具体的用法包括:
当前行
:s/str1/str2/ 只在当前行中替换第一次出现的str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

所有行替换:
:%s/str1/str2 仅替换每行的第一个匹配的字符
:%s/str1/str2/g
-------文件保存-----------------
:w save
:wq save and exit
:q! exit and not save
:w file               将修改保存在 file 中但不退出 vi

保存文本和退出 vi
命令                      保存和/或退出操作
:w                    保存文件但不退出 vi
:w file               将修改保存在 file 中但不退出 vi
:wq 或 ZZ 或 :x         保存文件并退出 vi
:q!                   不保存文件,退出 vi
:e!                   放弃所有修改,从上次保存文件开始再编辑
-----------command---------------------
:! command
暂时离开 vi 到指令列模式下执行 command 的显示结果!例如
:!ls -al
#在编辑过程中执行shell命令ls

------------------复制粘贴----------------

yy     复制一行,此命令前可跟数字,标识复制多行,如6yy,表示从当前行开始复制6行
yw     复制一个字
y$     复制到行末
p     粘贴粘贴板的内容到当前行的下面
P     粘贴粘贴板的内容到当前行的上面

在 vi 中复制文本
命令                      复制操作
yy                    将当前行的内容放入临时缓冲区
nyy                   将 n 行的内容放入临时缓冲区
p                     将临时缓冲区中的文本放入光标后
P                     将临时缓冲区中的文本放入光标前
"(a-z)nyy             复制 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行
"(a-z)ndd             删除 n 行放入名字为圆括号内的可命名缓冲区,省略 n 表示当前行
"(a-z)p               将名字为圆括号的可命名缓冲区的内容放入当前行后
"(a-z)P               将名字为圆括号的可命名缓冲区的内容放入当前行前
在 vi 中撤消与重复
命令               撤消操作
u               撤消最后一次修改
U               撤消当前行的所有修改
yw 复制一个word到当前缓冲区,p粘贴
-------------书签----------------------------
ma     把当前位置存成标签a
`a     跳转到标签a处
-----------删除-----------------------
dw 从当前位置删除到下一个单词词首
dd 删除当前行
ndd 删除n行
d( 删除到下一个句首
d) 删除到上一个句尾
d{ 删除本行剩余部分
dw     删除一个字(word)
x     删除当前字符
X     删除前一个字符
D     删除到行末
d0:删至行首 
d$:删至行尾 

r     替换一个字符
J     将下一行和当前行连接为一行
cc     删除当前行并进入编辑模式
cw     删除当前字,并进入编辑模式
c$     擦除从当前位置至行末的内容,并进入编辑模式

d$   擦除从当前位置至行末的内容
s     删除当前字符并进入编辑模式
S     删除光标所在行并进入编辑模式
-------------------------------
同时编辑两个文件
:sp filename.txt 在一个窗口中打开另一个文件
control+w两次 切换窗口
-------------------------------
缩进
control+d 向左缩进
control+t 向右缩进
:set autoindent 启动自动缩进
:set tabstop=4

tabstop tab键只是调到制表符的下一个点,但是不一定跳过8个位置(tab键的长度不是固定的)
---------------------------------------
/dev/null
linux的一个虚拟设备,任何不想显示的内容可

----------------------------------------------

chmod 777 filename 可读可写可执行
vi filename :打开或新建文件,并将光标置于第一行首 
vi +n filename :打开文件,并将光标置于第n行首 
vi + filename :打开文件,并将光标置于最后一行首 
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 

-------------------------------------

F11  vim窗口全屏

 -----------------------------------------

制作patch时删除tab键

/^I       //\tab

文件中查找行尾空格键

/ $         //空格+$

grep -nir "^ *public"  ./  

//查找每行以public开始的代码,空格不计算在内 $grep -nir "^<空格>*public"  ./  

-------------------------------

useradd user1 创建一个新用户
userdel -r user1 删除一个用户 ( '-r' 排除主目录)
passwd 修改口令

groupadd group_name 创建一个新用户组
groupdel group_name 删除一个用户组

head -2 file1 查看一个文件的前两行
tail -2 file1 查看一个文件的最后两行
which is command
type command

grep "abc\|def" haha //选择含有abc 或者def的行

在当前目录查找字符串
grep -nir "skkkksdfidi" ./

在某个文件中查找字符串
grep -nir "skkkksdfidi" filename

# grep -c "48" zhao.conf(统计所有以“48”字符开头的行有多少)

-I :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-s:不显示不存在或无匹配文本的错误信息。
-r :在子目录也进行查找
-n:打印包含匹配项的行和行标

 grep -nir "4[789]" ./      //匹配47或48或49

grep -nir "=[^ ]" ./   

查找tab键

1$grep  -nr  $'\t'   ./ 

2$grep -nr   '按CTRL+V 键,再按TAB键'  ./

 

 

vim安装问题

有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件包尚未被创建或是它们已被从新到(Incoming)目录移出。下列信息可能会对解决问题有所帮助:下列软件包有未满足的依赖关系: vim : 依赖: vim-common (= 2:7.4.826-1ubuntu1) 但是 2:7.4.1689-3ubuntu1 正要被安装E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

解决方法:
输入下面命令
$sudo apt-get remove vim-common
把未满足的依赖关系移除。
$sudo apt-get install vim

 

posted @ 2014-11-04 20:42  牧 天  阅读(231)  评论(0)    收藏  举报