저는 루비를 Vim으로 쓰는 플러그인을 세 개 썼어요.
이 항목은 내가 만든 세 개의 플러그인을 소개한다.
require
보충 대상unite.vim 소스neocomplcache에서 Ruby2.0 키워드 매개변수 추가
루비 블록 텍스트 대상화
unite-ruby-require.vim
Ruby는 외부의 소스 코드require
를 읽는 데 사용되지만 표준만 해도 대량의 라이브러리가 있어 모두 기억하기 어렵다.
그래서 유니트.vim로 후보 추가 검색require
가능한 플러그인unite-ruby-require.vim을 만들었습니다.:Unite ruby/require
시작 후 루비의 표준 프로그램 라이브러리와 설치된gem,bundler가 프로젝트 로컬에 설치된 프로그램 라이브러리의 경로를 수집하여 require
후보를 한 번 보여 줍니다.
그 다음은 유닛.vim의 추가 검색에서 필요한 라이브러리를 찾으면 됩니다.
예를 들어 URI와 관련된 클래스를 찾으려면 :Unite ruby/require
에서 열고 uri
를 입력하면 이렇게 추출됩니다.
여기서 open-uri
을 선택하고 Enter 키를 누르면 커서 행이 삽입됩니다 require 'open-uri'
.
또한 rbenv 등에서 Vim의 Ruby 인터페이스와 다른 Ruby를 사용할 때let g:unite_source_ruby_require_ruby_command = '$HOME/.rbenv/shims/ruby'
그러면 루비의 경로를 정의합니다.
neco-ruby-keyword-args
Ruby 2.0에는 이름으로 매개변수를 지정하는 키워드 매개변수가 추가되었습니다.
지금까지 산열을 매개 변수로 시뮬레이션하여 이름 전달을 실현했지만 그럴 필요는 없다.# ハッシュのような書き方で引数の名前とデフォルト値を指定
def test(tsura: 'poyo', yaba: 'poyo')
puts tsura+yaba
end
# 指定しないとデフォルト値が使われる
test #=> poyopoyo
# 名前で指定するので順番は意識しなくて良い
test(yaba: 'dameda', tsura: 'mou') #=> moudameda
이로써 매개 변수의 순서를 준수해야 하는 번거로움에서 해방되고 호출자에서 어떤 매개 변수가 어떤 값을 표시하는지 명확하게 할 수 있다.
하지만 파라미터의 이름을 기억해야 한다.
따라서 원본 내의 키워드 매개 변수 이름을 수집하여 자동 보충 플러그인neco-ruby-keyword-args을 만들었습니다.
neocomplcache의 원본으로 설치하기 때문에 전제는 neocomplcache를 사용하는 것입니다.
사용 중인 캡처는 이런 느낌입니다.
이해하기 어렵지만 맨 아래 줄에 test
방법의 tsura
파라미터를 보충하려고 노력하고 있습니다.
보충 후보[K]
는 키워드 매개 변수 보충 표시이고 그 다음은 기본값'poyo'
을 나타낸다.
후보 수집의 범위에 대해서는 상대 경로require
의 원천도 차례로 수집한다. 따라서
hoge.rbdef hoge(foo: 'a', bar: 'b')
end
huga.rbrequire './hoge.rb'
piyo.rbrequire './huga.rb'
hoge #ここで補完できる
이렇게 귀착지 piyo.rb → huga.rb → hoge.rb와 함께 잠수 수집 후보.
vim-textobj-ruby
우선, 텍스트 대상을 모르는 사람은 시도해 보세요:help text-object
. 이것은 Vim의 매우 편리한 기능입니다.
vim-textobj-ruby Rubyclass
, if
, begin
등end
로 끝난 블록을 텍스트 대상으로 한 번에 삭제하고 선택하며 양크를 선택할 수 있습니다.
유사한 플러그인에는vim-textobj-rubyblock이 있지만 자신의 환경에서 잘 실행되지 않고 문법 하이라이트 등을 사용하면 더 잘 선택할 수 있다고 판단해 새로 만들었습니다.
또 카나 씨의 vim-textobj-user이 필요합니다.
플러그인을 설치한 후 운동 대기 모드에 r
맵을 추가합니다. (운동 대기 모드에 대해서는 :help mapmode-o
참조)
다음은 몇 가지 사용 예입니다.
다음 예에서 #%
은 커서 위치입니다.def hoge(yo)
if yo
puts "yo!"
#%
end
puts "everyone!"
end
def
및 if
두 블록 중첩.if
문장 내부에 커서가 있는 상태에서 dar
를 입력하면 if
전체 블록이 삭제됩니다.def hoge(yo)
#%
puts "everyone!"
end
그리고def hoge(yo)
if yo
puts "yo!"
end
#%
puts "everyone!"
end
이와 같이 if
외def
내부에 커서가 있을 때vir
def
내부if yo
부터 puts ...
까지 시각적 모드에서 선택됩니다.
즉, 커서가 있는 위치에 있는 블록을 객체로 텍스트 객체화합니다.
추가 플러그인
그 외에 내가 쓴 것은 아니지만, 내가 먼저 신경 쓰는 플러그인을 열거해 보겠다.
:Unite ruby/require
let g:unite_source_ruby_require_ruby_command = '$HOME/.rbenv/shims/ruby'
Ruby 2.0에는 이름으로 매개변수를 지정하는 키워드 매개변수가 추가되었습니다.
지금까지 산열을 매개 변수로 시뮬레이션하여 이름 전달을 실현했지만 그럴 필요는 없다.
# ハッシュのような書き方で引数の名前とデフォルト値を指定
def test(tsura: 'poyo', yaba: 'poyo')
puts tsura+yaba
end
# 指定しないとデフォルト値が使われる
test #=> poyopoyo
# 名前で指定するので順番は意識しなくて良い
test(yaba: 'dameda', tsura: 'mou') #=> moudameda
이로써 매개 변수의 순서를 준수해야 하는 번거로움에서 해방되고 호출자에서 어떤 매개 변수가 어떤 값을 표시하는지 명확하게 할 수 있다.하지만 파라미터의 이름을 기억해야 한다.
따라서 원본 내의 키워드 매개 변수 이름을 수집하여 자동 보충 플러그인neco-ruby-keyword-args을 만들었습니다.
neocomplcache의 원본으로 설치하기 때문에 전제는 neocomplcache를 사용하는 것입니다.
사용 중인 캡처는 이런 느낌입니다.
이해하기 어렵지만 맨 아래 줄에
test
방법의 tsura
파라미터를 보충하려고 노력하고 있습니다.보충 후보
[K]
는 키워드 매개 변수 보충 표시이고 그 다음은 기본값'poyo'
을 나타낸다.후보 수집의 범위에 대해서는 상대 경로
require
의 원천도 차례로 수집한다. 따라서hoge.rb
def hoge(foo: 'a', bar: 'b')
end
huga.rbrequire './hoge.rb'
piyo.rbrequire './huga.rb'
hoge #ここで補完できる
이렇게 귀착지 piyo.rb → huga.rb → hoge.rb와 함께 잠수 수집 후보.vim-textobj-ruby
우선, 텍스트 대상을 모르는 사람은 시도해 보세요:help text-object
. 이것은 Vim의 매우 편리한 기능입니다.
vim-textobj-ruby Rubyclass
, if
, begin
등end
로 끝난 블록을 텍스트 대상으로 한 번에 삭제하고 선택하며 양크를 선택할 수 있습니다.
유사한 플러그인에는vim-textobj-rubyblock이 있지만 자신의 환경에서 잘 실행되지 않고 문법 하이라이트 등을 사용하면 더 잘 선택할 수 있다고 판단해 새로 만들었습니다.
또 카나 씨의 vim-textobj-user이 필요합니다.
플러그인을 설치한 후 운동 대기 모드에 r
맵을 추가합니다. (운동 대기 모드에 대해서는 :help mapmode-o
참조)
다음은 몇 가지 사용 예입니다.
다음 예에서 #%
은 커서 위치입니다.def hoge(yo)
if yo
puts "yo!"
#%
end
puts "everyone!"
end
def
및 if
두 블록 중첩.if
문장 내부에 커서가 있는 상태에서 dar
를 입력하면 if
전체 블록이 삭제됩니다.def hoge(yo)
#%
puts "everyone!"
end
그리고def hoge(yo)
if yo
puts "yo!"
end
#%
puts "everyone!"
end
이와 같이 if
외def
내부에 커서가 있을 때vir
def
내부if yo
부터 puts ...
까지 시각적 모드에서 선택됩니다.
즉, 커서가 있는 위치에 있는 블록을 객체로 텍스트 객체화합니다.
추가 플러그인
그 외에 내가 쓴 것은 아니지만, 내가 먼저 신경 쓰는 플러그인을 열거해 보겠다.
def hoge(yo)
if yo
puts "yo!"
#%
end
puts "everyone!"
end
def hoge(yo)
#%
puts "everyone!"
end
def hoge(yo)
if yo
puts "yo!"
end
#%
puts "everyone!"
end
그 외에 내가 쓴 것은 아니지만, 내가 먼저 신경 쓰는 플러그인을 열거해 보겠다.
루비의 개발 원조 도구는 vimproc로 비동기적으로 RSense를 실행하여 보충하는 플러그인입니다.
루비를 Vim으로 쓰기 위한 여러 가지 편리한 기능으로 막힌 플러그인입니다.
일체화된 플러그인을 별로 좋아하지 않아서 시도하지 않았지만 Vim의 루비 인터페이스 부분을 사용하여 편집 중인 원본 코드, 추출 방법 등의 보충을 실행하는 것 같습니다. 단,rbenv 등을 사용할 때 Vim에서 사용하는 루비의 원본을 실행하는 루비 버전에 오류가 발생할 수 있으므로 주의해야 합니다.
Reference
이 문제에 관하여(저는 루비를 Vim으로 쓰는 플러그인을 세 개 썼어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Linda_pp/items/839f4b9e07cf7f341835텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)