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下适用。
使用J可以将上下两行合并为一行

e)   把一段文字转换为全部大写。   
  ~   交换大小写(a   ->   A,   A   ->   a)   
  U   将小写变大写(a   ->   A,   A   ->   A)   
  u   将大写变小写(a   ->   a,   A   ->   a)

(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)
向下查找光标下(或附近)的&lt;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.
]] , [[ , [] , ][  命令可以在函数之间移动。

收藏邀请

工欲善其事,必先利其器--vim-tips相关推荐

  1. 【CS-Notes】工欲善其事必先利其器(Code、Git、Docker、Linux)

    文章目录 Code工作台(工欲善其事必先利其器) 1.通用工具 1.1.编辑器 1.2.Git 基本版本控制 1.3.Docker容器 2.Linux工作台 2.1.Linux命令 2.2.开发工具 ...

  2. 工业工程专业C语言,工欲善其事必先利其器——工业工程课程设置及其核心专业课简介...

    新朋友点上方蓝字"IE臭皮匠"快速关注 公众号成立期间很多IE学子留言,说应聘时HR不知道工业工程是什么.能做什么,对此小编十分有同感.要想了解IE是什么.能做什么,首先要了解学了 ...

  3. 手把手带你入门Python爬虫(一、工欲善其事必先利其器)

    工欲善其事必先利其器 一.下载Python 二.下载安装PyCharm 三.Mysql & Navcat 四.虚拟环境的安装和配置 1. 为什么需要安装虚拟环境? 2. 使用`pip`安装`v ...

  4. github 著名php,工欲善其事必先利其器,盘点Github上那些优秀的PHP项目

    工欲善其事必先利其器,作为一个开发者,了解并使用前人造好的轮子能让我们的开发事半功倍,在这里老宅整理了几个Github上有趣的php项目与大家分享. swoole Github仓库名称:swoole/ ...

  5. pfv和php,【Retina China 2019】工欲善其事必先利其器——影像学在眼底病中的应用与发展...

    原标题:[Retina China 2019]工欲善其事必先利其器--影像学在眼底病中的应用与发展 编者按 影像学是眼底病诊治的利器,伴随着近年来影像学的飞速发展,眼底病展现出一种蓬勃的朝气.2月21 ...

  6. 工欲善其事必先利其器,Apache Kylin原来支持这么多可视化工具

    工欲善其事必先利其器,Apache Kylin原来支持这么多可视化工具 坚持原创,写好每一篇文章 Apache Kylin的广泛应用还得益于它对很多软件都非常的支持,这篇文章我们将汇总一下Apache ...

  7. 工欲善其事必先利其器-C语言拓展–嵌入式C语言(一)

    工欲善其事必先利其器-C语言拓展–嵌入式C语言(一) 我是golang出生,当时做项目的时候java.c++.js.python都折腾过,但是关于c语言的接触,基本上都停留在大一的那个暑假.后来因为要 ...

  8. # 工欲善其事必先利其器-C语言拓展--嵌入式C语言(八)

    工欲善其事必先利其器-C语言拓展–嵌入式C语言(八) 继续来看看新的属性:weak 这个符号知道是弱,但是这个是干嘛的呢?我们先来学习一下强符号和弱符号 文章内容全部来自–><嵌入式C语言 ...

  9. 工欲善其事必先利其器 之 DockerDesktop(下)

    工欲善其事必先利其器 之 DockerDesktop(下) 文章目录 工欲善其事必先利其器 之 DockerDesktop(下) 前言 一.DockerDesktop Settings 二.什么是 W ...

  10. 工欲善其事必先利其器,IDEA必装插件!

    工欲善其事必先利其器,IDEA必装插件! 代码缩略图 CodeGlance 推荐指数:★★★★★ 用过sublime Text的都知道它第一印象就是编辑器最右边有一个缩略图,可以很好的对代码进行导航 ...

最新文章

  1. 微信电视来了 微信遥控传屏弹幕统统有
  2. 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用原型链和EventTrigger
  3. 中国国产万亿次高性能计算机向产业化迈进
  4. 【unity】简要分析yield及协同程序的用法
  5. Linux文件夹的打开方式
  6. 《庆余年》是爆了,但想打高分的阅文仍然没有公式可套
  7. 主mysql删除从服务不同步_MySQL主从不同步解决
  8. 教科书上的LDA为什么长这样?
  9. [ExtJs6] 环境搭建及创建项目
  10. 解决:Do not use built-in or reserved HTML elements as component id: form
  11. MySQL5.7升级到8.0 之后,配合ubantu18.04遇到的常规问题以及非常规问题的解决方案
  12. 2018亚太CDN峰会开幕,阿里云王海华解读云+端+AI的短视频最佳实践
  13. hive复合数据类型之map
  14. netty的零拷贝、架构设计、ByteBuf扩容机制详解
  15. android广播代码汇总二__有序广播
  16. 网站网络流量的极限,你考虑过么?
  17. 开课吧Java课程之详解文件输出流FileInputStream
  18. 企业项目开发--cookie(3)
  19. BZOJ5212: [Zjoi2018]历史
  20. 老四苏-33:舰载机王 苏-33的另一个编号叫苏-27K。自然,它也是从苏-27改过来的,首飞于1987年8月17日。

热门文章

  1. AngularJS精妙绝伦的控制器
  2. 上海某软件公司电话面试分享
  3. 【Java】函数式接口
  4. 离散数学图论旅行规划问题_旅游路径规划问题.pdf
  5. Android 学习笔记之九 下拉刷新
  6. 刺激战场服务器无响应ios,绝地求生刺激战场IOS系统更新后玩不了 绝地求生刺激战场苹果手机更新后进不去...
  7. #Matlab# Yalmip CPLEX使用
  8. Docker容器入门及网易最佳实践
  9. mac系统下.../Users/***Library/为什么进入Finder找不到Library目录?
  10. 关于php的国内比赛,php mvc比赛列表