当前位置:  技术问答>linux和unix

Vim 如何有效的定位代码

    来源: 互联网  发布时间:2017-01-02

    本文导语:  本帖最后由 cqbamboo 于 2011-09-20 13:14:34 编辑 我在使用Vim的时候,有时候感觉快速定位代码不太方便,也许没有找到好的办法,请大家一起看看。 比如下面的代码,当前光标在162行, (1) 如果179行我打错了一个单词,需...

本帖最后由 cqbamboo 于 2011-09-20 13:14:34 编辑
我在使用Vim的时候,有时候感觉快速定位代码不太方便,也许没有找到好的办法,请大家一起看看。
比如下面的代码,当前光标在162行,
(1) 如果179行我打错了一个单词,需要把mp改为map
(2) 如果需要把178行的i=0, 改成i=1
总之,我的困惑就是,如果想快速移动到屏幕中某个特定的位置,你们一般怎么做的。


162 static int alloc_pidmap(struct pid_namespace *pid_ns)
163 {
164         int i, offset, max_scan, pid, last = pid_ns->last_pid;
165         struct pidmap *map;
166 
167         pid = last + 1;
168         if (pid >= pid_max)
169                 pid = RESERVED_PIDS;
170         offset = pid & BITS_PER_PAGE_MASK;
171         map = &pid_ns->pidmap[pid/BITS_PER_PAGE];
172         /*
173          * If last_pid points into the middle of the map->page we
174          * want to scan this bitmap block twice, the second time
175          * we start with offset == 0 (or RESERVED_PIDS).
176          */
177         max_scan = DIV_ROUND_UP(pid_max, BITS_PER_PAGE) - !offset;
178         for (i = 0; i page)) {
180                         void *page = kzalloc(PAGE_SIZE, GFP_KERNEL);
181                         /*
182                          * Free the page if someone raced with us
183                          * installing it:
184                          */
185                         spin_lock_irq(&pidmap_lock);
186                         if (!map->page) {
187                                 map->page = page;
188                                 page = NULL;
189                         }
190                         spin_unlock_irq(&pidmap_lock);

|
我以前看不少VIM方面的资料。我对VIM很熟。我的分不多,我想拿你的分。嚸嘿,不知道行不行。
如未提示,以下操作都是在命令模式下:可能部分缩写未做求证,但个人觉得还是比较容易理解。
VIM命令大多都可以带一个数字前缀或数字范围:
如5dd表示从当前行开始删除5行。
1,3d表示删除第1~3行

下面回答你的问题了。
当前光标在162行
(1) 如果179行我打错了一个单词,需要把mp改为map
    ->行号+G 
   (答:179G)
(2) 如果需要把178行的i=0, 改成i=1
    ->从当前位置跳到的当前位置下,上,左,右的字符的快捷键是:j,k,h,l
    ->直接修改字符可以:按r(replace),然后敲入你想改成的字符:
   (答:跳到要更改的字符0后,按r,再输入1)
 
总之,我的困惑就是,如果想快速移动到屏幕中某个特定的位置,你们一般怎么做的。
位置移动我划成以下几类:我觉得应该足够你用的了。
屏幕位置操作:
    ->屏幕顶行:H 
      屏幕中间行:M
      屏幕底行:L
      (H:high, M:midle, L:Low)
     向上/下滚屏:CTRL+y/e(效果类似于用竖直滚动条)
     屏幕向上/下移动半页: CTRL+u/d  (u:up, d:down)
     屏幕向上/下移动一页: ctrl+b/f  (b:backward, f:forward)
     
行间操作:
     向下/上跳N行: Nj/k
     直接跳到第N行:NG  (就是的G即是GO之意)
     下/上行行首:+/-
行内操作:
     当前单词词首:  b(begin), [长单词可用B]
     当前单词词尾:  e(end),  [长单词可用E]
     下一个单词词首:w(word)
     从当前位置开始向后定位到指定字符c处:fc  (f:find), [向前定位用F]
     行首/尾:0/$
     句首/尾: (/)
     段首/尾:{/}
 
文件操作:
     跳到文件首行:gg
     跳到文件末行:G
     跳到第文件n%的行: n%



|
:行号  ---》跳到指定行
/关键字  ---》向下搜索, n ---》下一个
?关键字  ---》向上搜索
ctl + f  ---->向下翻页
ctl + b ----->向上翻页

|
(1) 如果179行我打错了一个单词,需要把mp改为map
(2) 如果需要把178行的i=0, 改成i=1
总之,我的困惑就是,如果想快速移动到屏幕中某个特定的位置,你们一般怎么做的。

---------------
179g直接跳转过去,到179行即可
还有

|
按M,定位至屏幕中央
需要的话,再k或j调整一下

|

很详细.

经常编译出错时会有行号提示,  这时候直接定位到行也很方便.
vi a.c +行号


|
一般隔个10来行我就鼠标移过去了。。。

|

++ 

|
到底是使用鼠标还是键盘的问题。我觉得跟个人的习惯比较大吧。
有很多熟悉linux的人,基本不怎么用鼠标,他们一部分人认为鼠标太麻烦,可能是因为不想让自己的手在键盘和鼠标之间折腾吧。
如果说是屏幕中指定位置的话,键盘最快的方法就是直接先用MG(M代表第几行)定位到行,然后再Nw,这个N是估计值,就是从当前位置向后定位到第N个单词。或者先(MJ/K)跳到指定行,然后再Nw,

|
快速定位:179G,然后用w把光标定位在m上,然后用a使光标向后移动并插入
模糊定位:179行大概在中下位置,那么直接M让光标移动到屏幕中间,然后j向下移动到179行,后面的步骤和上边一样……
或者干脆直接/进行查找mp,找到以后光标自然就在mp上,用a插入就行了……
至于把i=0变成i=1也是一样的做法……
LZ得适应一下vi的习惯,vi并不是做什么都比鼠标快,像这种小范围的定位,vi不可能比鼠标快……
vi之所以效率高,是因为你可以不停的进行操作,节省了手在键盘和鼠标之间来回动所浪费的时间……
(可是我啥时候才能到那种不停操作的地步啊……)

|
0 数字零移动光标到当前行的最前面的字符
$ 移动光标到当前行的最后一个字符。
G 移动到着这个文档的最后一行,nG:n为数字移动到这个文件的第n行。
gg 移动到这个文件的第一行

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux/CentOS/fedora下vim显示的字符编码设置
  • 只有vim.gtk或vim.gnome才能使用系统全局粘贴板,默认的vim.basic看不到+号寄存器
  • VIM的Rails编辑插件 rails.vim
  • 使用命令“locate xxxx | xargs vim ”退出vim后,终端无法响应输入!
  • 为了安装vimgdb,编译安装了vim72后,怎样在终端输入vim后启动中文版?
  • VIM高手进来看,vim中出现了奇怪的颜色。
  • 我对 VIM 的抱怨?也是我没有用好 VIM 的一些问题。
  • vim生成的.cpp~是什么文件?我使用vim编辑的时候出现了好多.cpp~文件
  • 关于Vim的使用问题,怎么让Vim启动时运行某一命令
  • 使用http://vim.spf13.com/配置vim打开文件出错
  • code_complete.vim與supertab.vim有hotkey衝突
  • vim问题,怎么不启动shell窗口,而只是把shell结果放到vim自身的command 栏里去?
  • 关于Vim的使用问题,怎么加Vim建立的程序文件中,自动添加初始化注释
  • vim插件 nerdtree.vim
  • 因为开启了文件类型检测,Vim在打开或新建一个文件时会自动判断文件的扩展名以确定文件类型,在$VIMRUNTIME/filetype.vim中搜索"Makefi
  • 大家帮忙给几个vim比较好用的插件
  • vim安装的问题
  • redhat linuxAS4 vim的安装目录
  • Linux下的vim程序在哪个目录下面?
  • Vim里面的一些脚本问题
  • 安装VIM后替换VI


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3