SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
XVim with MacVim 
and smartgrep 
@pebble8888
iOS App Develop 
• AppleのXcodeを使う人がほとんどである 
• Xcodeはvimキーバインドではない 
• vimmerはどうするか?
XVim? 
ではもちろんなく。。
XVim 
• vim key-bindings Xcode plugin 
• OpenSource MIT License 
• 2012年2月からgithubで公開 
• 作者は日本人, JugglerShu氏
Xcode Pluginとは? 
MacOSX 
Xcode 
XVim
見た目はこんな感じ
持っている機能 
• TextObject (ciw, ci”, …) 
• Map ( nmap, … ) 
• Global mark, File mark ( ma, mA, ‘a, ‘A, `` ) 
• Visual Block 
• XVimモードとXcode通常モードの切り替え 
• .xvimrc 
• Window操作 (vim非互換) (CTRL-w j, …)
持っていない機能 
• R ( replace mode ) 
• markの永続化(ファイル化) 
• vim script (変数、制御構造) 
• Windowsで作られたCRLFのファイル対応
Time Line 
2012/2 2014/11 
基本機能追加バッファ高速化 
コードベース大幅修正、VisualBlock機能追加、 
テストコード追加
簡単に行き来したい 
Xcode MacVim 
+XVim
From Xcode to MacVim 
• Xcodeで開いているファイルを行番号を指定し 
てMacVimで開く 
• .xvimrcに以下を追加する 
noremap ,t :execute "!/Applications/mvim +" . line(".") . " %"<CR>
メインブランチに取り込まれ 
ていない機能を使用している 
• bang (!) 
• execute 
• dot(.)による文字連結 
• 組み込み関数line
From MacVim to Xcode 
• MacVimで開いているファイルを行番号を指定 
し、Xcodeで開く 
• AppleScriptを利用したvim plugin
Apple Scriptはこんなの 
#!/usr/bin/osascript 
# arg1 Filename:row 
on run argv 
tell application "Xcode" to activate 
tell application "System Events" 
tell process “Xcode" 
delay 1.0 
keystroke "o" using {shift down, command down} 
keystroke item 1 of argv 
key code {52} 
end tell 
end tell 
end run
vimscript 
• tokorom/xcode-actions.vim 
• pebble8888/xcodeopener
個人的に追加実装したい機能 
• vim互換のCtrl-i,Ctrl-o (開発中) 
• PlaceHolderを意識したカーソル移動 (開発中)
Other option 
• ViCiOUS for Xcode $19.95 
• Xcode plugin。安定している。
Other option 
• AppCode + Ideavim plugin 
• personal license $99 / open source license $0 etc..
AppCode to MacVim 
• AppCodeから行番号指定でMacVimを開くこ 
とは可能
Other option 
• MacVimをメインで使い、Xcodeはそのまま 
• clangでコード補完する 
Bundle ‘Rip-Rip/clang_complete' 
let g:clang_library_path = "/Library/Developer/CommandLineTools/ 
usr/lib"
smartgrep 
• コメントアウト部分を除外するgrep 
• 言語はファイル拡張子で判定 
• git,hgリポジトリのルートフォルダを自動検知 
• メジャーなプログラミング言語に対応 
(C,ObjC,ruby,vimscript,…)
Example 
void glare_at( int brave_boy, int pretty_girl ){ 
/* BUGFIX 
petrify( brave_boy ); 
*/ 
petrify( pretty_girl ); 
} 
$ smartgrep -ew petrify 
/Users/pebble/func.c:5: 
petrify( pretty_girl );
More Information 
• https://github.com/JugglerShu/XVim 
• https://github.com/pebble8888/smartgrep

Mais conteúdo relacionado

Mais procurados

Maglica - A Simple Internal Cloud Tool at #techkayac
Maglica - A Simple Internal Cloud Tool at #techkayacMaglica - A Simple Internal Cloud Tool at #techkayac
Maglica - A Simple Internal Cloud Tool at #techkayacGosuke Miyashita
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム信之 岩永
 
Rubyで実はwritev(2) が使われているはなし
Rubyで実はwritev(2) が使われているはなしRubyで実はwritev(2) が使われているはなし
Rubyで実はwritev(2) が使われているはなしMasaki Matsushita
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3Masahiro Wakame
 
NuxtでChrome拡張作ってみた
NuxtでChrome拡張作ってみたNuxtでChrome拡張作ってみた
NuxtでChrome拡張作ってみたkyoheichida
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEWMasahiro Wakame
 
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応marsee101
 
Nuxt+TypeScript+Class構文のはなし
Nuxt+TypeScript+Class構文のはなしNuxt+TypeScript+Class構文のはなし
Nuxt+TypeScript+Class構文のはなしkyoheichida
 
jQuery+TypeScriptやってみた
jQuery+TypeScriptやってみたjQuery+TypeScriptやってみた
jQuery+TypeScriptやってみたMitsuo Kawashima
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminalTakuya ASADA
 
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略祐司 伊藤
 
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)marsee101
 
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系祐司 伊藤
 
Qt5 の新機能 2012/12/15
Qt5 の新機能 2012/12/15Qt5 の新機能 2012/12/15
Qt5 の新機能 2012/12/15Takumi Asaki
 
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するC++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するYou&I
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vbYohichiShiina
 
Hakodate - simple framework
Hakodate - simple frameworkHakodate - simple framework
Hakodate - simple frameworkHiroaki Murayama
 

Mais procurados (20)

Decsx launcherv 2.5
Decsx launcherv 2.5Decsx launcherv 2.5
Decsx launcherv 2.5
 
Maglica - A Simple Internal Cloud Tool at #techkayac
Maglica - A Simple Internal Cloud Tool at #techkayacMaglica - A Simple Internal Cloud Tool at #techkayac
Maglica - A Simple Internal Cloud Tool at #techkayac
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
 
Rubyで実はwritev(2) が使われているはなし
Rubyで実はwritev(2) が使われているはなしRubyで実はwritev(2) が使われているはなし
Rubyで実はwritev(2) が使われているはなし
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
 
NuxtでChrome拡張作ってみた
NuxtでChrome拡張作ってみたNuxtでChrome拡張作ってみた
NuxtでChrome拡張作ってみた
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
 
Nuxt+TypeScript+Class構文のはなし
Nuxt+TypeScript+Class構文のはなしNuxt+TypeScript+Class構文のはなし
Nuxt+TypeScript+Class構文のはなし
 
Net fringejp2016
Net fringejp2016Net fringejp2016
Net fringejp2016
 
jQuery+TypeScriptやってみた
jQuery+TypeScriptやってみたjQuery+TypeScriptやってみた
jQuery+TypeScriptやってみた
 
Study Swift
Study Swift Study Swift
Study Swift
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminal
 
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
 
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
 
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
 
Qt5 の新機能 2012/12/15
Qt5 の新機能 2012/12/15Qt5 の新機能 2012/12/15
Qt5 の新機能 2012/12/15
 
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するC++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vb
 
Hakodate - simple framework
Hakodate - simple frameworkHakodate - simple framework
Hakodate - simple framework
 

Semelhante a Using xvim with macvim

Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境eagletmt
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装Heliumエンジンの設計と実装
Heliumエンジンの設計と実装DADA246
 
CMake multiplatform build-tool
CMake multiplatform build-toolCMake multiplatform build-tool
CMake multiplatform build-toolNaruto TAKAHASHI
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPUTakuro Iizuka
 
Xcode 6の新機能
Xcode 6の新機能Xcode 6の新機能
Xcode 6の新機能Shingo Sato
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセスMakoto Kato
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成shigeki_ohtsu
 
Monomeeting 20081022
Monomeeting 20081022Monomeeting 20081022
Monomeeting 20081022Atsushi Eno
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携Tomoaki Shimizu
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理gu4
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドToru Tamaki
 
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Akira Hatsune
 
Andoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かすAndoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かすshobomaru
 
メトロスタイルアプリ開発 最初の一歩
メトロスタイルアプリ開発最初の一歩メトロスタイルアプリ開発最初の一歩
メトロスタイルアプリ開発 最初の一歩ShinichiAoyagi
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 
組込みAndroid入門実習
組込みAndroid入門実習組込みAndroid入門実習
組込みAndroid入門実習ksk sue
 

Semelhante a Using xvim with macvim (20)

Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
 
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装Heliumエンジンの設計と実装
Heliumエンジンの設計と実装
 
CMake multiplatform build-tool
CMake multiplatform build-toolCMake multiplatform build-tool
CMake multiplatform build-tool
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
Xcode 6の新機能
Xcode 6の新機能Xcode 6の新機能
Xcode 6の新機能
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 
Monomeeting 20081022
Monomeeting 20081022Monomeeting 20081022
Monomeeting 20081022
 
Clrh 110827 wfho
Clrh 110827 wfhoClrh 110827 wfho
Clrh 110827 wfho
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界
 
Andoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かすAndoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かす
 
メトロスタイルアプリ開発 最初の一歩
メトロスタイルアプリ開発最初の一歩メトロスタイルアプリ開発最初の一歩
メトロスタイルアプリ開発 最初の一歩
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 
組込みAndroid入門実習
組込みAndroid入門実習組込みAndroid入門実習
組込みAndroid入門実習
 

Using xvim with macvim