Android中vim编辑器进阶的使用介绍

1. 移动指令
    (1). h j k l, 方向键,记忆技巧:左右方向的是最左边和最右边的,j向下打了个勾,所以是向下键,剩下的k就是向上的键了。
    (2). b, before,上一个单词(词首)
           w, word,下一个单词(词首)
           e,  end,下一个单词(词尾)
    注意这些小写的命令由字母,点,数字,下划线划分,还有这三个对应的大写字母的命令,B,W,E,类似的意思,但是是以空格区分移动的。总而言之,大写的移动范围要大。
    (3). gg 首行
             G 尾行,这两个命令用的较多
    (4). n%  跳到n%的那行
    (5). ^/0  到行首,我有时特别喜欢0,非常清晰简明的命令
          $ 到行尾
    (6). - 非空白行首向上移动
          + 非空白行首向下移动
    (7). 行移动


代码如下:

nj                      //向下移动n行
nk                      //向上移动n行
nh                      //向左移动n列
nl                      //向有移动n列
n_                      //向下移动n-1行,并光标移动到非空白行首
n-                      //向上移动n行,并光标移动到非空白行首

(8).通过查找字符移动


代码如下:

fx/Fx                   //向后/前查找字符x,行内跳转很有用
tx/Tx                   //向后/前查找字符x
//fx/Fx和tx/Tx的区别是用f光标停留在x上,用t光标停留在x的前面一个上

;                       //执行上次的fFtT
,                       //反方向执行fFtT,这两个有意思

2. 插入,替换,删除
    (1). 学会a和i混用,不要只会用i进入插入模式,有时a进入插入模式后更方便,比如插入键盘右边的字母符号,用a的话,左右手配合起来效率更高。
    (2). 学会I和A,快速进入行首和行尾插入模式,特定时刻用起来超爽!
这个很好理解,小写的i是光标前,大小的I是整行前面,o/O类似,画面很清晰。
    (3). 学会o和O混用,不要只会用o进入下行编辑:
           (3.1). 进入上行编辑,大写的O更快,而不是ko,双手比单手要快!
           (3.2). 第一行前面想插入一行时,O比其他任何操作更直接和快速(不要先回到开头<+插入模式>+回车)
    (4). r 快速替换字符,最大的好处是不许要切换模式,节省了大量时间,非常有用!(R,这个命令我用的少,有的时候用的特别混乱,就不说了)
           s 删除光标后一个字符并进入插入模式。该命令提供了r命令+进入插入模式的快速实现方法。
    (5). c 这个命令很强大,归类说明一下


代码如下:

cm                     //m指的是前面的移动命令,类似的有dm,ym,g?m,gum,gUm
                       //改变内容(m定义了改变范围)并进入插入模式,这里说的改变就是删除,举例说明:
cw                     //删除光标后一个单词并进入插入模式
cl                     //删除光标后一个字母并进入插入模式

(6). cc和S 修改当前行,意思是删除该行所有字符内容,但保留行首空格
           D和C 删除该行光标后所有内容,无论字符还是空格,这个命令我用的很多:代码审核格式化代码时,删除空行的空格和行尾空格。
    (7). 学会结合t这个命令


代码如下:

t                      //till的意思,这是我最喜欢的命令之一
dt"                    //行内删除直到","不删除
ct)                    //行内改变直到),)不删除
... ...

(8). 学会x和X混用,分别是向前删除和向后删除字符
(9). :rd 删除第r行

3.查找


代码如下:

#                      //向下一个查找结果
*                      //向下一个查找结果
//在#/*之后按n/N可以重复/反向重复它们的命令

//下面这两个命令在编程时,很有用
gd                     //跳转到光标变量的定义位置(局部变量)
gD                     //跳转到光标变量的定义位置(全局变量)

4. 撤销和恢复


代码如下:

u                      //撤销
ctrl + r               //恢复

5. 滚动


代码如下:

ctrl + e/y             //向下/上一行一行的滚动
ctrl + d/u             //向下/上半页半页的滚动
ctrl + f/b             //向下/上一页一页的滚动

6. 可视模式(选择块)
    可视模式其实非常有用,它的选择很灵活,而且视觉效果上看着和鼠标选择一样,学习成本低,但是功能强大。
    (1). v 进入可视模式
    (2). shift + v 也就是大写的V,可视模式的行选择,整行整行的选择,用于刚好整行或者大篇幅内容的处理比较方便。
    (3). ctrl + v 可视模式的列选择,比行选择模式更加细化,可选择连续的列进入操作
           选择块模式需要和其他命令结合:


代码如下:

V + G                  //选择当前行一直到文本结尾
V + G + d              //删除当前行一直到文本结尾
V + G + y              //复制当前行一直到文本结尾
V + gg + d             //删除当前行一直到文本开头
V + gg + y             //复制当前行一直到文本开头
ctrl+v + <移动>+ d      //删除选择的列
ctrl+v + <移动>+ y      //复制选择的列

(4). gv 选中上次的选中区域
(5). 选中单词,句子,段落:


代码如下:

vaw                   //选中一个单词(word)
vas                   //选中一个句子(sentence)
vap                   //选中一个段落(paragraph)
viw                   //选中一个单词(word)
vis                   //选中一个句子(sentence)
vip                   //选中一个段落(paragraph)

(6). 选中括号:


代码如下:

vab                   //选择()里面的内容, 包括小括号
vaB                   //选择{}里面的内容,包括大括号

7.执行shell命令


代码如下:

//记住这两种用法,你尝到它们的甜头的
:sh                   //打开shell,可执行shell命令,输入exit退出shell返回到vim
:!cmd                 //直接执行shell

比如上篇文章中提到的自动化打包脚本,我修改了代码后,需要执行一下这个脚本编译一下,但是我还不想完全退出vim,因为我还需要继续修改,就可以使用


代码如下:

:sh                   //打开一个终端
./build.sh            //执行build.sh
exit                  //退出终端,继续vim编辑
//或者
:!./build.sh          //在vim窗口直接执行build.sh脚本,然后按Enter或其他命令继续

是不是很方便!

8. 专题一:快速选中、删除、复制、修改引号或括号内的内容


代码如下:

//以下操作一定要熟记,能大大提高你编辑文本的效率
ci'、ci”、ci(、ci[、ci{、ci<           //分别更改这些配对标点符号中的文本内容
di'、di”、di(或dib、di[、di{或diB、di<  //分别删除这些配对标点符号中的文本内容
yi'、yi”、yi(、yi[、yi{、yi<           //分别复制这些配对标点符号中的文本内容
vi'、vi”、vi(、vi[、vi{、vi<           //分别选中这些配对标点符号中的文本内容

9. 专题二:替换
查找并替换操作使用的太频繁了,下面针对这个专题从网上或书籍上收集了替换的几个常用的强大用法:


代码如下:

//语法
/**
 * 说明
 * range表示行数,如果是%表示所有行
 * s表示substitution,替换的意思
 * flag表示标志,取值g,i,c等
 * g表示global,全部
 * i表示ignore,忽略大小写
 * c表示confirm,一个一个交互确认替换
 * count表示从当前行到接下来的第几行,表示范围
 */
:[range]s/{pattern}/{string}/[flag] [count]

(1). 全部替换
参数g实现全部替换,否则只替换一个
(1). 全部替换
参数g实现全部替换,否则只替换一个

:%s/{old-pattern}/new-text/g

(2). 行内替换
%代表所有行,去掉%表示当前行,只替换当前行

:s/{old-pattern}/new-text/g

(3). 指定行范围替换
对1到10行的结果替换

:1,10s/{old-pattern}/new-text/g

(4). 可视模式替换
如果你觉得数行数比较麻烦,可以使用可视模式,首先进入可视模式,然后选择行
列,最后输入:自动进入:'<,'>
后面加上s/{old-pattern}/new-text/g,则只替换选择区域的结果

:'<,'>s/{old-pattern}/new-text/g

(5). 整词替换,而不是部分匹配的单词
对单词匹配模式外包一个<和>

:s/\<blog\>/weibo/g  //替换blog,但是cnblog,blogs则不会替换

(6). 多项替换
同时对多个匹配都替换成某一字符串

:%s/\(good\|nice\)/awesome/g  //good和nice都将被替换成awesome

(7). 确认式替换
参数c让替换进行交互请求,需要你选择y,n,a,l,q


代码如下:

/**
 * 选择说明:
 * y 替换且跳转到下一个匹配结果
 * n 不替换且跳转到下一个匹配结果
 * a 替换所有并退出交互模式
 * l 替换当前并退出交互模式
 * q 退出交互模式
 */
:s/{old-pattern}/new-text/gc

(8). 行首插入行号
把行首^替换成行号,可自定义具体形式
:%s/^/\=line(".")/g

10. 专题三:大小写转换
    讲这个,主要是觉得这个问题挺有意思的。


代码如下:

~                    //改变当前字符并自动切换到下一个字符,大写变小写,小写变大写,可以一直按
gum                   //转化为小写,m指移动命令,如:
                      //guw   光标后的一个单词小写化
                      //guG   光标所在行到最后行全部小写化
                      //gut=  光标后直到=之间的字符小写化
                      //罗嗦一句,gu还可以与可视模式结合,小写化所选区域
gUm                   //转化为大写,用法同上

11. 专题四:录制
    这个其实很简单,但也是很强大的功能,单独柃出来说一下。


代码如下:

//为操作定义宏或者取别名
//这个命令的强大之处在于使重复复杂指令的简单化了
q                     //按下q开始录制
x                     //x是这个录制的寄存器,x可以是其它字符
dd                    //删除当前行,这个操作可以自定义其他复杂的操作
q                     //录制结束,现在dd这个操作被定义到了@x这个命令里了

12. 专题五:数字增减
    这个小技巧还挺有用的,比如说定义了一系列static final变量,而且时不时要中间插入一些新的变量,这些值一般都是递增的,这时候这个技巧绝对比数字替换要方便。


代码如下:

//Normal模式下执行
Ctrl + a           //自增1
Ctrl + x           //自减1

13. 小结
    工善其事,先利其器。
    先想到这些,必然有很多遗漏,后面想到了什么,我会随时添加更新进来。

(0)

相关推荐

  • linux系统中使用Vim删除偶数行或者奇数行

    删除偶数行的方法如下: :g/^/+1 d 上面用到了:gbobal命令,gbobal命令格式如下: :[range]global/{pattern}/{command} global命令实际上是分成两步执行:首先扫描[range]指定范围内的所有行,给匹配{pattern}的行打上标记:然后依次对打有标记的行执行{command}命令,如果被标记的行在对之前匹配行的命令操作中被删除.移动或合并,则其标记自动消失,而不对该行执行{command}命令.{command}可以是一个ex命令,也可以

  • VIM中设置php自动缩进为4个空格的方法详解

    代码自然少不了文本编辑利器vim,自动缩进是用制表符的,即便自己删掉制表符改成4个空格,也会在下一层次缩进中继续用制表符,这就造成了空格和制表符混用 可以修改.etc/vimrc的信息: 其中相关变量含义:     变量名     缩写      含义 (no)autoindent  ai   自动缩进,即为新行自动添加与当前行同等的缩进. (no)cindent     ci   类似C语言程序的缩进 (no)smartindent si   基于autoindent的一些改进      变量

  • PHP语法自动检查的Vim插件

    由于最近写PHP比较多,偶尔手误少写个分号之类的语法错误难免,一般的检查方式是回到命令行运行 php -l ,或者升级一下直接在Vim里运行 :!php -l % ,或者再将此绑定为快捷键,如 :map <F5> :!php -l %<CR> ,每当按F5便可立即执行语法检查.但还是觉得略有不爽,因为很多IDE是实时检查的,语法错误会提示在代码行的旁边.虽然实时检查未必有必要,但自动检查要比手动检查方便的多,比如在php文件保存时自动执行检查. 于是写了这个 phpcheck.vi

  • Vim进行文件目录操作小结

    一.当前文件名 我们知道Vim有48个寄存器,其中%只读寄存器中保存着当前文件路径. 例如在/home/harttle/下打开src/main.cpp,我们打印%的值: :echo @% " 文件路径 src/main.cpp 通过关键字展开可得到绝对路径.所在目录等信息: :echo expand('%:t') " 文件名 main.cpp :echo expand('%:p') " 绝对路径 /home/harttle/src/main.cpp :echo expand(

  • ruby开发vim插件小结

    在开始编写插件之前,你需要确认 Vim 是否支持 Ruby,通过以下命令来判别: $ vim --version | grep +ruby 如果输出为空,则表示你当前的vim不支持Ruby,需要重新编译一下,并启用对Ruby的支持. 顺便说下我当前的环境是: vim 7.4 ruby 2.1.0 环境检查没有问题那么就开始吧. 在~/.vim/plugin目录下创建一个 demo.vim 文件. 在开头写上以下代码: if !has('ruby') echo "Error: Required v

  • 手把手教你将Vim改装成一个IDE编程环境(图文) 吴垠

    By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage: http://blog.csdn.net/wooin Copyright: 该文章版权由吴垠和他可爱的老婆小包子所有.可在非商业目的下任意传播和复制.对于商业目的下对本文的任何行为需经作者同意. 联系方式:lazy.fox.wu#gmail.com 1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人

  • Windows下利用Gvim写PHP产生中文乱码问题解决方法

    首先:找出乱码产生的原因. 一直以为是浏览器的原因,结果我在chrome,firefox,IE9里面都出现了乱码,所以浏览器的因素可以排除.为了验证我猜测是Gvim的原因, 我用记事本(note)简单写了一个php文件 复制代码 代码如下: <?php echo "你好"; echo "世界"; ?> 结果没有出现乱码,所以问题就出在Gvim上,这个结论水到渠成. 于是,开始研究Gvim的配置文件(_vimrc), 现在给大家看一下我产生乱码之前的配置(

  • Python 自动补全(vim)

    一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.python 模块内函数,变量补全 5.from module import sub-module 补全 想为vim启动自动补全需要下载插件,地址如下: http://vim.sourceforge.net/scripts/script.php?script_id=850 https://github

  • 使用python开发vim插件及心得分享

    vim有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言vimL,还得益于它良好的接口实现,从而支持python等语言编写插件.当vim编译时带有+python特性时就能使用python2.x编写插件,+python3则支持python3.x,可以使用vim --version来查看vim的编译特性. 要使用python接口,可以用:h python来查看vim提供的帮助文档,本文做一个简单的介绍.我们都知道在vim里可以执行bash命令,只需要:!command即可,那么vim里可以

  • Android中vim编辑器进阶的使用介绍

    1. 移动指令    (1). h j k l, 方向键,记忆技巧:左右方向的是最左边和最右边的,j向下打了个勾,所以是向下键,剩下的k就是向上的键了.    (2). b, before,上一个单词(词首)           w, word,下一个单词(词首)           e,  end,下一个单词(词尾)    注意这些小写的命令由字母,点,数字,下划线划分,还有这三个对应的大写字母的命令,B,W,E,类似的意思,但是是以空格区分移动的.总而言之,大写的移动范围要大.    (3)

  • Linux中Vim编辑器的使用教程

    Vim是一个类似Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了许多的功能,Vim是自由软件,今天我们就来讲讲Vim编辑器的使用. NAME vim - Vi IMproved, a programmers text editor #vi的改进,一个程序文本编辑器 1.移动光标的方法 Ctrl+f 屏幕向下移动一页 0(数字0) 移动到行首 $ 移动到行尾 G 移动到最后一样 gg 移动到第一行 n<Enter> 光标向下移动n行 2.查找和替换 /word 向光标下面

  • Android中imageview.ScaleType使用方法详细介绍

    Android中imageview.ScaleType使用方法详细介绍 ScaleType属性用以表示显示图片的方式,共有8种取值: ScaleType.CENTER:图片大小为原始大小,如果图片大小大于ImageView控件,则截取图片中间部分,若小于,则直接将图片居中显示. ScaleType.CENTER_CROP:将图片等比例缩放,让图像的短边与ImageView的边长度相同,即不能留有空白,缩放后截取中间部分进行显示. ScaleType.CENTER_INSIDE:将图片大小大于Im

  • Android中程序的停止状态详细介绍

    很多人遇到过广播收不到的问题,比如Google Play推广安装广播没有收到等,诸如这些问题,又都是什么原因呢,这篇文章将进行回答. 从Android 3.1(HoneyComb) 也就是API 12开始,Android引入了一套新的启动控制,这就是程序的停止状态.那让我们看一下Google对于程序的停止状态的描述. 什么是程序的停止状态 复制代码 代码如下: Starting from Android 3.1, the system's package manager keeps track

  • Vim 编辑器操作汇总

    vim   [参数]   [文件 ..]         编辑指定的文件   或: vim   [参数]    -     从标准输入(stdin)读取文本   或: vim   [参数]    -t    tag 编辑 tag 定义处的文件   或: vim   [参数]    -q   [errorfile] 编辑第一个出错处的文件 参数: -- 在这以后只有文件名   -v Vi 模式 (同 "vi") -e Ex 模式 (同 "ex") -E   Impro

  • 简介Android 中的AsyncTask

    AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合.其实AsyncTask并不是那么好,甚至有些糟糕.本文我会讲AsyncTask会引起哪些问题,如何修复这些问题,并且关于AsyncTask的一些替代方案. AsyncTask 从Android API 3(1.5 Cupcake)开始,AsyncTask被引入用来帮助开发者更简单地管理线程.实际上在Android 1.0和1.1也是有类似的实现,那就是UserTask.UserTask和AsyncTask有着相

  • 实例详解Android中JNI的使用方法

    目录 前言 1.导入C语言的类 2.接着导入Android.mk文件 3.我们配置一下build.gradle文件 4.好了,此时可以编译一下项目了 5.此时我们可以找一下我们生成的so包了 6.将生成的so文件拷入src/main/jniLibs中 7.调用C语言方法的Activity如下 总结 前言 做Android开发的程序员应该都知道,Android的开发语言我们都是在使用JAVA(Kotlin和Flutter我们暂时不考虑).但是,有时候我们也需要使用到C语言进行一些功能的开发.这个时

  • Android中图片占用内存的深入分析

    目录 前言 一.图片占用内存与宽.高.色彩模式的关系 二.图片占用内存与存放文件夹的关系 三.从文件中加载图片和从网络加载图片占用内存 四.色彩模式 五.总结 前言 Android 在加载图片的时候一定会考虑到的一个点就是如何防止 OOM,那么一张图片在加载的时候到底会占用多少内存呢?有哪些因素会影响占用的内存呢?知道了这些,我们才能知道可以从哪些点去优化,从而避免 OOM. 一.图片占用内存与宽.高.色彩模式的关系 首先我们准备一张 1920*1080 的图片: 然后我使用的测试机是 Redm

  • Android中的dumpsys命令详解

    目录 一.dumpsys命令介绍 1.命令说明 2.系统服务查询 二.包信息查询 三.activity信息查询 四.网络信息查询 五.其他常用服务信息查询 一.dumpsys命令介绍 1.命令说明 Dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息 命令格式: adb shell dumpsys [system serbices] 2.系统服务查询 如果直接运行adb shell dumpsys,将会获得所有的系统服务信息,那是非常多的,为了更容易管理输出,可以指定你想要检查的服

  • android中的adb命令学习

    adb是什么 adb的全称为Android Debug Bridge,就是起到调试桥的作用.它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互. adb有什么用 借助adb工具,我们可以管理设备或手机模拟器的状态.还可以进行很多手机操作,如安装软件.系统升级.运行shell命令等等.其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作. adb常用命令 查看当前连接的设备 adb devices 多个设备操作,带上设备号 adb -s

随机推荐