精华内容
下载资源
问答
  • VimR试图改进Vim的经验,例如很快,打开功能拉Xcode TextMate软件,这似乎是一个有前途的项目,甚至有点不稳定。我的大多数安装插件仍然VimR一起工作。
  • dictionary.vimVim的Dictionary.app接口
  • dash.vim 这个Vim插件将使用出色的搜索术语,从而使API查找变得简单。 它提供了新的:Dash命令和(推荐)映射系列。 警告: 是仅适用于Mac的应用程序,因此您将无法从在Linux或Windows上使用dash.vim中受益。 ...
  • Amahi Android AppThis repository contains the source code for the Amahi Android app.You will need JDK 1.8+ installed to work with it. Gradle, Android SDK, and project dependencies will be downloaded.....

    ic_launcher.png Amahi Android App

    0cf70368d6b97ff3e07d9727b5cdd27b.png

    68747470733a2f2f7472617669732d63692e6f72672f616d6168692f616e64726f69642e7376673f6272616e63683d6d6173746572

    68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f616d6168692e7376673f7374796c653d736f6369616c266c6162656c3d40616d616869

    68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636861742d6f6e253230667265656e6f64652d627269676874677265656e

    This repository contains the source code for the Amahi Android app.

    You will need JDK 1.8+ installed to work with it. Gradle, Android SDK, and project dependencies will be downloaded automatically.

    Building the app

    Set API information.

    $ vim api.properties

    url.amahi = URL

    url.proxy = URL

    client.id = ID

    client.secret = SECRET

    chromecast.app.id = APP_ID

    This is something to keep private and you obtain it by sending a message to support@amahi.org.

    Build the application using a command line or using GUI.

    $ ./gradlew clean assembleDebug

    Once you have built the application, you will be needing credentials to use the application. Go to Amahi website and create your account, once the account is activated, you will see the description on how to set up the Amahi server. However, this is not strictly needed, as we have a set up of a demo server called "Welcome to Amahi" which you should see even without your own server installed.

    Code Style Convention

    Set the Code Style Scheme to Default in Android Studio settings.

    Run Reformat Code on changed files before committing.

    Please check out the Code Style for Contributors section in AOSP and maintain as much consistency with them as possible.

    Generating the documentation

    Install Android documentation.

    $ android update sdk --no-ui --force --all --filter doc-21

    Generate the documentation.

    $ ./gradlew clean assembleDebug generateDebugJavadoc

    Debugging

    For debugging the APIs and logging requests and responses you can either use Logcat on Android Studio or enable Chuck Interceptor (UI based) from the steps given here.

    To debug with some special purpose server, you can find steps here.

    展开全文
  • open ' /Applications/Vim Cheatsheet.app/ ' 在Vim中使用F1打开备忘单,然后按Return键退出该应用程序。 从源构建 将存储库克隆到本地计算机 对于Xcode,使用以下命令进行构建: $ xcodebuild /PATH/TO/PROJECT ...
  • 配置 Vim 达到可以撸 iOS app 的效果

    我们都知道 Vim 和 Emacs 都是文本编辑器中的上古神器,你也许用 ctags,cscopes 配合 Vim 完成过大型 C 或者 C++ 的开发,你也许配合过其他插件,完成过 JavaScript,python 代码的开发,但是很少有人试过 iOS app 的开发吧,毕竟 iOS 的框架包含了很多东西,以及 Objective-C 天生很长的 API 名字,让我们没办法把此神器用起来,今天我就来给大家讲下我是怎么使用 Vim 开发 iOS App 的,当然 Emacs 也可以

    begin

    使用 Vim 开发 iOS App 并不是特殊的爱好,而是被 Xcode 8 活生生的逼的,刚开始更新了 Xcode 8 以后,Xcode 8 把第三方插件给屏蔽了,导致没有 XVim 给我用了,没有 XVim 以后,发现异常不顺手,于是尝试用了一段时间的 AppCode,不得不说 AppCode 是一个非常好的 IDE,但是他有个很大的缺点,那就是 Java,JetBrain 家的东西都很不错,唯一缺点就是基于 Java,整个平台都略慢,然后我在不断的 google 过程中,发现了有人竟不知何谓恐惧,竟然使用 Vim 开发 iOS App,最后我也学会了这个新姿势 XDDDD

    不过目前,只支持 Objective-C 代码的开发,swift 的话,没有解决工程文件自动补全的问题,因为目前大家使用的流行的 swift 自动补全工具 SourceKitten 并没有支持 workspace 所以暂时还没用起来

    以及,目前不支持调试,因为发现 Vim 对调试的支持确实好糟糕…

    准备活动

    工欲善其事,必先利其器,主角是 Vim 或者 Emacs,少了其他配角和龙套们,也没办法正负恐惧,我们来看看用到了些什么东西,让我们的 Vim 成为利器的,这里只是点下他们的名,文章后面会把链接奉上

    • 首先我们来看主角队的同学们,他们是征服恐惧的主力

      • macOS,没有神话,开发 iOS 还是只能在 Mac 上
      • 支持 python 的 Vim,可以用 Vim8 或是 neoVim 食用更佳,我就用的 neoVim
      • YCMD,其实他是 YouCompleteMe + YouCompelteMeDeamon 的合体,自动补全、定义跳转等功能,就依赖他了
    • 接下来我们来看看其他龙套们

      • Vbundle,装插件用的,没他,龙套和主角都不用上场了
      • unite + unite-outline + unite-outline-objc,提供了方法导航
      • auto-pairs,自动补全右括号
      • ctrlp,文件搜索跳转
      • Ag,字符串搜索工具
      • syntastic,语法检查工具
      • vim-clang-format,代码格式工具

    恩,需要的东西大概就是这些了,Vim 的配置文件,我是基于好久以前 square 开源的 maximum-awesome 的,所以,配合这个食用风味更佳,我的 dot file 也放到了 github 上,欢迎大家 star

    进入正题

    龙套们,基本都可以通过配置 vbundle 来完成安装,之后只用配置对应的快捷键就好了,这里的正题,要搞定难搞的主 YCMD

    难搞的主 YCMD

    安装 YCMD

    YCMD 的安装很简单,主要是需要一定的配置

    首先在 vim 的配置文件中加入下面的内容,更新配置文件并执行 BundleInstall 命令,让 Vbundle 把 YouCompleteMe 插件装上

    Plugin 'Valloric/YouCompleteMe'

    然后到这个路径 ~/.vim/bundle/YouCompleteMe 这里是 YouCompleteMe 安装的位置,在这里需要编译 YCM,一条命令就可以搞定

    ./install.py --clang-completer --system-libclang

    --clang-completer 告诉脚本我们需要 clang 的支持,--system-libclang 告诉编译脚本使用系统的 clang,因为之前 clang 升级 4.0 的时候,并没有已经编译好的包给我下载,所以这里不用系统 clang 的话,编译脚本会下载一个 clang 3.0,这样就无法支持 iOS 10.0 以后的 sdk 了,因为 iOS 10.0 以后的 sdk 为了支持 swift 引入了一些 clang 3.0 不支持的新语法,所以这里要加上 --system-libclang

    然后等他编译完成,这样 YCMD 就配置好了,似乎这里看并不是很难搞,其实难搞的是如何在 iOS 项目中配置好自动提示

    为 Xcode 项目配置 YCMD

    这里进入到了真正征服恐惧的地方了

    YouCompleteMe 的原理

    曾经有人说过,编辑器再怎么神器是没办法超过 IDE 的,因为 IDE 是通过编译、解析整个项目的所有文件,来达到语法错误提示,自动补全,定义跳转等高级功能的,而 YCMD 就是来弥补这一个差距的,YCMD 通过传入完整的编译参数,编译需要提示的文件,来实现自动补全,这样没办法超过 IDE 的部分就被抹平了

    配置一个项目

    这里我们配置一个复杂的项目来练练手,首先 YCMD 是不可能通过 Xcode 的项目文件或是 workspace 文件获取到编译参数的,所以这一步需要手来,当然,将来可以做成自动的,因为目前手动的做其实很方便,所以现在还没有做成自动的

    首先,YCMD 是通过每个项目路径下的 .ycm_extra_conf.py 脚本文件来获取编译参数的,这个脚本文件中有一个叫做 FlagsForFile 的函数,我们通过这个函数返回某一个特定文件需要的编译参数,一般情况下大部分文件的编译参数是一样的,我们来看一个配置的列子

    import os
    import ycm_core
    
    flags = [
            '-resource-dir',
            '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0',
            '-x objective-c',
            '-arch armv7',
            '-fmessage-length=0',
            # '-fmodules',
            # '-gmodules',
            '-fdiagnostics-show-note-include-stack',
            '-fmacro-backtrace-limit=0',
            '-D__arm__=1',
            '-D__IPHONE_OS_VERSION_MIN_REQUIRED=80000',
            '-std=gnu99',
            '-fobjc-arc',
            '-Wnon-modular-include-in-framework-module',
            '-Werror=non-modular-include-in-framework-module',
            '-Wno-trigraphs',
            '-fpascal-strings',
            '-Os',
            '-fno-common',
            '-Wno-missing-field-initializers',
            '-Wno-missing-prototypes',
            '-Werror=return-type',
            '-Wunreachable-code',
            '-Wno-implicit-atomic-properties',
            '-Werror=deprecated-objc-isa-usage',
            '-Werror=objc-root-class',
            '-Wno-arc-repeated-use-of-weak',
            '-Wduplicate-method-match',
            '-Wno-missing-braces',
            '-Wparentheses',
            '-Wswitch',
            '-Wunused-function',
            '-Wno-unused-label',
            '-Wno-unused-parameter',
            '-Wunused-variable',
            '-Wunused-value',
            '-Wempty-body',
            '-Wconditional-uninitialized',
            '-Wno-unknown-pragmas',
            '-Wno-shadow',
            '-Wno-four-char-constants',
            '-Wno-conversion',
            '-Wconstant-conversion',
            '-Wint-conversion',
            '-Wbool-conversion',
            '-Wenum-conversion',
            '-Wshorten-64-to-32',
            '-Wpointer-sign',
            '-Wno-newline-eof',
            '-Wno-selector',
            '-Wno-strict-selector-match',
            '-Wundeclared-selector',
            '-Wno-deprecated-implementations',
            '-DOBJC_OLD_DISPATCH_PROTOTYPES=0',
            '-isysroot',
            '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk',
            '-fstrict-aliasing',
            '-Wprotocol',
            '-Wdeprecated-declarations',
            '-miphoneos-version-min=8.0',
            '-g',
            '-Wno-sign-conversion',
            '-Wno-infinite-recursion',
            '-fembed-bitcode-marker',
            '-I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform',
            '-I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include',
            '-I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks',
            '-I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include',
            '-F/Users/apple/Documents/Developer/CloudLifeWorkspace/iOS/Develop/Project_iOS/project',
            '-MMD',
            '-MT',
            '-MF',
    ]
    
    SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ]
    
    HEADER_EXTENSIONS = [ '.hpp', '.hxx', '.hh', '.h' ]
    
    def FlagsForFile( filename, **kwargs ):
            staticFlags = flags
            return {
                    'flags': staticFlags,
                    'do_cache': True
            }

    这里上面的代码可以当作 .ycmd_extra_conf 文件的一个最小模板,也就是如果我们的项目里面没有子目录,没有第三方库,那么使用这个已经可以为 iOS 项目提供自动提示了

    颤抖吧凡人,如此这般的编译条件,需要你能够把 Xcode 项目配置中的编译参数完完全全翻译出来才行,但是我也是凡人,所以这个不是我写的,而是有方法生成的,方法如下

    把需要增加自动提示的项目用 Xcode 打开,然后编译,然后如下图所示,找到编译信息然后找到项目中的一个文件,注意不要是 Pod 中的文件,最右边,有个三条横线的按钮,点开他,没错,你看到了完整的编译参数,下图中 EXPORT PATH =.... 下面的所有内容就是完整的编译参数

    • Report View

    Xcode 中的 Report View

    • 戳这个按钮

    Xcode 中的编译信息按钮

    • 我们要的编译信息

    Xcode 中的编译信息

    右键,copy,找到你熟悉的记事本,参数都是空格分隔的,所以,这里我们把它转换成上面代码中的形式,并把不需要的去掉,比如这里我注释了 -fmodules-gmodules 因为这样编译没办法使用 module

    把这些加入到配置文件中后,再打开 Vim 你就会发现自动提示变得非常好用了,不过这里还会有一个问题,如果编译的时候,有无法找到 UIKit,这是因为 YCMD 默认引入了 macOS SDK 的路径,导致了编译时 clang 认为我们编译目标是 macOS,所以如下图需要修改 ~/.vim/bundle/YouCompleteMe/third_party/ycmd/ycmd/completers/cpp/flags.py 文件,去掉默认引入 macOS sdk 的编译参数,这样就好了

    需要修改的 YCMD 文件

    效果图们

    至此,最主要的问题已经被我们解决了,接下来看下效果如何

    • 首先是自动提示

    自动提示

    • 查找文件

    文件查找

    • 方法名称大纲

    Outline

    • 搜索字符串

    搜索字符串

    • 语法检查

    语法检查

    好处

    这么做自然不是为了花样炫技,更多的是为了探索 Vim 的使用,以及更多了解 Xcode 项目

    • 完整的 Vim 环境,写代码再也不用碰鼠标了
    • Vim 插件 + 不满的地方自己动手丰衣足食
    • 快速,跟 Vim 比速度,笑话
    • 方便快接的字符串搜索,替换操作
    • 学了点 Python
    • 附赠一个 C/C++ 的开发环境

    已知问题

    虽然目前已经可以达到写代码的程度了,但是还是有很多问题,如下:

    • 没办法 debug
    • 不支持 Xcode 中的 group 展示
    • 头文件的提示有问题
    • 不能使用 @import 的导入,会报语法错误
    • xib,storyboard 自然是不行的,我的做法是 Xcode 里面拖 UI + 关联 Outlet + Debug,Vim 中做大量的代码编辑操作
    • [] 方括号的匹配没有 Xcode 那么智能
    • delegate 或是全局的自动提示,需要使用 ctrl + 空格打开,并且有时候会有点慢
    • delegate 的自动提示有时候需要输入前面半部分的方法名才会有,比如上面截图的 tableView,需要先输入 - (void)tableView:(UITableView *)tableView 再使用 ctrl + 空格才会有非常好的自动提示,当然输入前面这部分也会有一定的提示,整体上看能接受

    上面的问题都是一直以来我没有解决的问题,大家要是发现有破解的方法,欢迎联系

    end

    折腾这么多,相信大家已经可以用 Vim 敲 iOS 的代码了,虽然虽然当初开始折腾的时候,踩了很多坑,比如 clang 3 升级 clang 4 后,原来的配置都不能用了,但是收获挺多的也并不是这么一篇文章能够说完的,除了 Vim 大家也可以试试 Emacs 下的配置,我用的 Spacemacs,添加了 ycmd 的 layer,配置后也有了相同的效果

    也欢迎大家丢砖

    参考资料

    • YouCompleteMe: 自动补全插件
    • Vbundle: 插件管理插件
    • Unite: 一个通用的显示插件,可以用来显示各种东西,比如文件列表,buffer 列表,outline
    • Unite-outline: Unite 插件的 outline 插件
    • Unite-outline-objc: Unite-outline 插件的 Objective-C 插件
    • auto-pairs: 自动补全括号的插件
    • ctrlp: 文件查找插件
    • Ag: 字符串查找插件
    • syntastic: 语法检查插件
    • vim-clang-format: clang format 格式化插件
    • VimAwesome: 方便的 Vim 插件导航网站
    • maximum-awesome: 一个比较有名的 Vim 配置,包括了上面的 Vbundle,Ag,ctrlp,syntastic 等插件,以及一些很方便的配置,我的配置文件是基于这个配置的,使用前先安装这个
    • 我的配置文件: 我的配置文件,除了上文写的内容,还加了些 php,python,js 等开发配置,以及一些自己觉得用起来方便的配置
    展开全文
  • vim-marked:在Marked.app中打开当前的Markdown缓冲区
  • vim

    千次阅读 2011-04-27 15:29:00
    前言:后台开发不用vim是不可能的,特别是有的环境下只有vim可用,这可如何是好?所以,vim不得不用。将一些常用的使用方法记录于此。显示空格或者tab的标记vim set listset nolist使用SecureCrt 以及连接linux,导致...

    前言:
    后台开发不用vim是不可能的,特别是有的环境下只有vim可用,这可如何是好?所以,vim不得不用。
    将一些常用的使用方法记录于此。

    在vi中按u可以撤销一次操作

    u   撤销上一步的操作
    Ctrl+r 恢复上一步被撤销的操作

    流行的文本编辑器通常都有前进和后退功能,可以在文件中曾经浏览过的位置之间来回移动。在 vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。
    相关帮助:  :help CTRL-O  :help CTRL-I   :help jump-motions


    显示空格或者tab的标记

    :set nu显示行号 
    :set nonu隐藏行号 
    :set ic设置搜索时忽略大小写 
    :set noic搜索时对大小写敏感 
    :set list显示不可视字符 
    :set nolist不显示不可视字符 
    :set showmode显示当前操作模式 
    :set shownomode不显示当前操作模式 
    :set显示所有的vi环境变量设置 
    :set all显示所有的vi环境变量可能取值及其当前设置值

     

    如果使用vim打开了多个文件,如vim file1 file2 ... fileN
    可以通过
    :n 或 :prev来跳转到前一个或者后一个文件
    还可以通过
    :first或:last来跳转到第一个和最后一个文件

    如果你只打开一个文件,如vim file1
    然后在使用过程中,通过
    :e file2编辑了第二个文件,这时, :prev是不起作用的
    可以用
    :e#返回上一个编辑的文件

    无论哪两种方式都可以用
    :bN跳转到打开的第N个文件
    如:b1跳转到第一个打开的文件


    vim set list

    set nolist


    使用SecureCrt 以及连接linux,导致的中文乱码问题汇总:

    (特别提醒: 如果您已经按照下面的设置设置好了, 还是没有正确的显示中文, 那么请将securecRT终端再开一个窗口 clone session。不知为何, 第一次进去总是乱码)

    场景一:

    使用终端 securecrt终端,通过cat方式显示utf-8编码的文件,需要:

    1)securecrt的选项设置编码为utf-8

       session-option=》terminal=》Appreance=》character encoding。

       并通过新开一个终端的方式使之生效!!(必须新开一个新的终端窗口,原窗口改完不会生效)

       说明:

       .bashrc 里面不论配置 LC_ALL=xx_xx.utf8, 还是 LC_ALL=zh_CN.gbk, 都不影响显示

    场景二:

    使用终端 securecrt终端,通过vim方式显示utf-8编码的文件,需要:

    1)securecrt的选项设置编码为utf-8

       session-option=》terminal=》Appreance=》character encoding。

       并通过新开一个终端的方式使之生效!!(必须新开一个新的终端窗口,原窗口改完不会生效)

    2)vim的.vimrc配置如下:

        set nocompatible

    set encoding=utf-8

    set fileencodings=utf-8,cp936

    “如上设置是vim可以识别utf-8和gbk的文件

       说明:

       .bashrc 里面不论配置 LC_ALL=xx_xx.utf8, 还是 LC_ALL=zh_CN.gbk, 都不影响显示

    场景三:

    使用终端 securecrt终端,通过cat方式显示gbk编码的文件,需要:

    1)securecrt的选项设置编码为gbk

       session-option=》terminal=》Appreance=》character encoding。

       并通过新开一个终端的方式使之生效!!(必须新开一个新的终端窗口,原窗口改完不会生效)

       (!!这个好像不用新开窗口也能生效)

       说明:

       此时 LC_ALL的配置应该不影响,不过我此时的LC_ALL配置为:export LC_ALL=zh_CN.gbk

    场景四:

    使用终端 securecrt终端,通过vim方式显示gbk编码的文件,需要:

    1)securecrt的选项设置编码为utf-8

       是的!必须选择utf-8!!!,否则不能生效!!!

       并通过新开一个终端的方式使之生效!!(必须新开一个新的终端窗口,原窗口改完不会生效)

    1)设置vim

        set nocompatible

    set encoding=utf-8

    set fileencodings=utf-8,cp936

    “如上设置是vim可以识别utf-8和gbk的文件

       说明:

       此时 LC_ALL的配置应该不影响,不过我此时的LC_ALL配置为:export LC_ALL=zh_CN.gbk

    :tselect 显示列表

    :tn和:tp 显示后一个tag和前一个tag


    ctrl+n ctrl+p 来在提示菜单中上下选择.
    可用于自动补全是的多重提示

    在历史窗口(文件)之间跳转的通用方法:
    ctrl+o ctrl+i 在历史浏览的各个文件中跳转.
    无用你是用tags的ctrl+]跳走了,还是通过gf调走了, ctrl+i/O都可以在不同的文件之前跳转

    如何想VC2005那样,一下子打开指定的代码中指定头文件,跳转到指定的头文件?

    vim的path功能, 解决了我打开文件头文件不方便的难题

    举例如下:

     18 #include "panel_auth.h"           

     19 #include "ptlogin_app_id.h"       

     20 #include "uuid_key.h"             

     21 #include "html_template.h"

    如何在光标处在panel_auth.h下的时候, 快速的打开panel_auth.h文件呢?

    答案: vim的gf命令 和 path功能.

    1)gf用来打开光标下的文件.

    2)path用于指定搜索文件的路径

    举例: 假设我的源码放在isd_qzoneappbase_proj路径下, 如下方法设置path即可.

    set path=.,/usr/include,

    set path+=/data/home/nemo/code/isd_qzoneappbase_proj/**

    首先把当前路径和系统头文件路径设在path路径下,然后再把源码的路径设置进去

    此时:就可用gf打开isd_qzoneappbase_proj目录(包括递归目录)下的任一头文件, 也可以打开系统的头文件


    一种将当前光标下的单词自动输入到命令行的方法
     <C-R>=expand("<cword>")<CR><CR>
    该方法非常有用,可以用来自定义很多快捷键!
    eg:如下的快捷键将自动执行tselect 当前光标下的函数。 查找当前光标下函数的所有tag
    153 nmap <C-@>d :tselect <C-R>=expand("<cword>")<CR><CR>

    定义一些快速关闭窗口的快捷键
    ,ww 快速关闭当前窗口
    ,wh 快速关闭左侧窗口
    ,wj ,wk ,wl 的含义同hjkl的方向的含义一样,快速关闭指定方向的窗口
    配置如下:
    155 let mapleader = ","

    162 "关闭上下左右窗口的快捷键

    163 "另外注意

    164 "  <C-W>o 关闭其他所有窗口                                                                                                     

    165 "  <C-w>q 关闭当前窗口

    166 map <silent> <leader>wj <C-w>j<C-w>q<cr>

    167 map <silent> <leader>wh <C-w>h<C-w>q<cr>

    168 map <silent> <leader>wl <C-w>l<C-w>q<cr>

    169 map <silent> <leader>wk <C-w>k<C-w>q<cr>

    170 "关闭当前窗口

    171 map <silent> <leader>ww <C-w>q<cr>


    vim中快速格式化代码(将凌乱不看的代码对齐)
    进入v模式,选中代码, 按 = 号

    vim中的一些简写,缩写语法
    快速输入名字
    :iabbrev zdl Nemozhang // 记Nemozhang的缩写为zdl, 在插入模式下输入zdl,再接一个空格是,会自动把zdl扩展为nemozhang
    :iab zdl Nemozhang也行

    程序员常用的快速输入注释
    :iabbrev #b /****************************************

    :iabbrev #e <Space>****************************************/

    查看全部简写
    :abbreviate

    删除简写
    :iunabbreviat zdl
    :iunab zdl

     
    vim 中在函数间快速移动,快速的在代码中移动


    zb : 将当前光标所在行显示在页面最下面
    zt  : 将当前光标所在行显示在页面最上面 
    zz : 跳到中间(!!! 慎用, 因为大写的ZZ会直接保存并退出vim)

    % 跳到 和()  {}等匹配的对应位置

    { 或  } 跳到下/上一个空白行 ==========> 非常有用!!! 注意{是shift+[键

    [[ 跳到函数定义开头 或者上一个函数定义开头

    ][ 跳到函数定义结尾 , 或者下一个函数定义结尾

    ]]  跳到下一个函数开头
    gd  跳到变量的定义处(对局部变量有效)(不怎么有用,可以直接#号搜索即可)

    vim中使用make

      :cc 3           跳到第三个错误处

      :cnext          下一个错误

      :cprevious

      :clist! 查看所有make的报错


    查看vim中的已有的按键映射

    :map
    比如我本机输出:

       ,ee           :e ~/.vimrc<CR>                                                                         

       ,ss           :source ~/.vimrc<CR>
       <C-W><C-T>    :WMToggle<CR>

     
    vim 自带的文件浏览 (不是WMToggle插件哦)

    edit . 浏览当前文件夹文件, 可以快速的打开其他文件
    edit dirname 浏览指定的文件夹

    不退出vim,不保存当前文件,而打开新的文件

    :edit! foo.txt 强行忽略当前文件的修改,而打开新的文件

    既不想保存,也不想放弃修改,又想编辑其他的文件

            :hide edit foo.txt

    打开文件时,回到上次对该文件的最后编辑的位置 (非常高效)

    `" 回到你离开文件时光标所在的位置。 比如我上次编辑了applist_select.cgi下次可以通过这种方法重新回到最后查看过的位置

    `. 回到你离开文件是最后改动的位置。
     
    vim的文件另存为

    :saveas newfilename 另存为。与windows下行为一致,保存后,编辑新的文件。而不是老文件。
    :w newfilename 只是把文件保存为一个新的文件,但vim仍然编辑的是老文件。

    已只读方式打开文档(真正只读,不可修改)
    vim -M applist2.cpp

    打开文件
    :e ~/1.php  // 打开~/1.php

     


     
    查询vim的设置情况

    :set compatible? 查询是否设置了兼容模式

    :set filetype? 查询vim识别的当前的文件类型


    vim中F1,F2,F3,F4等按键映射不管用,出现P,Q,R,S等奇怪字符
    按 F1 显示 P 然后换行
    按 F2 显示 Q 然后换行
    按 F3 显示 R 然后换行
    按 F4 显示 S 然后换行
    答案:我是用的终端secureCRT的设置有问题。
    option-terminal-emulation-terminal:【xterm】。即可。

    vimdiff
    linux下高级的,彩色的文件比较工具
    使用方法: vimdiff file1 file2

    各个差异点之间快速移动
    跳转到下一个差异点:]c

    跳到上一个差异点:[c

    把一个差异点中当前文件的内容复制到另一个文件里

    dp (diff "put")


    把另一个文件的内容复制到当前行中

    do (diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)重新比较文件差异(通常vim在文件更新后会自动更新差异,如果没有,可以通过下面命令手动更新)

    :diffupdate

    设置差异点处显示的上下文行数(vim默认是6)

    :set diffopt=context:3


    关于vimdiff非常详细的参考资料:
    技巧:Vimdiff 使用
    http://www.ibm.com/developerworks/cn/linux/l-vimdiff/#ibm-pcon

    有个文件,混杂了utf-8编码和gbk编码, 在vim里面打开完全乱码无法看,没有一个字可以看清楚
    在windows下可以打开,只有部分显示乱码.
    这是因为我的vim设了utf-16le, 这个格式几乎可以打开任何文件,可惜的是,当文件不是utf-16le的时候,打开就完全乱码了.
    下面是我的错误的vim设置(其实也不算错误啦)
    set fileencodings=usc-bom,utf-8,chinese,gb18030,utf-16,utf-16le
    vim打开文件时, 首先从前面的编码尝试, 如果能打开就采用其. 当vim尝试了一圈之后,发现前面的都一一不支持, 最后utf-16le支持打开,可惜我的文件并是不utf-16le格式的!
    解决方法:
    把utf-16le去掉即可. 去掉之后, 我的utf8和gbk的混合文件就可以以utf-8打开或者gbk打开了. 至少只有部分字符时乱码,大部分英文自己是可以看的.
    所以一般都把兼容性不强的编码放在前面,比如上面的usc-bom应该是ascii编码,兼容性最差.设置utf-16le是个好事,能兼容打开更多的文档,可以遇到了混杂utf8和gbk的时候就杯具了, 如果极少使用utf-16le的文件, 那么干脆把这个utf-16了去掉较好.

    vim中的滚屏
    Ctrl+E   向前滚动一行(光标跟着一起走)
    Ctrl+Y   向后滚动一行(光标跟着一起走)
    Ctrl+F/B 向前向后滚动一页

    .vimrc文件的第一行一般都是 :set nocp 或 :set nocompatible, 为什么?
    因为.vimrc存在的目的就是为了是vim在vim模式下工作。 所以,先设为vi不兼容,也就是vim模式。
    :help cp 查看更多信息

    有没有办法在不退出vim的情况下重新加载.vimrc的配置?
    :source ~/.vimrc 即可。
    可以映射快捷键,在.vimrc中加入如下两行
    let mapleader = ","
    map <silent> <leader>ss :source ~/.vimrc<cr>
    map <silent> <leader>ee :e ~/.vimrc<cr>
    这样在vim的正常模式下, 输入 “,ss” 即可重新加载.vimrc, 输入“,ee”即可编辑.vimrc
    有关<leader>的含义,参考 易水 vim进阶 第4章 vimrc初步

    编辑模式下退格键backspace退格键和上下左右光标移动键不能用,非常不方便。
    在编辑模式下,移动光标会变成A B C D等字符并换行。
    这是vim与vi的兼容性问题。默认vim工作在vi兼容模式下,很多新手带来了困惑。
    :set nocp 或 :set nocompatible
    查看帮助 :help nocp

    编辑模式下,backspace退格键无法删除文档里原有的东西,只能删除刚输入的东西。
    需要设定
    :set bs=2 或 :set bs=indent,eol,start 或 :set backspace=indent,eol,start
    查看帮助 :help bs
    文章参考:http://blog.csdn.net/ablo_zhou/archive/2009/02/03/3860236.aspx

    光标在行尾按右方向键不到下一行行首,在行首按左方向键不到上一行行尾,怎么回事?
    需要设定
    :set ww=b,s,[,]
    参考帮助 :help ww 或者 :help whichwrap
            b: 在 Normal 或 Visual 模式下按删除(Backspace)键。
            s: 在 Normal 或 Visual 模式下按空格键。
            h: 在 Normal 或 Visual 模式下按 h 键。
            l: 在 Normal 或 Visual 模式下按 l 键。
            <: 在 Normal 或 Visual 模式下按左方向键。
            >: 在 Normal 或 Visual 模式下按右方向键。
            ~: 在 Normal 模式下按 ~ 键(翻转当前字母大小写)。
            [: 在 Insert 或 Replace 模式下按左方向键。
            ]: 在 Insert 或 Replace 模式下按右方向键。
    文章参考:http://blog.csdn.net/ablo_zhou/archive/2009/02/03/3860236.aspx

    复制粘贴时,一旦使用了dd,dw,原来复制的东西就被删除的东东替换了
    使用指定的寄存器粘贴. 避免受到dw dd命令的干扰
    "0p 0指的是第0个寄存器, 双引号不可少. 完整命令时: 双引号0p
    更多参考寄存器的玩意参考:
    http://blog.csdn.net/KataDoc360/archive/2009/08/09/4427721.aspx


    快速在项目中查找文件 不用在各个目录之间切换
    类似于si的输入部分文件名字自动匹配一样.
    1) 易水 vim进阶 的博客上有个vim插件可以用
    2) 人肉方法
        1) 收集全部项目文件
            find . -name "*.h" -o -name "*.c">allfiles
        2)用vim打开allfiles 搜索指定的文件名 通过 gf命令快速打开

    快速返回上次编辑过的地方(光标停留的地方)
    类似于vc2005的ctrl + '+/-'.

    快速查看文件信息
    CTRL+G 文件名字,文件行数,以及当前所在的位置行号

    光标快速移动
    hl 左右 jk上下
        如何方便的记住呢?  键盘上J所在那行最右一个字母字母是J,所以,J是向右, 同样H是向左喽.
        j可以认为字母的下半身比较大,往下沉.
    w,b向左/向右移动一个单词,相当于windows的ctrl+<>
    当某一行较长时,hl上下移动时可能会跨行,这时你可以在按 h、j、k 或者 l 之前键入一个 g即可.
    0行首,
    $行尾
    ^第一个非空字符 (非常有用!!!)
    (注意,三个键在键盘上市从右向左,^和$需要配合shift键输入)
    向前移动一个词w,向后移动一个词b (相当于windows下的ctrl+光标移动)
    *:读取光标处的字符串,并高亮文章中的全部字符串.并且移动光标到它再次出现的地方。(相当于快速搜索sourceinsight的alt+f4快速搜索)
    #:反方向快速搜索光标所在的单词
    3j 将会把光标向下移动三行。

    numG:将光标定位到num行。(输入该命令是无须线输入:号),等价于 “:num回车”
    文件开头:gg
    文件结尾:G
    上翻页:ctrl+b (记住翻页时bf即可。)

    下翻页:ctrl+f
    a:在当前字符的右边插入
    o: 新插入一行

    如何用vim 删除指定区域的文字?(注意,不是删除一样哦)
    输入 V 进入 visual 模式, 左右移动光标选中区域, 按D键即可删除。
    复制指定区域通删除是一样的,区别的是,复制使用y。

    vim支持列模式吗?
    输入 Ctrl+V 进入 列visual模式,可以选择矩形块。

    如何不退出vim的情况下执行shell命令?
    vim :!进入shell模式,输入shell命令

    如何让vim跳到一个函数的原型(函数的定义)处?
    ctrl+]调往函数定义(如果有多个定义,使用:ts), 看完后跳回ctrl+t。
    前提是要ctags的支持。
    1)安装ctags  apt-get install exuberant-ctags
    2)ctags -R * 在当目录下为所有源代码文件生成tags。 在当前目录下运行vim即可支持ctrl+], ctrl+t跳转。
    3)如果tags在其他的目录,那么可以通过如下的方式明确指定tags
         :set tags=~/code/xxx/tags
    4)  需注意:vim启动时,vim的工作目录(vim启动是所在的目录)的名为tags的文件档案会被自动载入,同时,位于$VIMRUNTIME/doc 及 $HOME/.vim/doc 目錄下的 tags 檔也會自動載入。而且,凡是載入的 tags 檔裡頭所有標誌文字都可以使用補全鍵來補全,別忘了這個好用的功能。
    5)如果同一个在多处存在相同的tag,怎么办?
       :ts 命令就能列出一个列表供用户选择。  
       :tp为上一个tag标记文件,“:tn”为下一个tag标记文件。当然,若当前tags文件中用户所查找的变量或函数名只有一个,“:tp,:tn”命令不可用。

    更多信息参考后文 ctags的使用

    vim中的查找
    输入:/keyword 回车
    n下一个匹配, N上一个匹配

    vim 高亮当前光标下的关键字
    *  寻找光标所在处的单词word(全字匹配)。直接输入*号即可. n/N:向下/上遍历高亮的结果
    g* 模糊匹配当前光标所在地方的单词
    据说还有 mark.vim插件. 没试过.
    取消高亮输入:nohl

    vim书签mark的功能 回到上次编辑的位置
    :marks  得知目前所有書籤的列表
    mx  x 代表 26 個小寫英文字母,這樣游標所在處就會被 mark。
    `x  回到書籤原設定位置。` 是 backward quote,就是 Tab 鍵上面那一個。

    小写字母书签  只作用於單一檔案內。
    大写字母书签  可作用於編輯中之各檔案間。
    数字书签        可作用於前次編輯的十個檔案。

    数字的用法比较特殊,'0 是回到前一次編輯檔案中離開前的最後位置,'1 則是回到前二次編輯檔案的最後位置,依此類推。您不必使用 m 來標示,vim 會自動記憶。很玄吧!其實這是 viminfo 的功能,您要認真追究的話,請 :h viminfo-file-marks。viminfo 關掉,就沒這個功能了!
    所謂前次指的是前次啟動的 vim。

     


    vim中的替换:%s/10.3.3.3/10.6.207.119/cg等价于::1,$s/10.6.207.2119/10.6.207.119/cg将全部出现的 "10.3.3.3" 替换为 10.6.207.119, 并且替换每一个进行提示确认是否替换.语法:[range]substitute/from/to/[option]在[range]指定范围,将“from”替换成“to”;substitute可简写为s如:1,10s/first/second/将1到10行的first替换为second:%s/first/second/
    % 表示范围是全文
    上句表示全文每行首个匹配“first”的替换成“second”
    s默认每行首个匹配“first”的替换成“second”

    要全文替换,命令为
    :%s/first/second/g
    其中%表示所有行,g表示对于每一行进行操作
    (!!!暂时发现 不用g也会全局替换, 即是一行中出现两个目标, 两个目标都会被替换.)
    对于要匹配的字符串中有特殊字符,需要反斜线/进行转义(这部分涉及到元字符,正则表达式),例如
    用  /tau  替换  /lambda
    s///tau///lambda

    [option] : 表示操作类型
    如:g 表示全局替换;
    c 表示进行确认

    vim中的替换模式
    rx 把但前光标位置的字母替换为x。 也就是点击r进入替换模式。
    这样省的每次都先进入插入模式把东西先删除掉再插入。

    vim中删除
    dd删除一个行,x删除一个字符,这些都很常用的啦
    d$删除当前到行尾 dw删除当前单词

    注意:
    $总是代表着行尾。
    g代表着文件开头或结尾 gg文件开头 G文件结尾
    再配合着下面“光标快速移动一节”的0,^可以做很多灵活的删除

    撤销和重做
    u撤销(undo),.重做redo

     

    批量注释以及反注释
    ctrl+v 之后,然后按j或者k,选择要注释的多行(也可以按上下箭头键,但是有些情况下不起作用),然后按 I (注意大写的i),进入插入模式,然后写下//,然后按下ESC即可。

    what
    how
    就会变成
    //what
    //how

    反注释怎么办呢?更简单了,同样Ctrl+v进入列选择模式,移到光标把注释符选中,按下d,OK了吧?!

     

    vim显示/隐藏行号
    :set nu 或者 :set number
    不显示行号
    :set nonu

    vim拷贝模式 vim下粘贴东西是往往每行都多出个tab的文章偏移的问题

    copy的时候 :set paste, 进入copy模式 :set nopaste改回来

     

    vim正用呢死机了,输不了东西,没反应
    按下 ctrl+q.即可
    因为不小心按到了 ctrl+s 锁屏了,<C-Q>解锁.

     

    vim多标签浏览
    vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口.
    用法
    :tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab
    标准模式下:
    gt , gT 可以直接在tab之间切换。

    不常用:
    :tabc       关闭当前的tab // nemo comment:可用:q退出即可。
    :tabo       关闭所有其他的tab
    :tabs       查看所有打开的tab
    :tabp      前一个
    :tabn      后一个


    vim多子窗口浏览
    常用的:
    :qa! 退出全部窗口
    Ctrl-w 方向键 或 hjkl键在各个视窗之间切换
    Ctrl-w Ctrl-w 在窗口之间循环切换
    Ctrl-w o  即 :only! 使游標所在之視窗,成為目前唯一顯示的視窗
    不常用的:
    Ctrl-w n  即 :new。開一空的新視窗。
    Ctrl-w s/v  即 :水平或垂直分割窗口
    Ctrl-w q  即 :q 結束分割出來的視窗。


    垂直分割窗口,并且打开当前文件夹树

    :vsplit .

    当然也可是 <C-W>v , 再输入:e .

    水平分割窗口,并且打开当前文件夹树

    :split .

    当然也可是 <C-W>s , 再输入:e .

    调整窗口大小

    CTRL-W =        使得所有窗口 (几乎) 等宽、等高,

    但当前窗口使用 'winheight' 和                'winwidth'。

    CTRL-W <        使得当前窗口宽度减 N (默认值是 1)。

    CTRL-W >        使得当前窗口宽度加 N (默认值是 1)。

    CTRL-W -        使得当前窗口高度减 N (默认值是 1)。

    CTRL-W +        使得当前窗口高度加 N (默认值是 1)。


    调整窗口位置

    <整个窗口的移动>

    CTRL-W-H 将窗口移到最左边

    CTRL-W-L 将窗口移到最右边

    CTRL-W-J 将窗口移到底端

    CTRL-W-K 将窗口移到顶端

    更多窗口操作

    http://liaochengcn.blog.163.com/blog/static/17021133620104270817822/

     

    vim文件浏览 File Explorer 资源管理器 文件列表树
    安装 winmanager
    :WMToggle 调出文件列表树窗口
    :ctrl+w然后方向键,在不同窗口间切换, 或者直接ctrl+ww(两个w)切换
    下载以及安装:http://www.vim.org/scripts/script.php?script_id=1440
    下载bz2, 解压开是个*.vba, 拷贝到 ./vim/plugin, 进入到plugin目录, 用vim打开这个*.vim文件, 运行:so %
    即可.
    参考:http://hi.baidu.com/phps/blog/item/1bf9bb09105711266a60fb7a.html

    去掉讨厌的 >---
    11 "set list
    12 "set listchars=tab:>-,trail:-

    vim智能单词提示 智能补全
    <C-X>,<C-P> 即:先ctrl+x,再ctrl+p
    或者直接<C-N> 或这直接 C-P

     


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zdl1016/archive/2010/10/02/5919129.aspx

    展开全文
  • vim和macvim

    2015-04-10 17:02:35
    上次用Homebrew安装了 最新版的vim 和 macvim,本想着这两个东西 会使用相同的配置文件,谁知道 当我用macvimvim打开同一个.c文件时,可以看到他们两个使用的配置是不同的,macvim有语法高亮,vim没有。...

    上次用Homebrew安装了 最新版的vim 和 macvim,本想着这两个东西 会使用相同的配置文件,谁知道 当我用macvim和vim打开同一个.c文件时,可以看到他们两个使用的配置是不同的,macvim有语法高亮,vim没有。这说明 macvim读取的rc文件和vim读取的rc文件不完全相同,那么他们各自读取哪里的rc文件呢?

    打开vim输入:version 可以看到

       system vimrc file: "$VIM/vimrc"
         user vimrc file: "$HOME/.vimrc"
     2nd user vimrc file: "~/.vim/vimrc"
          user exrc file: "$HOME/.exrc"
      fall-back for $VIM: "/usr/local/share/vim"

    说明vim的全局设置是在/usr/local/share/vim/vimrc ,而当前用户设置是在~/.vimrc

    而打开macvim 输入:version 可以看到

       system vimrc file: "$VIM/vimrc"
         user vimrc file: "$HOME/.vimrc"
     2nd user vimrc file: "~/.vim/vimrc"
          user exrc file: "$HOME/.exrc"
      system gvimrc file: "$VIM/gvimrc"
        user gvimrc file: "$HOME/.gvimrc"
    2nd user gvimrc file: "~/.vim/gvimrc"
        system menu file: "$VIMRUNTIME/menu.vim"
      fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"   

    这个system menu file我还没懂是干什么的,但是可以明显看到 macvim的全局设置 是在 /Applications/MacVim.app/Contents/Resources/vim/vimrc里,当前用户的配置是在 ~/.vimrc 。

    综上所述,macvim和vim 的全局配置是不同的,而当前用户的配置是相同的,那么我们要想让 两者 读取相同配置,只要在在 ~/.vimrc里写上我所需要的设置就可以了。

    展开全文
  • MacVim &VIM插件

    千次阅读 2016-04-02 20:54:41
    1、Vundle 是vim的一款插件管理软件git地址 : https://github.com/gmarik/Vundle.vim 安装步骤 1、在终端输入 $ git clone ...2、在 ~/.vimrc 或者 MacVim.app ▸ Contents ▸
  • <p>I'm using vim to write AppEngine code. There are two useful plugins that don't work well. <p>Syntastic: It shows the appengine imports as errors. goimports ...
  • vim:vim备份-源码

    2021-03-21 09:17:16
    启动:vim --startuptime startup.report 正在执行的操作::profile启动profile.log:profile func *:profile文件*“此时执行缓慢的操作:profile暂停:noautocmd qall! 按照installSteps.txt将.bash *和.vimrc...
  • Vim

    千次阅读 2006-04-14 23:24:00
    -------------------------------------------------------------------------...如果不想在编辑文件时自动生成备份文件的话,可以这么做:打开GVim安装目录下的vimrc_example.vim,将其中的如下部分中的else语句用引号
  • App.svelte vim的苗条语法突出显示。 与病原体一起安装 如果您已经在使用病原体,则可以跳至步骤3。 安装病原体(如果尚未安装) mkdir -p ~/.vim/autoload ~/.vim/bundle && \ curl -LSso ~/.vim/autoload/...
  • ./Vim.app/Contents/MacOS/Vim -g 原始vim,MacVimvim-cocoa有什么区别? 原始的 (从vim官方Subversion存储库中签出)仅为Mac OS X用户提供了基于Classic / Carbon的GUI,它缺少一些重要功能,也没有给我们带来...
  • 例如, app.get_user()的返回类型假定为具有setter方法的对象,而app.get_users()的返回类型假定为列表。 Deep TabNine基于GPT-2,该GPT-2使用了Transformer网络体系结构。 该体系结构最初是为解决自然语言处理中...
  • vimhelp.org 这是网站背后的代码。 它在上运行。 为了使测试和部署更加容易, Makefile提供了一些方便的目标。 使用make help来了解更多信息。 此代码可根据MIT许可证免费获得(请参阅文件LICENSE)。
  • vim命令

    2017-04-06 17:06:46
    命令历史 以:和/开头的命令都有历史纪录...vim filename 打开vim并创建名为filename的文件 文件命令 打开单个文件 vim file 同时打开多个文件 vim file1 file2 file3 … 在vim窗口中打开一个新文件 :open file 在新窗口
  • vim学习笔记(2)——vim配置

    万次阅读 2015-04-01 11:53:53
    记录vim的配置,随时更新MacVim安装: homebrew,安装位置:/usr/local/...alias vim=”/Applications/MacVim.app/Contents/MacOS/Vim”——设置别名,默认在终端中使用macvim的命令行版(关闭终端后会失效,在~/.zs
  • macvim

    2016-08-02 17:57:44
    下载MacVim 使用homebrew的命令: brew install macvim 网站下载: http://www.macupdate.com/app/mac/25988/macvim 测试:命令行输入: gvim
  • lucario:Vim,Atom,Sublime Text,Jetbrains编辑器,Terminal.app,iTerm,Xcode和XTerm的最佳平面主题
  • VIM IDE

    2015-05-19 14:40:35
    1. yum install ctags 2. 备份好系统的原来的vim配置文件,以备... mv ~/.vim ~/.vim.orig  mv ~/.vimrc ~/.vimrc.orig 3. git同步vimrc文件下来:   git clone git://github.com/humiaozuzu/dot-vimrc.git
  • MacVim配置mvim

    2021-03-26 17:06:48
    将macvim.app 拷入app 将mvim 拷入:$sudo cp -f mvim /usr/bin/下 Mac权限问题 你在操作上面第二步的时候可能会遇到问题:operation not permitted。 这是因为一些mac用户在升级系统之后,电脑
  • 编译自己的Vim前面我们已经对Vim有比较丰富的了解了。我们也知道Vim有很多编译时的选项,很多功能依赖于这些编译选项。其中最重要的就是脚本语言的支持,很多发行版本是不全的。为了支持我们所需要的功能,我们需要...
  • 命令行使用MacVim

    2021-03-01 17:59:32
    `alias gvim=’/Applications/MacVim.app/Contents/MacOS/Vim -g 总结 我个人还是喜欢直接使用命令行中的vim,这样更纯粹,原汁原味。 但是MacVim还是有它的独占的功能的。比如有GUI的菜单,Command + S直接可以保存...
  • 我在带有SF Mono字体的macOS catalina上使用Terminal.app。 如何安装? 该项目使用插件进行插件管理,因此我们首先需要安装插件,然后更新所有插件。 为了安装最新版本,只需运行curl或wget脚本,它将为您设置vim...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,432
精华内容 27,372
关键字:

appvim