Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all 5720 articles
Browse latest View live

Deniteでctags検索のSourceを作ってみる

$
0
0

Deniteに移行した時点から、ctags検索に不満があり
https://qiita.com/hisawa/items/3498951e84eac77ac890

fzfなどを使ってみましたが、nvimに移行してからctags検索だけfloatingではないのが気になってました。
https://qiita.com/hisawa/items/fc5300a526cb926aef08

探してもDeniteでctagsを検索する方法がみつからなかったので
Deniteのsourceを自作して、ctags検索ができるようにしました。
https://github.com/hsawaji/denite-ctags

DeniteのSourceを初めて作ったので、メモを残しておきます。

準備

まずはDeniteのhelpをみます。

:help denite-create-source

rplugin/python3/denite/source/*/.py.

にファイルを置くと、Sourceとして読み込まれると書いてあります。
すでに実装されている他のSourceを参考に、最低限__init__gather_candidatesがあれば動きそうなのがわかりました。

ここで簡単に動きを検証してみました。

test.py
from.baseimportBasefromdeniteimportutilclassSource(Base):def__init__(self,vim:util.Nvim)->None:super().__init__(vim)self.name='test'self.kind='file'defgather_candidates(self,context:util.UserContext)->util.Candidates:return[{'word':'hoge'},{'word':'fuga'}]
:Denite test
=> hoge
   fuga

gather_candidatesで返した配列が表示されるようになりました。
これで、後はctagsの候補を返してやれば完了するはず。。

ctagsの候補を表示する

vimにはtaglistというタグの検索結果を返してくれるやつがあるのでそれを使います。

:help taglist

既存のtag.pyをみると

  • __init__vimをインスタンス変数に入れる
  • self.vim.call('command', '引数')で呼び出す

とすれば行けそうです。

今回はtaglistなので

self.vim.call('taglist', 'word')

を追加しました。
ここまでで、こんなソースになります。

from.baseimportBasefromdeniteimportutilclassSource(Base):def__init__(self,vim:util.Nvim)->None:super().__init__(vim)self.name='test'self.kind='file'self.vim=vimdefgather_candidates(self,context:util.UserContext)->util.Candidates:taglist=self.vim.call('taglist',context['args'][0])return[{'word':t['cmd']}fortintaglist]

下記のようにしてhogehogeを検索します。

:Denite test:hogehoge

候補先に飛ぶ

Deniteのhelpを見ると

:help denite-kind-file

action__pathaction__patternがあれば目的地に飛べる感じがします。

それらを追加したソースがこちら。
taglist['cmd']には正規表現のように/^$/が入っていたのでre.subで削除しています。

importrefrom.baseimportBasefromdeniteimportutilclassSource(Base):def__init__(self,vim:util.Nvim)->None:super().__init__(vim)self.name='test'self.kind='file'self.vim=vimdefgather_candidates(self,context:util.UserContext)->util.Candidates:taglist=self.vim.call('taglist',context['args'][0])return[{'word':t['cmd'],'action__path':t['filename'],'action__pattern':re.sub('\/\^|\$\/','',t['cmd'])}fortintaglist]

ここまでほとんど完成です。
以上のソースの見た目などを調整したものがdenite-ctagsになります。

まとめ

Deniteのsourceを初めて作りましたが、簡単に作れることがわかりました。
ドキュメントや既存ソースがわかりやすかったので、それを参考に作ると良いと思います。


Mac 環境構築メモ

$
0
0

MacBookProを購入した際に開発環境構築を行ったのでそのメモ。

3本指ドラッグ

https://support.apple.com/ja-jp/HT204609

デフォルトのシェルをzshからbashに変更

bashに慣れているため変更する。

https://qiita.com/___xxx_/items/c9a30e78196998f4160c

brewインストール

とりあえずインストール
https://brew.sh/index_ja

/bin/bash -c"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

bashのアップデート

Macのbashはバージョンが古いみたいなのでアップデート
https://qiita.com/zaburo/items/1b990436ca45545959e9
→5.x系にアップデートされた

$ bash --version
GNU bash, バージョン 5.0.18(1)-release(x86_64-apple-darwin19.5.0)
Copyright (C) 2019 Free Software Foundation, Inc.

Vim設定

とりあえず最低限の設定だけ行う

~/.vimrc
syntax enable
colorscheme desert

Gitのアップデート

MacのGitは少し古いみたいなのでアップデート
https://qiita.com/normalsalt/items/f200ba50363ebfd46df0
→v2.28.0にアップデート

$ git --version
git version 2.28.0

ターミナルを見やすく&Gitのブランチを表示

https://qiita.com/hmmrjn/items/15d0fe15e5d03586ad46

VSCodeのターミナルも文字化けするので下記設定が必要

{"terminal.integrated.fontFamily":"Menlo for Powerline"}

Docker Desktop for Macのインストール

https://hub.docker.com/editions/community/docker-ce-desktop-mac/

【Vim】カーソルキーでの移動を禁止する設定(ドラゴン付き)。

$
0
0

事前インストール

cowsayとslコマンド必要なので予めインストールが必要
brew install cowsay sl

設定方法

.vimrcに以下を設定する。

設定するとAAのドラゴンが丁寧に教えてくれる。

function TeachKey(message)let summon =join([!clear; cowsay -f dragon “,a:message,“を押すのだ”])
    exec summon
endfun
nnoremap <buffer><Left><Esc>:call TeachKey(h)<CR>
nnoremap <buffer><Right><Esc>:call TeachKey(l)<CR>
nnoremap <buffer><Up><Esc>:call TeachKey(k)<CR>
nnoremap <buffer><Down><Esc>:call TeachKey(j)<CR>
nnoremap <buffer><PageUp><Esc>:call TeachKey(‘Ctrl+B’)<CR>
nnoremap <buffer><PageDown><Esc>:call TeachKey(‘Ctrl+F’)<CR>
inoremap <buffer><Left><Esc>:call TeachKeyBi)ding(h)<CR>
inoremap <buffer><Right><Esc>:call TeachKey(l)<CR>
inoremap <buffer><Up><Esc>:call TeachKey(k)<CR>
inoremap <buffer><Down><Esc>:call TeachKey(j)<CR>
inoremap <buffer><PageUp><Esc>:call TeachKey(‘Ctrl+B’)<CR>
inoremap <buffer><PageDown><Esc>:call TeachKey(‘Ctrl+F’)<CR>
vnoremap <buffer><Left><Esc>:call TeachKeyBi)ding(h)<CR>
vnoremap <buffer><Right><Esc>:call TeachKey(l)<CR>
vnoremap <buffer><Up><Esc>:call TeachKey(k)<CR>
vnoremap <buffer><Down><Esc>:call TeachKey(j)<CR>
vnoremap <buffer><PageUp><Esc>:call TeachKey(‘Ctrl+B’)<CR>
vnoremap <buffer><PageDown><Esc>:call TeachKey(‘Ctrl+F’)<CR>

nnoremap <buffer><Del><Esc>:<C-u>!sl<CR>
inoremap <buffer><Del><Esc>:<C-u>!sl<CR>
vnoremap <buffer><Del><Esc>:<C-u>!sl<CR>set backspace=0

確認方法

設定されるとこんなのが出る。

image.png

参考URL

vi(vim)で完全にカーソルキーを無効化させたい - スタック・オーバーフロー

development/vim

vimの設定あれこれ

$
0
0

タブ幅を変更する

set tabstop=4

自動インデント幅を変更する

set shiftwidth=4

[MacVim]みなれないメッセージを見かけたら

$
0
0

[vim-hug-neovim-rpc] Vim(pythonx):ImportError: cannot import name 'unpackb' from 'msgpack' (unknown location)

これは、デフォルトがpython3.7だったときに流れます。どうやら、MacvimもPython3.8をデフォルトにしたようです。

pyenv global 3.8.6

などしてMacvimなどをビルドし直せば、メッセージは消えています。

※ もちろん、pynvimなどのpip3パッケージ依存は入れているものとします。

【Vim】初めてのVim

$
0
0

概要

この記事ではVim入門的な内容となっており、自身の備忘録や初学者の役に立てればと思い執筆しました。
主にVimを用いた基本操作が中心です。

環境

OS:macOS Catalina
Terminal:iterm2

基本操作

編集

【編集モード】
ファイルを開いた段階では編集が行えないので、キーボードのiを入力することで編集モードに切り替わります。

上記は基本操作で以下が応用になります。

【カーソルの後ろから編集】
iではなくキーボードのaを押下

【行末から編集】
シフトキーとaを押下

【行頭から編集】
シフトキーとiを押下

終了

※escキーを押下し編集モードから切り替わっていることが前提※

【保存せずに終了】
:q!

【ファイルを開き直す】
:e!

【保存して終了】
:wqもしくは:ZZ

ノーマルモードでの編集操作

1.削除

【デリート】
x

【バックスペース】
シフトキー+X

【行全体を削除】
dd

【カーソル移行を削除】
シフトキー+D

2.移動
hjklを使う

h 左へ移動
l 右へ移動
j 下へ移動
k 上へ移動

応用として数字+キー操作で行数を指定移動することも可能

例:3kとした場合3行上へ移動出来る

w 単語が,で区切られていた場合、単語単位で右へ移動
$ 行末へ移動
gg 行の先頭へ移動
シフト+G ファイルの最終行へ移動
:+数字 指定した行へ移動

その他

【読み取り専用モード】
view ファイル名とすると読み取り専用モードで開く。そのため保存は行えません。
また、vim -R ファイル名で同様の操作が可能です。

【行番号を表示】
:set nu

【一括置換】
例:カーソル行のaをbに置換→:s/a/b
例1:ファイル全体のaをbに置換→:%s/a/b
例2:ファイル全体のaをbに置換→(置換前に確認をする場合):%s/a/b

最後に

今回執筆したコマンドはごく一部なので今後も追加と修正をしながら本記事をブラッシュアップしていこうと思います。
お読みいただきありがとうございました。

PhpStormでVim修行したい

$
0
0

インストール方法

PhpStorm>Pregerences>Plugins

Marketplaceを選択し、「IdeaVim」を検索

スクリーンショット 2020-10-19 18.02.42.png

インストール後、再起動する

再起動すると、なにやらポップアップが出てきた

スクリーンショット 2020-10-19 18.07.41.png

Noを選択すると、移動キー[ h , j , k , l ]を押したままカーソルを動かし続けることができなくなるようなのでYesを選択

IdeaVimを無効にしたいときは、Tools>Vim Emulatorのチェックを解除する

修行

修行前修行後効果
escCtrl + [標準モードに戻る
jCtrl + f1ページ下
kCtrl + b1ページ上
jCtrl + u半ページ下
kCtrl + d半ページ上
jggファイルの先頭
kShift + gファイルの終わり
lw単語単位で右に移動
hb単語単位で左に移動
h^行頭
l$行末
lからのiaカーソルの後ろに文字を追加
l連打からのiA行末に文字を追加
h連打からのiI行頭に文字を追加
iからのback spacex1文字削除
iからのback space連打dw1単語削除
iからのback space連打dd1行削除
iからのback space連打2ddとか3dd複数行削除
-Ctrl + n次の単語補完へ移動
-Ctrl + yカーソルを固定してページ上
-Ctrl + eカーソルを固定してページ下
-zzカーソルがある行を画面中央に

【環境変数】vimを使って環境変数を設定する!

$
0
0

1, はじめに

今回はvimを使って環境変数を設定する方法について書いていきます。
なお、ローカル環境に設定することを想定しています。

basic認証など、環境変数の設定する際に役立てれれば幸いです!

初学者投稿の記事になりますので、もしかしたら間違った部分もあるかもしれません。
その時はご教授いただけると幸いです!

2, 環境

  • macOS:Catalina 10.15.7

3, 設定方法

terminalを使用し、設定していきます。

1, vim ~/.zshrcを入力し、エンターを押します。

vim ~/.zshrc

そうすると、以下のような画面に遷移します。
既に書いてあるものはご自身のパソコン次第で変わると思われます。

export PATH="hoge/fuga/....."                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
"~/.zshrc" 8L, 199C

2, iを入力し、インサートモードに変更

i

すると、画面の下部が以下のようになります。

export PATH="hoge/fuga/....."                                                                                                                                      
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
-- INSERT --  #このように表示される

3, exportを使って環境変数を定義します。

移動はカーソルキーで行えます。
(カーソルキー以外の方法もありますが割愛します)

!!!既に書いてあったものは、消さないように!!!

export PATH="hoge/fuga/....."          #消さないこと                                                                                                                            
~                                      #【任意】分かりやすいように1行開けてます。                                                                                                 
export HOGE_USER_NAME="hogehoge"       #HOGE_USER_NAMEという変数にhogehogeを代入                                                                                                                               
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
-- INSERT --

4, エスケープキーを押します。

エスケープキーを押すと、画面の下部が以下のようになります。

export PATH="hoge/fuga/....."                                                                                                                                      
~                                                                                                                                       
export HOGE_USER_NAME="hogehoge"                                                                                                                                    
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~      #特に何もなくなる                                                                                                                                 

5, :wqを入力し、エンターを押します。

保存後は勝手にterminalに戻ります。

export PATH="hoge/fuga/....."                                                                                                                                      
~                                                                                                                                       
export HOGE_USER_NAME="hogehoge"                                                                                                                                    
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
~                                                                                                                                       
:wq       #入力すると、ここに表示されます。                                                                                                                              

6, source ~/.zshrcを入力し、エンターを押します。

これにより、zshrcファイルを再度読み込みます

source ~/.zshrc

7, envを入力し、エンターを押します。

設定した環境変数が表示されたら完了です!

(一部省略)
HOGE_USER_NAME=hogehoge

4,ポイント

1, vimは操作が特殊

vimはterminalと操作の仕方が異なります。
無理やりterminalを終了して、e325エラーが発生してあたふた。。なんてことも。
(実際、これでめっちゃ焦りました)

簡単ですが、vimの操作方法を以下に記載してみました。
実際はもっとあるそうですが、
最低限これらを覚えたら、変な動作→e325エラー発生を抑えられたので
記載します。

sample
i #文字を入力するモード。エスケープキーを使うと元のモードに戻ります。
: #コマンド入力モード
:w #保存
:wq #保存して終了
:q #終了
:q! #強制終了

2, .zshrcファイルに環境変数を書く

.zshrcに書くことで、環境変数が永続的に使えるようになります。

これはzshrcファイルの特徴である、
terminalを立ち上げるたびに読み込むためです。

なので、環境変数を設定した後にsource ~/.zshrcを入力することで
terminalを立ち上げる動作を再現しています。

そうすることで、定義した環境変数を読み込み、使えるようになります。


5, 参考にさせていただいた記事


Windowsはクソ!という方に贈るWindowsターミナルの設定

$
0
0

ターミナル(黒画面)は好きですか?

賛否両論あるかと思いますが、
ターミナル(Windowsのコマンドプロンプト)、嫌いな人多いと思います。

なんでもかんでもGUIで済まそうとするおじさんもいるのも事実。
まあマウス使うからわかりやすいんですよね。

今回はその逆で、Windowsでターミナルを活用する方法を語っていきたいと思います。

Linux/Unixを触ったときに思うこと

みなさんは、Dockerを使うのにも関わらずWindowsを強要されてつらい思いをしたことありませんか?

MacやSorarisをはじめとするUnixも、Linuxも、どちらもターミナルの機能が強すぎてGUIがおまけみたいなところがあります。

それに、黒画面のターミナルがとてつもなくカッコよく映ります。
それが使いこなせるんだからもうイキっちゃいよね。

「もうぜんぶコマンドでよくね?」

みたいに思うはずです。

え?そんなことない?

Mac -> Windowsでつらいこと

なんでもかんでもGUI。
まあ便利ではあるんだけどね。

というかHomebrewが便利すぎる。
Ubuntuはapt、RedHat系はyum(今はdnf)もあるし。

コマンドたたけばいろんなものがそろうのに対し、Windowsはブラウザを開きダウンロードしてインストールする。

まあまあ面倒である。

Windowsは総じてクソ?

Windowsは初心者向けなんです!
同じ知識で初心者から上級者まで使うことができる最強のOSなんです。

というわけで、今回はWindowsのターミナルを活用するための方法を紹介していきます。

ターミナルを考えなおす

MacやLinux使いがコマンドプロンプトを使うと、
まずls -> dirのようにコマンドが違うところでつまずきます。

まずはコマンドプロンプトを捨てましょう。
コマンドプロンプトは下位互換のために残された、いわばIEのような存在です。

まずは、Win+Rでcmdと打つのをやめるところから始めましょう。

ここで実施するのは2つです。

Windows Terminalの導入

Microsoftの新しい端末アプリであるWindows Terminalを導入します。

Windows Terminal - Microsoft Store

以降は、Win + R から「wt」と打ち込んでWindows Terminalを使うように心がけましょう。

PowerShellの最新を使う

コマンドプロンプトではなくPowerShellを使いましょう。
PowerShellを使うだけでもQoLが爆上がりします。
特に、新しいバージョンを使うことでさらによくなります。
(なぜかInsiderPreviewだと標準のPowerShellが文字化けしたので入れなおした)

PowerShell 7.x

なお、PowerShell7は後述の方法でもインストールできるので、後回しでもOKです。

これだけでも見た目がだいぶ変わります。これでマカーにダサいとは言われない。はず。
lsもcdもclearも使えます。これだけで価値あるんじゃね?
image.png

Windows TerminalはWSLのターミナルもまとめて表示できますので、複数のWSLを使っていたりする場合はさらに便利になります。
image.png

Homebrewの代替を探す

マカーにマウントとられる最大のポイント、それがHomebrew。

Windowsにはそんなものない?

???「あるよ」

Windows Package Manager(通称winget)というものが公開されました。

winget-cli

これで完璧である。

Windows Terminalから、以下の感じで実行できれば準備完了。

> winget -v
v0.2.2521 プレビュー

wingetの使い方

検索

> winget search <パッケージ名>

例えば、.NET Coreは以下のように検索できる。
4系は多分ライセンスの問題もあるのか入っていない模様

> winget search dotnet
名前                        ID                                バージョン                 一致
-------------------------------------------------------------------------------------------------
.NET Core                 Microsoft.dotnet                  3.1.402               Moniker: dotnet
.NET Core Preview         Microsoft.dotnetPreview           5.0.100-rc.2.20479.15 Command: dotnet
reko                      uxmal.reko                        0.9.1.0               Tag: dotnet
Unity Hub                 UnityTechnologies.UnityHub        2.4.0.0               Tag: dotnet
Stride                    Stride.Stride                     5.0.1                 Tag: dotnet
Smallbasic                Microsoft.SmallBasic              1.2                   Tag: dotnet
Ironpython 2              Microsoft.Ironpython2             2.7.10                Tag: dotnet
.NET Core Runtime         Microsoft.dotnetRuntime           3.1.8.29220           Tag: dotnet
.Net Framework            Microsoft.dotNetFramework         4.8                   Tag: dotnet
Jchem .NET api            ChemAxon.jchemdotnetapi           20.19.0               Tag: dotnet
Powershell Preview (msix) microsoft.powershell-preview-msix 7.0.2                 Tag: dotnet

名前かIDを入力することで、そのパッケージをコマンドからインストールできる。

.NET Coreは名前にスペースが入っているので、IDを使う方法しか見つからなかった。

> winget install microsoft.dotnet

なお、wingetがあれば PowerShell7も入れられるようなので、以下のコマンドでも幸せになれたみたい。

> winget install microsoft.powershell-preview-msix

入れておきたいアプリたち

必要に応じて足していきますが、ひとまず思いついたものを列挙。

> winget install git
> winget install Microsoft.VisualStudioCode
> winget install slack
> winget install 7zip
> winget install docker

インストール済みのパッケージ一覧と削除

なんと、内部的にはインストーラのダウンロードと実行をしているようなので、
アンインストールは既存の方法でしかできない模様。
そこばかりは我慢するしかないかな・・・

Vimの導入

次に大事なのがvimです。
これがないとターミナルとは言えないですよね。

先駆者がいらっしゃったので、それに倣って進めていきます。

Emacs使いの皆様向けの手順はあるようですが、ガチ勢はおとなしくWSL使ったほうがよげですね。

インストール

wingetでさくっとインストールします。

> winget install vim

しかし、このままではvimはつかえません。(パス通ってないので)

> vim
vim : 用語 'vim' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを
確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ vim
+ ~~~
    + CategoryInfo          : ObjectNotFound: (vim:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

ps1の実行権限変更

PowerShellファイルの実行は標準で無効化されているので、
さくっと変更をしてしまいます。
(InsiderPreviewとかははじめから使えるぽい)

> set-executionpolicy remotesigned
> get-executionpolicy
RemoteSigned

RemoteSignedと出ていればOK。

プロファイルを確認

> $profile
C:\Users\XXXXXXXX\OneDrive\ドキュメント\PowerShell\Microsoft.PowerShell_profile.ps1

なぜOneDriveなのかは不明だが(たぶん連携したせい)、
ひとまずそこにあるそうなのでファイルをいじる。

エイリアスを設定することで、powershellからvimが使えるようになります。

Microsoft.PowerShell_profile.ps1
set-alias vi 'C:\Program Files\Vim\vim82\vim.exe'
set-alias vim 'C:\Program Files\Vim\vim82\vim.exe'

さいごに、書き込んだprofileを反映します。(sourceコマンドと同等)

> . $profile

設定が終わったら、以下のコマンドを打ちこんで動くことを確認しましょう。

> vim $profile

うまくいきました。あとは:q!で終了しましょう。
image.png

su / sudo

windowsでターミナルを使う際に、いつも面倒なのが管理者権限で実行。

あそこまでとは言わないけど、簡単に管理者で実行したい。

というわけで、この神記事を参考に作業開始。

powershell7 previewはエイリアスがpwshなので、
それに合わせた版を使用します。

> cd
> git clone -b feature/wt-pwsh7 https://github.com/hikaruright/sudo.git

その後、以下を環境変数に追加。

(コマンドでやると変なことになったので、PowerShellがPreviewのうちは、GUIで操作したほうがよさそう)

%USERPROFILE%\sudo

この状態でWindows Terminalを起動し、suと打つと管理者権限でwindows terminal(+PowerShell7)が新しく起動します。
sudoを使えばGUIを管理者権限下で実行することも可能。これで怖いものはない。

さいごに

まだまだ発展途上とはいえ、Windowsのターミナルでもやれることは増えてきています。

Windowsが嫌いな人も、Docker使うときにコマンドプロンプトを使う程度の方も、
Windowsでターミナルを使いこなしてドヤッてはいかがでしょうか。

Xcode12.0.1でXVim2を利用する

$
0
0

概要

Xcodeをvimのキーバインドで利用するため、XVim2をインストールする。
https://github.com/XVimProject/XVim2

手順

1. 証明書の作成

READMEのINSTALL.1にあるリンク「 You can read the instructions for how to do this and...」の通り実行する。
https://github.com/XVimProject/XVim2/blob/master/SIGNING_Xcode.md

キーチェーンアクセスを開き、メニューバーから「証明書アシスタント > 証明書を作成」を選択する。
スクリーンショット 2020-10-24 10.07.21.png
以下の通り入力する。
スクリーンショット 2020-10-24 10.09.33.png
コマンドラインから署名を実行する。(時間がかかるので放置。その後、ログインパスワードの入力を何度か求められる。)

sudo codesign -f-s XcodeSigner /Applications/Xcode.app

2. Xvim2リポジトリのclone

git clone https://github.com/XVimProject/XVim2.git

3. ブランチ切り替え

Xcodeのバージョンに合わせたブランチに切り替える。
ブランチのリストは以下の通り。
https://github.com/XVimProject/XVim2#branches-and-releases
※ 2020.10.24時点ではmasterブランチがXcode12に対応しているので、Xcode12を利用しているのであれば切り替える必要は無い。

ここで、以下の結果が空の場合はREADMEの手順通り設定を行う。「/Applications/Xcode.app/Contents/Developer」というようにパスが表示されれば問題無い。

xcode-select -p

4. make実行

cloneしてきたXVim2のディレクトリ内でmakeを実行する。

cd XVim2
make

5. Xcode起動

Xcodeを起動すると、以下のダイアログが表示されるので、「Load Bundle」を選択する。
スクリーンショット 2020-10-24 10.42.53.png

※ 間違えて「Skip Bundle」を選択した場合は、Xcodeを閉じた上で以下のコマンドを実行する。(Xcode 12.0.1の場合のコマンド。最後のバージョンの指定はXcodeに合わせる。)

defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-12.0.1

6. Xcode再起動

Xcodeを一度閉じて、再起動する。
成功すると、以下のようにカーソルがブロック型となり、Vimのキーバインドで操作が可能となる。
スクリーンショット 2020-10-24 10.50.51.png

【WIP】自分用vim設定

$
0
0

この記事の対象者(自分)

  • 開発をよりスピーディーに効率化したい
    →vimを使うぞ!と決めた人

  • vimrcで色々設定できるけどどうやらプラグインがあるっつポイぞ!NeoBundleかdein.vimが良さげ!

  • どっち選べばいいかわからないor導入方法わからん!←対象者

結論

dein 使おう!

理由

早いから!

vim --startuptime /tmp/time.log +q

導入方法

dein.vimを使ってみる

vim の fortran 向け設定 (LSPによる自動補完)

$
0
0

はじめに

「この記事は、vim8.1-2269(Neovimではない)でfortranを編集している著者が、vimにLSPを導入して快適なfortran編集環境(ついでにCやRなども)を得た」という備忘録です。

調査&導入のきっかけ

2020年中頃になって、LSP(Language Server Protocol)なるものが良く話題になっていることに気付きました。LSPに気付いたきっかけは、Nvim-RのプラグインをUpdateした時、helpファイルで紹介されている補完のプラグイン候補が asyncomplete-omniになっていたことです。ちなみに、VSCodeでfortran向けの設定をする記事にもfortran-language-serverの話がありましたが、vimではないという事から、あまり意識していませんでした。asyncompleteを調べると、vim-lspや、vim-lsp-settingsなるものがあり、これらを使えばfortran環境でも簡単にLSPを導入できるのではないかと思いはじめました。

LSPによるfortran環境の導入方法

以下、実行環境はUbuntu20.04とします。

fortran-language-serverの導入

ターミナルで、以下を実行します。(vim-lsp-settingsを導入した後に ":LspInstallServer" で自動的にfortran language serverがインストールされるかと思いましたが、私の環境では別途pip3で明示的にインストール必要がありました。)

pip3 install fortran-language-server

vimのプラグインをインストール

私はVim-Plugでプラグインを管理しているので、下記を.vimrcに追記しました。ここまでは、補完したい言語に依存せず共通のようです。

all plug#begin('~/.vim/plugged')
  Plug 'prabirshrestha/asyncomplete.vim'
  Plug 'prabirshrestha/asyncomplete-lsp.vim'
  Plug 'prabirshrestha/vim-lsp'
  Plug 'mattn/vim-lsp-settings'
  Plug 'mattn/vim-lsp-icons'call plug#end()etg:lsp_diagnostics_enabled=1"下記は好みによって設定変更することletg:lsp_diagnostics_echo_cursor=1letg:lsp_text_edit_enabled=1letg:asyncomplete_auto_popup=1letg:asyncomplete_popup_delay=200

vimユーザには釈迦に説法かと思いますが、.bashrcに上記を追記した後は
:PlugInstallします。

fortran環境のセッティング

fortranのソースコードを開き、

:LspInstallServer

を入力すると、vim側のfortran環境セットアップは終わりです。

スクリーンショット

組み込みモジュール名の自動補完。
Screenshot from 2020-10-25 20-09-12.png

組み込み型の自動補完。
Screenshot from 2020-10-25 20-09-49.png

自作サブルーチン名の補完。
Screenshot from 2020-10-25 20-10-48.png

自作ライブラリ等を利用する場合の補完について

編集しているソースと同じディレクトリに、 .fortlsというファイルを作成して配置します。(プロジェクトのルートディレクトリでも良いのかもしれませんが、試していません。)

.fortls
{
  "source_dirs": ["/usr/local/src/my_packages/hoge/",
    "/usr/local/src/other/rksuite/"],
  "include_dirs": ["/usr/local/include/"]
}

上記のように、読み込みたいソースコードのディレクトリや、インクルードディレクトリを指定していれば、それらのソースから補完候補を出すことも可能です。
Screenshot from 2020-10-25 20-38-32.png
上の画像では/usr/local/src/other/rksuiteに置いているrksuite_90モジュールに定義されている型が補完候補として自動ポップアップされています。

アウトライン表示

LSPのコマンド:LSPDocymentSymbolを実行すると、下図の左下側の画面が出て、プログラムやサブルーチン名が表示されます。
なお、昔からvim界隈にある:Tagbarでは下図右側のような表示になります。私はあまり表示をカスタマイズしていませんので、もしかすると、どちらももっと異なる表示にできるのかもしれません。
Screenshot from 2020-10-25 20-59-47.png

おわりに

これまで何度も「統合開発環境」なるものに挑戦しては挫折したVim利用者が、今後数年間は安心してvimで生活できることを確信したので、備忘録として残しました。
:Termdebugとすれば、vim内でfortran(に限らずcなども可)のDebugも実行できるので、脳と指がvimにどっぷり浸かっている筆者は、これでしばらくIDEに浮気せずに済みそうです。

VIM操作モード:キーボードの設定

$
0
0

1.はじめに

Obsidianを使い始め、VIM操作モードを有効にして使っています。
今までもコーディングではvimを使っていましたが、Windows環境では積極的にvi環境にしようと思っていませんでした。

今回、Obsidianを使い始め、この問題に改めて直面し考えた結果、「日本語入力への切り替えと操作が競合する」と気付きました。
日本語入力を「Ctrl+Space」で切り替えられるようにして、CapsをCtrlで上書きしました。まだ慣れていなくて、Shiftと間違えることがありますが、変えて正解でした。

2.参考にしたページ

  1. https://www.google.co.jp/ime/(インストール済み)
  2. https://www.atmarkit.co.jp/ait/articles/1805/28/news022.html
  3. https://loumo.jp/archives/25374

3.Ctrl+Spaceで日本語入力に切り替える

Google日本語入力インストール済みからの手順
  1. タスクバーの「」もしくは「A」を右クリック
  2. プロパティー」をクリック
  3. 一般タブ → キー設定/キー設定の選択
  4. MS-IMEを選択して編集をクリック ※MS-IMEは好み
  5. 4箇所にあるHankaku/Zenkakuを全てCtrl+Spaceに変更
  6. OKで変更を確定。
  7. 日本語入力を利用するソフトを再起動する。

4.CapsをCtrlで上書きする

  1. Ctrl2Capsをダウンロード、解凍する。
  2. コマンドプロンプトを管理者権限で立ち上げる。
  3. ctrl2cap /installを実行。
  4. Windows10を再起動する。

以上

VIM操作を快適にするキーバインド

$
0
0

1.はじめに

Obsidianを使い始め、VIM操作モードを有効にして使っています。
今までもコーディングではvimを使っていましたが、Windows環境では積極的にvi環境にしようと思っていませんでした。

今回、Obsidianを使い始め、この問題に改めて直面し考えた結果、「日本語入力への切り替えと操作が競合する」と気付きました。
日本語入力を「Ctrl+Space」で切り替えられるようにして、CapsをCtrlで上書きしました。まだ慣れていなくて、Shiftと間違えることがありますが、変えて正解でした。

2.補足

きっかけはObsidianですが、Windows10上でVIM操作をするソフトを使っている方はお薦めします。gVimだけでなく、VSCodeも対応していたと思います。

3.参考にしたページ

  1. https://www.google.co.jp/ime/(インストール済み)
  2. https://www.atmarkit.co.jp/ait/articles/1805/28/news022.html
  3. https://loumo.jp/archives/25374

4.Ctrl+Spaceで日本語入力に切り替える

Google日本語入力インストール済みからの手順
  1. タスクバーの「」もしくは「A」を右クリック
  2. プロパティー」をクリック
  3. 一般タブ → キー設定/キー設定の選択
  4. MS-IMEを選択して編集をクリック ※MS-IMEは好み
  5. 4箇所にあるHankaku/Zenkakuを全てCtrl+Spaceに変更
  6. OKで変更を確定。
  7. 日本語入力を利用するソフトを再起動する。

5.CapsをCtrlで上書きする

  1. Ctrl2Capsをダウンロード、解凍する。
  2. コマンドプロンプトを管理者権限で立ち上げる。
  3. ctrl2cap /installを実行。
  4. Windows10を再起動する。

6.雑感

  • Ctrl+Spaceは快適。
  • Ctrl+AやCtrl+Qなど、小指が担当しているキーを使う時にミスる。
  • Ctrl,Shiftの打ち間違いが起こる。
  • 全体的には好感触。

以上

Vim patchダイジェスト [2020/09]

$
0
0

Vimのリリースされたpatchの説明です。
(8.2.15528.2.1777)
新機能、大幅な仕様変更には、:four_leaf_clover:が付いています。
Vim9 scriptの実装/仕様変更/不具合修正も頻繁におこなわれています。

  • 8.2.1776: filetype.vimを2回読み込んでいる件を修正しました。
  • 8.2.1771: :four_leaf_clover:synIDattr()の第2引数{what}にulを指定できるようにしました。
  • runtimeファイル更新: Todo更新。helpファイル更新。他。
  • 8.2.1744: :four_leaf_clover:Vim9: :var:finalを追加し、:constの仕様を変更しました。:varはローカル変数を宣言するために必要です。:finalは変数のみを不変にするために使用され、値は変更できます。:constは変数と値の両方を不変にすることができます。(結果、Dart言語ライクになった?) (関連patch: 8.2.1685, 8.2.1746, 8.2.1756)
  • 8.2.1741: :four_leaf_clover:pathshorten()に第2引数{len}を追加しました。指定時はディレクトリ名の短さがその長さになります。
  • 8.2.1726: :four_leaf_clover:matchfuzzypos()を追加しました。matchfuzzy()を同じですが、一致した文字列と一致した文字の位置をリストで返します。(関連patch: 8.2.1665)
  • runtimeファイル更新: Todo更新。helpファイル更新。他。
  • 8.2.1703: :highlight cleardefault linkをリストアしていない件を修正しました。
  • 8.2.1665: :four_leaf_clover:matchfuzzy()を追加しました。{list}を{str}で曖昧一致した結果をリストで返します。(関連patch: 8.2.1726)
  • runtimeファイル更新: Todo更新。helpファイル更新。他。
  • 8.2.1594: :alien:GitHub: .github/CODEOWNERSファイルを追加して、メンテナにPull requestの通知がされるようにしました。(関連patch: 8.2.1605, 以降はruntimeファイル更新でメンテナンスされています)
  • 8.2.1588: :four_leaf_clover:prompt_getprompt()を追加しました。バッファ{buf}の有効なプロンプトテキストを返します。
  • 8.2.1556: :four_leaf_clover:'cursorline'のハイライトが常に目印(sign)のハイライトを無効にしている件を改善しました。目印(sign)のpriorityの値が100以上の場合は目印(sign)のハイライトを優先するようにしました。

凡例

表記意味
:four_leaf_clover:新機能、大幅な仕様変更
:alien:Vim開発者向けの追加、変更
'hoge'オプション (:h options参照)
:hogeExコマンド (:h :index参照)
hoge()組み込み関数 (:h functions参照)
v:hogeVim定義済変数 (:h v:参照)
+hogefeature (:h +feature-list参照)

方針

こちらを参照。


dein.tomlをdein_lazy.tomlに分ける

$
0
0

dein.tomldein_lazy.tomlに分けた

dein.tomlとは

dein.vimで導入するプラグインをtoml形式でまとめたもの

導入するプラグインをまとめているだけなら1つのファイルでいいじゃないかとも思うが、vimの起動時にtomlの読み込みを行うため、記述量が増えると起動が遅くなる。
そこで、起動時に必ずしも必要ではないプラグインを遅延読み込みさせることで起動をできるだけ早くしようというのがdein_lazy.tomlである。(vimrcで読み込みを行うときにファイル名指定をしているので必ずしもdein.tomldein_lazy.tomlというファイル名である必要はないみたい)

実際に分けてみる

分ける前のdein.tomlは以下のようになっていた

dein.toml(before)
[[plugins]]hook_add='''
    augroup colorcshemeSetting
        autocmd!
        autocmd VimEnter * ++nested colorscheme night-owl
        autocmd Colorscheme * highlight Normal ctermbg=none
        autocmd Colorscheme * highlight NonText ctermbg=none
        autocmd Colorscheme * highlight LineNr ctermbg=none
        autocmd Colorscheme * highlight Folded ctermbg=none
        autocmd Colorscheme * highlight EndOfBuffer ctermbg=none 
    augroup END
'''repo='haishanh/night-owl.vim'[[plugins]]repo='vim-jp/vimdoc-ja'[[plugins]]repo='cocopon/vaffle.vim'[[plugins]]repo='prabirshrestha/vim-lsp'[[plugins]]repo='mattn/vim-lsp-settings'[[plugins]]repo='mattn/vim-lsp-icons'[[plugins]]repo='prabirshrestha/asyncomplete.vim'[[plugins]]repo='prabirshrestha/asyncomplete-lsp.vim'[[plugins]]repo="markonm/traces.vim"[[plugins]]repo='cespare/vim-toml'[[plugins]]hook_add='''
let g:rufo_auto_formatting = 1
'''repo="ruby-formatter/rufo-vim"[[plugins]]repo="tpope/vim-endwise"[[plugins]]repo="mindriot101/vim-yapf"[[plugins]]hook_add='''
let g:shfmt_extra_args = '-i 4 -ci -bn -s'
let g:shfmt_fmt_on_save = 1
'''repo="z0mbix/vim-shfmt"

これのうち言語設定関連のものをdein_lazy.tomlに分離させた

dein_lazy.toml
[[plugins]]on_ft='toml'repo='cespare/vim-toml'[[plugins]]hook_add='''
let g:rufo_auto_formatting = 1
'''on_ft="ruby"repo="ruby-formatter/rufo-vim"[[plugins]]repo="tpope/vim-endwise"on_ft="ruby"[[plugins]]on_ft="python"repo="mindriot101/vim-yapf"[[plugins]]hook_add='''
let g:shfmt_extra_args = '-i 4 -ci -bn -s'
let g:shfmt_fmt_on_save = 1
'''on_ft=["sh","bash"]repo="z0mbix/vim-shfmt"

(tomlの各キーの順番はフォーマッタでソートされているようでrepoが後ろに来ている)

おそらく言語設定だけではなく他のプラグインも移せるものがあるだろうが、今回はこの程度にしておく。

起動時間はそもそもそんなにプラグインを入れていたわけではないので大した変化はなかった。しかし、チリツモで今後重くなることを防いだと考えれば無意味ではないと思う。

[VS Code] VS CodeにVimをインストールしたら赤いハイライトに悩まされた

$
0
0

Problem

VS Codeの拡張機能"Vim"をインストールすると、原因不明の赤いハイライトに襲われる
image.png

原因

同じく拡張機能Trailing Spacesと干渉している様子

Trailing Spaces - Visual Studio Marketplace
行末のspaceをハイライトして知らせてくれます
保存時に自動的にspaceを取り除くことも可能、便利!

解決

以下を参考に編集中の行をハイライトしないように設定します

Highlight Current Line
Default: true

Highlighting of trailing spaces in the currently edited line can be annoying: each time you are about to start a new word, the space you type is matched as a trailing spaces. Currently edited line can thus be ignored:

{ "trailing-spaces.highlightCurrentLine": false }

Trailing Spaces - Visual Studio Marketplace

settings.jsonに以下の行を追加します

"trailing-spaces.highlightCurrentLine":false,

ちなみに、保存時の自動space削除オプションは

"trailing-spaces.trimOnSave":true,

環境

  • macOS catralina
  • VSCode v1.50
  • Vim v1.17.1
  • Trailing Spaces v0.3.1

VIM操作を快適にするキーバインド

$
0
0

1.はじめに

Obsidianを使い始め、VIM操作モードを有効にして使っています。
今までもコーディングではvimを使っていましたが、Windows環境では積極的にvi環境にしようと思っていませんでした。

今回、Obsidianを使い始め、この問題に改めて直面し考えた結果、「日本語入力への切り替えと操作が競合する」と気付きました。
日本語入力を「Ctrl+Space」で切り替えられるようにして、CapsをCtrlで上書きしました。まだ慣れていなくて、Shiftと間違えることがありますが、変えて正解でした。

2.補足

きっかけはObsidianですが、Windows10上でVIM操作をするソフトを使っている方はお薦めします。gVimだけでなく、VSCodeも対応していたと思います。

3.参考にしたページ

  1. https://www.google.co.jp/ime/(インストール済み)
  2. https://www.atmarkit.co.jp/ait/articles/1805/28/news022.html
  3. https://loumo.jp/archives/25374

4.Ctrl+Spaceで日本語入力に切り替える

Google日本語入力インストール済みからの手順
  1. タスクバーの「」もしくは「A」を右クリック
  2. プロパティー」をクリック
  3. 一般タブ → キー設定/キー設定の選択
  4. MS-IMEを選択して編集をクリック ※MS-IMEは好み
  5. 4箇所にあるHankaku/Zenkakuを全てCtrl+Spaceに変更
  6. OKで変更を確定。
  7. 日本語入力を利用するソフトを再起動する。

5.CapsをCtrlで上書きする

  1. Ctrl2Capsをダウンロード、解凍する。
  2. コマンドプロンプトを管理者権限で立ち上げる。
  3. ctrl2cap /installを実行。
  4. Windows10を再起動する。

6.雑感

  • Ctrl+Spaceは快適。
  • Ctrl+AやCtrl+Qなど、小指が担当しているキーを使う時にミスる。
  • Ctrl,Shiftの打ち間違いが起こる。
  • 全体的には好感触。

以上

my vimrc

$
0
0

はじめに

42tokyoのexamでは、まっさらなvimで受けないといけないので、毎回vimrcを書く必要がある。
一番ミニマムなお気に入りvimrcの設定です!

syntax enable

構文に色をつけてくれるので必須

syntax enable

set nu

行数表示。行数がわかると [行数]+Gでその行に飛べたりするので便利。
でもこのせいでコピペする時に行数までコピーしちゃう時がある。
その時は:set nonuで一時的に行数を消せばOK!!!

set nu

set paste

貼り付けたい時、デフォルトの設定だと、インデントが変になってしまうのでこれは必須!

set paste

set autoindent

デフォルトの設置だと、カーソルがいい感じになってくれないので、インデントを合わせてくれるこれも必須!

intmain(){inta;intb;if(a==b)|<ーここにカーソルがきてしまう}
set autoindent

set tabstop

タブがスペース何個分かの設定。デフォルトだとなんと8でめちゃ大きいので、半分の4にしてます。
vscodeも4にしてます。

set tabstop=4

examで必要なのは以上です!

補完機能とかは個人的には必要ないです。

ale+dein.vimに関して調べたこと

$
0
0

この記事は?

aleとdein.vimを使っていく中で困ったことや調べた事をまとめる。
規模が大きくなってきたらaleとdein.vimで分けるかも。

ale

正しいリポジトリは?

以前は w0rp/aleだったが、 dense-analysis/aleに変わっていた。
https://github.com/dense-analysis/ale

lint関連

lintがなぜか動かない時

どこかでエラーが出てる可能性がある。
vimで対象ファイル開いている時に、 :ALEInfoと打つと、チェック実行時ログが出てる。
成功時にはチェック結果が、失敗時にはエラーログが出てるので、これをヒントに調査する。

docker(hadolint)

エラーメッセージが結構わかりにくいのでここで詳細調べる
https://github.com/hadolint/hadolint/blob/master/README.md#rules

dein.vim

comming soon...

Viewing all 5720 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>