VIM技巧

VIM技巧

1) 为什么别人的方法在我这里行不通?

(2) 如何找到上次编辑的文件?

(3) 如何复制粘贴?

(4) 如何在多个文件中进行替换?

(5) 如何把fold一次全部打开?

(6) 如何选择或者复制光标所在的单词?

(7) 如何计数搜索的字符串?

(8) 如何去掉高亮搜索?

(9) 如何解决linux下gvim中文菜单乱码的问题?

(10) 如何对所编辑的文件语法高亮显示?

(11) 如何快速插入多行数字0-99?

==============================================================================

(1) 为什么别人的方法在我这里行不通?

估计这是最难回答的一个问题了。:-)

不过首先应该确定你的VIM版本是否足够新,功能是否完整。使用 :version 命令查看你

的VIM版本以及功能。一个常见的情况,如果你用的是RedHat系统,请确定安装了

vim-enhance的rpm包,否则将是不完整的VIM。

(2) 如何找到上次编辑的文件?

Ctrl+O (按两次)

(3) 如何复制粘贴?

方法一:先ma标记当前位置为a,移动到新的位置,再y`a或者y’a复制从标记位置a到

当前位置的内容。`和’的区别:`以字符为单位,’以行为单位。这个方法应该是所有vi

都适用的。(如果不对请指正。)

方法二:按v或V或Ctrl+V进入visual模式,移动光标选择一段内容,按y。三者的区别:

v以字符为单位,V以行为单位,Ctrl+V是块选择。这个方法只在VIM下适用。

(4) 如何在多个文件中进行替换?

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

方法一:

for i in *.c; do

  sed -i -e ‘s/oldvalue/newvalue/g’ $i

done

方法二:

vim *.c

:argdo %s/oldvalue/newvalue/g

(5) 如何把fold一次全部打开?

zR 或者 :set foldlevel=999

(6) 如何选择或者复制光标所在的单词?

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

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

复制光标所在的单词:yiw

(7) 如何计数搜索的字符串?

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

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

        :set report=0

        :%s/./&/g               characters

        :%s//i/+/&/g            words

        :%s/^                   lines

        :%s/the/&/g             “the” anywhere

        :%s//<the/>/&/g         “the” as a word

你可能希望复位 ‘hlsearch’ 或者使用 “:nohlsearch”。

(8) 如何去掉高亮搜索?

方法一::nohlsearch

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

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

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

(9) 如何解决linux下gvim中文菜单乱码问题?

以vim6.3为例

source /usr/local/vim/share/vim/vim63/delmenu.vim

source /usr/local/vim/share/vim/vim63/menu.vim

光source一个menu.vim或者啥也不source都是乱码

另外,也有网友报告说没有遇到此类问题

(10) 如何对所编辑的文件语法高亮显示?

需要解释的是,VI有很多变种,它本身并没有这种功能,提供这种功能

往往是其各种衍生版本,比如说vim。下面就vim中如何语法高亮简单解释一下。

首先,确定一下你所用的操作系统,如果是windows,那么默认的配置文件

就可以工作了。如果还不行,可以用鼠标从syntax菜单下选择一下适合你的

文件类型(新版本的gvim默认把文件类型选择关闭了,需要点开,然后按照

开头字母选择类型)

如果是linux,那么确认一下是否是redhat。如果是redhat,那么需要安装

vim-enhanced的rpm包。这些都做了以后,可以用:syntax on来打开语法高亮。

必要时可以用:set filetype=…来设定你的文件类型。

如果使用图形界面,比如gvim,那么syntax on和set filetype的操作可以

用鼠标在菜单中选择,同windows下。

如果是在控制台中使用vim,还应当确定你的终端设置支持颜色。

(11) 如何快速插入多行数字0-99?

在命令行中输入以下代码,或者先把代码保存到一个外部文件,然后source这个文件:

let i = 0

while i < 100

  put = i

  let i = i + 1

  endw

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

※ 修改:·thinelephant 于 Jun 30 11:03:43 修改本文·[FROM: 211.100.11.*]

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.100.11.*]

发信人: vale (浅谷·等待溪流), 信区: VIM

标  题: VIM中不易发现的强劲功能

发信站: BBS 水木清华站 (Mon May 31 10:54:41 2004), 站内

在我最初使用Vim时,有些功能并不知道,等发现后真后悔自己干了那么久的体力活。

1. * (super star)

向下查找光标下(或附近)的<word>。向上找用#。g*查找则不限制whole word。

2. C-R (magic insert)

在insert模式下,C-R (register) 插入register里的内容,一个有趣的reg是”=”.

假设你想输入123K的具体字节数,不用打开计算器,试试这个“<C-R>=1024*123<CR>”,

“125952”就出来了!

另外在命令行里C-R C-W和C-R C-A是必用的技巧,它们将光标下的<word>和<WORD>

考到命令行里,省了你无数的typing。

3. C-X (auto complete)

在insert模式下,C-X C-P/N/L/F等自动完成前面的词、行、文件名等,是编程时必用的

命令。其中C-P和C-N可以不用C-X。

4. [p & ]p (smart paste)

paste同时自动根据目标行的缩进调整来源行的缩进。在copy代码段的时候非常有用。

5. C-O (fast out, fast in)

在insert模式下,用C-O后可以执行一个normal命令,然后立即返回insert模式,省去了

用ESC的麻烦。

6. [I (fast grep )

[I显示文件中包含光标下<word>的所有行。我常用来浏览某个id在程序中的引用情况。

还有很多相关的命令::h include-search

7. object-select

iw, aw, ib, i], i} … 都非常有用!看help吧

:h object-select

先写这么多,以后再补充吧。



        The world puts off its mask of vastness to its lover.

     It becomes small as one song, as one kiss of the eternal.

※ 来源:·BBS 水木清华站 http://smth.org·[FROM: 210.82.111.*]

发信人: ann77 (ann), 信区: VIM

标  题: 我常用的 vim 的功能

发信站: BBS 水木清华站 (Fri May 28 13:39:08 2004), 站内

光说我马上能够想起来的。

1.

fx

x 表示任何一个字符。

这是最快的在一行种移动的方法了。然后用

;  (分号)

继续移动。

反向移动好像是 t ,但是我记性不好,

总是记不住,于是

0fx

用 0 先回到行首,在 f

2.

任何一个操作命令在加一个移动命令。实现对某个范围的操作。

例如

dfx

表示删除到下一个出现 x 的地方, x 可以使任意字符。

操作命令有  d (cut), y(copy) , p(paste), v (select)

移动命令有  hjkl, f, /, gg, G

3.

任何命令组合都可以先按一些 数字健 表示重复操作。

如:

d123j

删除下面123行。

4. 宏纪录的功能

例如,把文件中所有奇数行和偶数行合并。按如下序列

gg

qq

J

q

100000000@q

5. C-p

在 insert mode 下

写程序的时候,任何超长的变量名字都不成问题。

如果有一个this_is_very_long_variable_name

可以

this<C-P>

90%的可能性自动就把名字补全了。

于是,我写程序的时候,变量的名字其的越来越长,输入越来越快。:)

6. C-x C-p

在写程序 abc.h 的时候

写道 #include “abc.h” 的时候

其实可以

#include “a<C-x><C-p>”

90% 的情况,可以自动补全文件名称。

6.从外部命令输入

:r !ls

可以读取当前目录的文件列表。

如果你对 bash 很熟悉的话,这个功能非常好用

例如

输入

case 1

case 2

….

case 1000:

的方法是

:r !for ((i=0;i<100;i++));do echo “case $i” ; done

7. 利用外部命令处理文字。

我在 ~/.vimrc 中写了一行。

map = ggVG:!indent -nut -st -kr 2>/dev/null<CR>G

我按一个 = ,就可以利用外部命令 indent 美化 我的 c 程序。

我认为,

还可以用外部命令排序

例如

用 v 选定要排序的区域

然后按一个叹号。

:'<,’>!sort

8

我在 ~/.vimrc 中写了

map <Left> :bp<CR>

map <Right> :bn<CR>

map <F4> :bd<CR>

就可以用 左右方向健来切换 buffer

F4 关闭 buffer 了。

9

我在 ~/.vimrc 中写了

runtime ftplugin/man.vim

就可以在把光标停在一个函数上,然后用

/k

查看在线帮助了。



:Man getuid

查看 getuid 函数的手册了。

10.

:make

可以用外部命令 make 编译工程。

:cw

查看出错信息,

:cn

:cp

在出错信息之间跳转。

11.

]] , [[ , [] , ][  命令可以在函数之间移动。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=624403

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100652.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Intellij IDEA快捷键大全(超详细)

    Intellij IDEA快捷键大全(超详细)IntellijIDEA快捷键大全(超详细)

    2022年5月15日
    66
  • java 10套完整项目开发案例 (详细实现步骤)

    java 10套完整项目开发案例 (详细实现步骤)所有推荐的项目,一般都不会在你的环境下面一步到位调试成功的,这需要你自己去慢慢调整。请记住:调整的过程也是一个学习的过程,而且是一个很重要的学习过程。如果你连调试的耐心都没有了,那么建议调整好心态来重新学习。另外一点,如果你想提高自己的JavaWeb水平,一样建议你好好敲一次下面的几个项目。java十大项目开发一.进销存管理系统二.企业内部通信系统三.企业人事管理系统四.酒店管理系统五.图书馆管理系统六.企业快信七….

    2022年7月9日
    28
  • 机器学习之朴素贝叶斯算法详解

    机器学习之朴素贝叶斯算法详解1-1基本流程朴素贝叶斯公式:P(A|B)=P(A)P(B|A)P(B)P(A|B)=P(A)P(B|A)P(B)P(A|B)=\frac{P(A)P(B|A)}{P(B)}一、概率基础知识:条件概率是指事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为:P(A|B),读作“在B条件下A的概率”。若只有两个事件A,B,那么:P(AB)=P…

    2025年8月14日
    6
  • xshell连接虚拟机ssh服务器拒绝了密码_finalshell连接不上虚拟机centos

    xshell连接虚拟机ssh服务器拒绝了密码_finalshell连接不上虚拟机centos以下来自博客:xshell连接虚拟机Connectionfailed-金虹巴巴-博客园(cnblogs.com)一、问题描述:xshell连接不了虚拟机,出现错误提示:Couldnotconnectto’192.168.1.100′(port22):Connectionfailed.二、查找错误原因:1、登录虚拟机,打开终端,切换到root用户,输入systemctlstartsshd.service看能否开启sshd服务,提示开启失败,输入system.

    2022年9月22日
    4
  • 机器学习 之 Haar特征

    机器学习 之 Haar特征Haar特征Haar特征原理综述Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。它分为三类:边缘特征、线性特征、中心特征和对角线特征。用黑白两种矩形框组合成特征模板,在特征模板内用黑色矩形像素和减去白色矩形像素和来表示这个模版的特征值。例如:脸部的一些特征能由矩形模块差值特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一

    2022年6月16日
    42
  • 计算机键盘突然不能用了,如果联想笔记本电脑键盘突然无法使用怎么办?[通俗易懂]

    计算机键盘突然不能用了,如果联想笔记本电脑键盘突然无法使用怎么办?[通俗易懂]如果联想笔记本电脑键盘突然无法使用,该怎么办?早上电脑使用得很好.下午打开计算机后,键盘突然变得不可用,并且对输入没有任何响应.经过反复折腾,问题终于解决了.需要它的朋友可以参考它.今天,编辑器遇到了这样的情况:我早上很好地使用了计算机.下午打开计算机后,键盘突然变得不可用,并且对输入没有任何响应.经过反复折腾,问题终于解决了.现在,我将与您分享.详细的解决过程.软件名称:360…

    2026年1月30日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号