- 浏览: 411590 次
文章分类
- 全部博客 (327)
- Android (114)
- Java (13)
- Java基础 (14)
- Glib (2)
- linux (15)
- extjs (5)
- eclipse (2)
- Asterisk (56)
- MYSQL (6)
- 数据库 (9)
- PHP (7)
- C# (18)
- 杂谈~~ (1)
- web开发前端 (3)
- 网络编程 (2)
- Opensips (2)
- voip (3)
- debian (7)
- openfire (15)
- wordpress (1)
- 版本控制 (1)
- Android 线程服务广播 (1)
- SRTP (2)
- 单片机及ARM等 (3)
- 基础知识 (5)
- asp.net (2)
- 单片机 (1)
- 设计模式及架构 (1)
- 安全 (1)
- Cubieboard 草莓树莓各类派 Android开发板 (1)
- J2EE (2)
- BootStrap (3)
- BootStrap web前端开发 (1)
- web前端开发 (4)
- object-c (1)
- openwrt (8)
- 智能家居 (4)
- Node.js (4)
最新评论
-
xiaoxiecomeon:
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能 ...
Runnable 和 Thread -
dotjar:
我觉得话应该这么说:引用TestThread tt = new ...
Runnable 和 Thread -
dagf113225:
调用TelephonyManager的隐藏API是先参考Fra ...
Android提高第十四篇之探秘TelephonyManager
删除以某个字节开始的同一行: s/^#.*\n$//g
删除行首空格 %s/^\s\+//
1,简单替换表达式
去掉所有的行尾空格: %s/\s\+$//
去掉所有的空白行: %s/\(\s*\n\)\+/\r/
去掉所有的"//"注释: %s!\s*//.*!!
去掉所有的"/*...*/"注释: %s!\s*/ \*\_.\{-}\*/\s*! !g
删除DOS方式的回车^M :%s/r//g
:%s= *$== 删除行尾空白:
:%s/^(.*)n1/1$/ 删除重复行:
:%s/^.{-}pdf/new.pdf/ 只是删除第一个pdf:
:%s/<!--_.{-}-->// 又是删除多行注释(咦?为什么要说「又 」呢?)
:g/s* ^ $/d 删除所有空行 :这个好用有没有人用过还有其他的方法吗?
:g!/^dd/d 删除不含字符串'dd'的行
:v/^dd/d 同上 (译释:v == g!,就是不匹配!)
:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行
:v/./.,/./-1join 压缩空行
:g/^$/,/./-j 压缩空行
2,简单删除命令
ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。
d0 删至行首。
d$ 删至行尾。
ndd 删除当前行及其后 n-1 行。
x 或 X 删除一个字符。
Ctrl+u 删除输入方式下所输入的文本。
^R 恢复u的操作
J 把下一行合并到当前行尾
V 选择一行
^V 按下^V后即可进行矩形的选择了
aw 选择单词
iw 内部单词(无空格)
as 选择句子
is 选择句子(无空格)
ap 选择段落
ip 选择段落(无空格)
D 删除到行尾
x,y 删除与复制包含高亮区
dl 删除当前字符(与x命令功能相同)
d0 删除到某一行的开始位置
d^ 删除到某一行的第一个字符位置(不包括空格或TAB字符)
dw 删除到某个单词的结尾位置
d3w 删除到第三个单词的结尾位置
db 删除到某个单词的开始位置
dW 删除到某个以空格作为分隔符的单词的结尾位置
dB 删除到某个以空格作为分隔符的单词的开始位置
d7B 删除到前面7个以空格作为分隔符的单词的开始位置
d) 删除到某个语句的结尾位置
d4) 删除到第四个语句的结尾位置
d( 删除到某个语句的开始位置
d) 删除到某个段落的结尾位置
d{ 删除到某个段落的开始位置
d7{ 删除到当前段落起始位置之前的第7个段落位置
dd 删除当前行
d/text 删除从文本中出现“text”中所指定字样的位置,
一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容
dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容
dtc 删除当前行直到下一个字符“c”所出现位置之间的内容
D 删除到某一行的结尾
d$ 删除到某一行的结尾
5dd 删除从当前行所开始的5行内容
dL 删除直到屏幕上最后一行的内容
dH 删除直到屏幕上第一行的内容
dG 删除直到工作缓存区结尾的内容
d1G 删除直到工作缓存区开始的内容
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上
从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g ,表示只对搜索
字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。
给出一个字符串,可以通过搜索该字符串到达指定行。如果希望进行正向搜索,将待搜索的字符串置于两个“
/” 之间;如果希望反向搜索,则将字符串放在两个“?” 之间。例如:
:/str/ 正向搜索,将光标移到下一个包含字符串 str 的行
:?str? 反向搜索,将光标移到上一个包含字符串 str 的行
:/str/w file 正向搜索,并将第一个包含字符串 str 的行写入 file 文件
:/str1/,/str2/w file 正向搜索,并将包含字符串 str1 的行至包含字符串 str2 的行写入 file 文件
1,简单替换表达式
替换命令可以在全文中用一个单词替换另一个单词:
:%s/four/4/g
“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可
如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头:
:%s/\<four/4/g
显然,这样在处理 “fourty” 的时候还是会出错。用 “\>” 来解决这个问题:
:%s/\<four\>/4/g
如果你在编码,你可能只想替换注释中的 “four”,而保留代码中的。由于这很难指定,可以在替换命令中加一个 “c” 标记,这样,Vim 会在每次替换前提示你:
:%s/\<four\>/4/gc
2,删除多余的空格
要删除这些每行后面多余的空格,可以执行如下命令:
:%s/\s\+$//
命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是
“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。
3,匹配重复性模式
星号项 “*” 规定在它前面的项可以重复任意次。因此:
/a*
匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因为零次也包含在内。星号 “*” 仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “\(”,后面加 “\)”。因此这个命令:
/\(ab\)*
匹配: “ab”,”abab”,”ababab”,等等。而且也匹配 “”。
要避免匹配空字串,使用 “\+”。这表示前面一项可以被匹配一次或多次。
/ab\+
匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。
要匹配一个可选项,用 “\=”。 例如:
/folders\=
匹配 “folder” 和 “folders”。
4,指定重复次数
要匹配某一项的特定次数重复,使用 “\{n,m}” 这样的形式。其中 “n” 和 “m” 都是数字。在它前面的那个项将被重复 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:
/ab\{3,5}
匹配 “abbb”,”abbbb” 以及 “abbbbb”。
当 “n” 省略时,被默认为零。当 “m” 省略时,被默认为无限大。当 “,m” 省略时,就表示重复正好 “n” 次。例如:
模式 匹配次数
\{,4} 0,1,2,3 或 4
\{3,} 3,4,5,等等
\{0,1} 0 或 1,同 \=
\{0,} 0 或 更多,同 *
\{1,} 1 或 更多,同 \+
\{3} 3
5,多选一匹配
在一个查找模式中,”或” 运算符是 “\|”。例如:
/foo\|bar
这个命令匹配了 “foo” 或 “bar”。更多的抉择可以连在后面:
/one\|two\|three
匹配 “one”,”two” 或 “three”。
如要匹配其多次重复,那么整个抉择结构须置于 “\(” 和 “\)” 之间:
/\(foo\|bar\)\+
这个命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。
再举个例子:
/end\(if\|while\|for\)
这个命令匹配 “endif”,”endwhile” 和 “endfor”。
vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
1.:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
2. :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
3. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
4. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
5. 删除文本中的^M
问题描述:对于换行,window下用回车换行(0A0D)来表示,Linux 下是回车(0A)来表示。这样,将window上的文件拷到Unix 上用时,总会有个^M.请写个用在unix下的过滤Windows 文件的换行符(0D)的shell或c程序。
· 使用命令:cat filename1 | tr -d “^V^M” > newfile;
· 使用命令:sed -e “s/^V^M//” filename > outputfilename。需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。
· 在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/^V^M//。
· :%s/^M$//g
如果上述方法无用,则正确的解决办法是:
· tr -d "\r" < src >dest
· tr -d "\015" dest
· strings A>B
6. 其它
利用 :s 命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上
从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索
字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。
发表评论
-
使用事件驱动模型实现高效稳定的网络服务器程序
2015-11-17 10:22 611前言 事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在 ... -
试验UDP打洞穿透NAT
2015-09-25 16:05 1904目标 路由穿透,实现广域网P2P通讯。 4种典型NAT类 ... -
initrd的作用
2015-09-11 16:43 848initrd 是一个 ram disk 的 image. 一 ... -
Linux 初始 RAM 磁盘(initrd)概述
2015-09-11 16:32 786Linux 初始 RAM 磁盘(initrd)概述 ... -
正则表达式 linux shell 删除偶数奇数行 取得最后一个字符 s/\(^.*$\)\n^.*$/\1/g
2013-08-28 09:54 1701删除偶数行:%s/\(^.*$\)\n^.*$/\1/g删除 ... -
CentOS yum安装sun Java jre jdk和openjdk
2013-07-14 16:33 916在Linux下的tty终端下, ... -
Linux Server Configuration (不错)
2013-06-28 09:03 606http://www.calculate-linux.or ... -
查看centos中的用户和用户组
2012-12-15 12:12 800查看centos中的用户和用户组 ... -
服务器数据备份(shell 定时脚本备份mysql)
2012-12-02 21:48 873Mysql备份策略大概可分为4种: 1) 直接拷贝数据 ... -
查找Centos Linux服务器上的WebShell后门
2012-03-12 20:43 1788务器被挂马或被黑的朋友应该知道,黑客入侵web服务器的第一目标 ... -
IPTABLE减轻DDOS的设定
2012-03-05 20:06 827# Make sure NEW tcp connecti ... -
linux下IPTABLES配置详解
2012-03-04 19:14 915linux下IPTABLES配置详解 http:/ ... -
Shell Scripts基础
2012-03-04 15:53 12791. 什麼是 Shell Scrip ... -
如何产生core dump或者core file.
2011-12-31 08:29 1909当我的应用程序崩溃或出现段错误的时候,如何产生core ...
相关推荐
以下是对VIM常见命令的详细总结: 1. **启动与退出** - `vim filename`:启动VIM并打开指定的文件。 - `:q`:在正常模式下退出,如果未保存修改,VIM将拒绝退出。 - `:q!`:强制退出,不保存任何修改。 - `:wq`...
- **字符串替换**:指的是在文本中查找特定的字符串,并将其替换为新的字符串的过程。 - **全文范围**:指在整个文件内进行字符串替换,而非仅仅局限于当前可见的屏幕范围内。 #### 二、Vim中的字符串替换命令 Vim...
### vim常用命令总结 #### 一、概述 `vim`是一款功能强大的文本编辑器,在Linux环境中广泛使用。本文档旨在总结`vim`编辑器中常用的命令,这些命令可以帮助用户高效地进行文本编辑工作。总结包括查找命令、修改...
#### Vim常用命令详解 接下来,我们将详细介绍vim中的一些常用命令。 ##### 命令模式下的操作 1. **移动光标** - `h`:向左移动一个字符。 - `j`:向下移动一行。 - `k`:向上移动一行。 - `l`:向右移动一个...
1. **正常模式**:这是 Vim 的初始模式,也是最常用的模式。在这个模式下,用户可以通过键盘上的快捷键来控制 Vim 执行各种操作。 - **启动 Vim**:在终端中输入 `vim` 后按 Enter 键即可启动 Vim。 - **打开文件*...
以上总结了Vi和Vim编辑器中的常用命令,涵盖了初始化配置、光标操作、编辑、查找、窗口管理、文件对比、缓冲区操作、编译调试以及一些实用的杂项命令。熟练掌握这些命令能够显著提升在Linux环境下的文本编辑效率。
VIM的高级编辑功能包括启动VIM、编辑和写入文件、有关移动的命令、在窗口中滚动文本、插入模式和替换模式、删除和替换文本、自动缩进、撤消和重做等。例如,可以使用":help starting.txt"命令查看如何启动VIM并设置...
### VIM代码编辑常用操作技术知识点总结 #### 1. VIM编辑基础操作 VIM是一个高级文本编辑器,常用于编写和编辑代码。它支持多种模式,包括普通模式、插入模式、命令模式等。普通模式下可以快速执行编辑命令,插入...
以下是在几种常见的Linux发行版中安装Vim的方法: 1. **Ubuntu/Debian**: 使用`apt`命令 ``` sudo apt-get update sudo apt-get install vim ``` 2. **Fedora/CentOS/RHEL**: 使用`yum`或`dnf`命令 ``` sudo...
通过这次实验,参与者不仅熟悉了Vim的基本操作,如移动、查找、替换、复制、粘贴、删除等,还学习了如何在Vim中进行文件的保存、另存以及撤销修改等高级操作,增强了对Vim编辑器的理解和应用能力。这些基本技能对于...
本来不算写 Vim 使用教程的,因为我想网上应该会有很多,然后我去搜了一下看到别人写的好丑好乱啊,于是... 跳至指定行4、Last line mode下命令简介A) 列出行号B) 跳到文件中的某一行C) 查找字符D) 保存文件E) 离开 Vim
Linux系统中的vim编辑器是一个强大的文本编辑工具,广泛应用于各种Unix和Linux环境下。vim是vi的增强版,提供了更多的功能和便利性,尤其适合程序员进行代码编写。在使用vim时,掌握其三种基本模式——编辑模式、...
例如,在普通模式中,用户可以通过输入特定字符来执行命令,比如使用“d”删除选中的文本。可视模式允许用户选择文本区域进行操作。插入模式则是编辑文本时输入文本的模式。命令行模式则用于执行一些复杂的命令,如...
3. **命令行模式**:通过在正常模式下输入`:`, Vim会进入命令行模式,允许你执行保存、查找替换、跳转到特定行等全局操作。 本书中,作者可能详细讲解了如何在这些模式间切换,以及如何高效地利用Vim的命令和宏功能...
**vim常用命令** 1. **启动与退出** - `vim filename`:打开名为`filename`的文件。 - `:q`:在正常模式下退出vim,如果文件被修改过,vim将阻止退出。 - `:wq`:保存并退出。 - `:q!`:不保存强制退出。 2. *...
在使用Vim时,了解并熟练掌握一些常用的命令至关重要。以下是对标题和描述中涉及的Vim命令的详细解释: ### 命令模式 在命令模式下,用户可以移动光标、删除文本、复制和粘贴等。以下是一些常见的操作: 1. **...
### VIM常用命令详解 #### 一、简介 VIM(Vi IMproved)是一款功能强大的文本编辑器,它基于原始的vi编辑器进行了大量的改进和扩展。VIM因其高效的文本编辑能力和广泛的系统兼容性,在程序员和技术人员中非常受欢迎...
### Vim常用命令详解 #### 一、模式切换 Vim具备三种主要的工作模式:命令模式(Command mode)、插入模式(Insert mode)以及可视模式(Visual mode)。掌握这些模式之间的切换是高效使用Vim的基础。 - **切换到插入...