0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vimscriptで関数を試してみる (Vim/Vimscript)

Posted at

概要

Vimscriptに親しむため、少し関数で遊んでみる。

内容

環境

macOS Catalina
VIM - Vi IMproved 8.1 macOS version Normal version without GUI.

今回は基本的に、外部ファイル記述保存し、vim起動後、:callで実行する。

Hello, world

基本的に、ユーザ定義関数は、大文字から始めるか、s:を付けないといけない。

hello.vim
function Hello()
  echo "Hello, world"
endfunction
:so hello.vim
:call Hello()
output
Hello, world

今回は、:からcallしているので、s:は使いにくい。

引数を扱う

hello.vim
function Hello(...)
  echo a:0
  echo a:1
  echo a:2
  for s in a:000
    echon ' ' . s
  endfor
endfunction
:so hello.vim
:call Hello("Hello,", "world")
output
2
Hello,
world Hello, world

a:0:引数の個数
a:自然数:n番目の引数
a:000:引数のリスト

(echo:多分改行コードとともに;echon:改行コードを加えたりはしない)

コマンドから呼び出せるようにする

毎回call ~ ()を入力するのは大変なので、コマンドで呼び出せるようにする。

hello.vim
function Hello()
  echo "Hello, world"
endfunction

command SayHello call Hello()
:so hello.vim
:SayHello
output
Hello, world

蛇足

コマンドで呼び出す場合、s:も使える。

hello.vim
function s:hello()
  echo "Hello, world"
endfunction

command SayHello call <SID>hello()
:so hello.vim
:SayHello
output
Hello, world

トラブルを避けるため、呼び出し時はs:の代わりに<SID>を使うと良いとのこと。

参考にさせていただいた本・頁

感想

楽しい。

今後

少しずつできることを増やしていきたい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?