vimのプロジェクト機能を使っている。左がファイルのリストが並んで、右がそのファイルの内容が表示されている。左のファイルの一覧でカーソルの移動コマンドのj,kを使って
1. リターンで右の画面に内容を表示してまた、その後に左の画面に移動させる。
2. ①以外の方法としてはmap leaderの¥で\vで右の画面に表示させる。これは、左の画面に移動させる必要は無い。
上記の操作をスクリプトで実行させたい。然し、エラーになって実行が出来ない。
normalコマンドでkを打鍵して、その後に<return>を打鍵したい。これをvim scriptでどの様に書いたら良いのだろうか。下記はエラーになる。
exec "normal k<cr>"
exec "normal k<return>"
exec "normal k".<cr>
exec "normal k".<return>
また、ここではmap leaderが"\"になっているのでnormalコマンドでは、\vでも同様の事は出来るがこのleaderを使ってのexecのnormalコマンドのvim scriptの書き方が分からない。
宜しくお願いします。
No.3ベストアンサー
- 回答日時:
>\\を<leader>にしても\<leader>にしてもエラーには成りませんが左の
>ファイル一覧にder>が表示されて動きません。
<leader>はmapでしか使用できないようです。
exec "normal ... で<leader>を使用すると上記の結果になります。
こちらでも、text.vimの動作を確認しましたが、期待される動作してます。
vimのバージョンの違いかプラットフォームの違いでしょうか?
ちなみに、テストした環境はFedora 16です。
No.4
- 回答日時:
exec "normal" "k" . "\\" . "v"
有難う御座います。
下記のエラーメッセージが出ます。
引用符が有りません。エラー"v"
一応、初期の計画をしていた物は出来ていますので。
ここで締め切らせていただきます。
何かしっくりとは来ませんが。有難う御座いました。
No.2
- 回答日時:
私の環境では「exec "normal j\\v"」で期待された(j \vを入力したかのような)動作します。
ちなみに、vimのバージョンは7.3.515です。
有難う御座います。
vimのバージョンは、7.4.475です。
j\\vとかk\\vとかすると、functionの中でエラーになります。
なので、今は別の方法でtry catch文でスルーしています。
今分からないのはその部分だけです。多分、leaderの指定に問題が有るのではと思っているのですが。???
nmap <buffer> <silent> <right> :call Down()<cr>
nmap <buffer> <silent> <left> :call Up()<cr>
function! Up()
if bufname("%")== "project.txt"
exec "normal k\\v"
" try
" exec "normal k\<CR>"
" catch
" echo "Err"
" exec "normal :set ft=memo\<CR>"
" exec "normal :set tw=64\<CR>"
" exec "normal \<C-W>h"
" endtry
endif
endfunction
function! Down()
if bufname("%")== "project.txt"
exec "normal j\\v"
"try
" exec "normal j\<CR>"
"catch
" echo "Err"
" exec "normal :set ft=memo\<CR>"
" exec "normal :set tw=64\<CR>"
" exec "normal \<C-W>h"
"endtry
endif
endfunction
有難う御座います。
map <leader>K :normal j<cr>
\Kでjを打ったのと同じ。
上記の部分は意味は分かりませんが。全く違います。
vimでコマンドモードで:Project project.txtでProjectモードにしま
す。この時に左はファイルの一覧リストが右側には、その内容が表示さ
れます。
この時に左側でj\vは、下に移動してそのファイルの内容が表示されま
す。同様にk\vは、上に移動してそのファイルの内容を表示します。こ
の時のカーソルは左のファイル一覧の位置にあります。
現在は、\vの動作が出来ませんのでその代わりとして、<Return>して
カーソルを右に移動して内容を表示して。その後に苦肉の策として
<C-W>hとしてカーソルを左に移動しています。
本来は\vだけで良いのですが。\vの動作をvim scriptでコーディング出
来ません。異なる動作をします。その為に、現在は下記で代用していま
す。
k\vを下記でシュミレート
exec "normal k\<CR>"
exec "normal \<C-W>h"
j\vを下記でシュミレート
exec "normal j\<CR>"
exec "normal \<C-W>h"
どうしてもこの\をexec "normal ..."の中にいれる事が出来ない。これ
が今問題です。
最初はシュミレートの方法でも分からなかったと言う事で二つの質問を
出しましたが。シュミレートの方法は分かりましたので。残りの一つの
map leaderのnormal コマンドの記述のみが分からない状況です。唯、
運用しては、今は問題無く動いているので支障は無いのですが。
将来的にどうしてもこの機能が無いと使えなくなった場合を考えればこ
の問題は今のうちに解決をしたいと思って投稿しました。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vlan internal allocation poli...
-
teratarmでコマンド入力すると...
-
YAHAMA RTXシリーズのコマンド...
-
ftpコマンドのハッシュについて
-
ファイルを閉じるコマンドを教...
-
WindowsからSSHでサーバーにあ...
-
Ciscoルーター 対向機器のIPア...
-
WindowsUpdate KB2823324
-
バッチファイルの変数引継ぎに...
-
バッチファイルでファイル移動...
-
Solarisでのgrepについて
-
CPコマンドでファイルがコピー...
-
マイドキュメントのフォルダの...
-
沢山のフォルダにあるファイル...
-
エクセルでファイルの最終更新...
-
PCファイルの完全な削除方法
-
onedriveで同期解除をしたら、...
-
VB6.0でエクセル保存する時の保...
-
Safariのブックマークの消し方
-
TXTファイルを上書き保存する前...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vlan internal allocation poli...
-
YAHAMA RTXシリーズのコマンド...
-
teratarmでコマンド入力すると...
-
WindowsからSSHでサーバーにあ...
-
Ciscoルーター 対向機器のIPア...
-
バッチファイルでファイル移動...
-
expectでコマンド実行結果を変...
-
nslookupを5分おきに実行するバ...
-
CPコマンドでファイルがコピー...
-
IBMメインフレームのFTP 文字コ...
-
NETBIOSドメイン名の変更について
-
linuxのmailコマンドの文字化け...
-
Solarisでのgrepについて
-
一定時間経過させるコマンドは?
-
ファイルを閉じるコマンドを教...
-
バッチファイルの変数引継ぎに...
-
マイクラでコマンド使いたいの...
-
HP-UXのlsコマンドで日時書式を...
-
psコマンドで[]付きのプロセス...
-
Windows UPDateのサイトのIPア...
おすすめ情報
質問は二つあってその内の一つのmap leaderを使わないnormalコマンドの書き方に付いては分かりました。これに付いては、<cr>とか<return>では無くて\<CR>とすれば良いです。但し、後一つのmap leaderを使ってのnormalコマンドのvim scriptの記述が分かりません。
宜しく、お願いします。
ソースは下記です。ftpluginのtext.vimです。
exec "normal k\\v"
exec "normal j\\v"
上記はエラーになります。現在はこの部分をコメントにしています。そ
れで、今コメントしている所をコメントアウトして動かしています。
\\を<leader>にしても\<leader>にしてもエラーには成りませんが左の
ファイル一覧にder>が表示されて動きません。
何が問題なのか分かりません。
" Vim filetype plugin
" Language: Text
" Maintainer: David Barnett <daviebdawg+vim@gmail.com>
" Last Change: 2014 Jul 09
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
let b:undo_ftplugin = 'setlocal comments< commentstring<'
" We intentionally don't set formatoptions-=t since text should wrap as text.
" Pseudo comment leaders to indent bulleted lists.
etlocal comments=fb:-,fb:*
setlocal commentstring=
nmap <buffer> <silent> <right> :call Down()<cr>
nmap <buffer> <silent> <left> :call Up()<cr>
function! Up()
if bufname("%")== "project.txt"
exec "normal k\\v"
" try
" exec "normal k\<CR>"
" catch
" echo "Err"
" exec "normal :set ft=memo\<CR>"
" exec "normal :set tw=64\<CR>"
" exec "normal \<C-W>h"
" endtry
endif
endfunction
function! Down()
if bufname("%")== "project.txt"
exec "normal j\\v"
" try
" exec "normal j\<CR>"
" catch
" echo "Err"
" exec "normal :set ft=memo\<CR>"
" exec "normal :set tw=64\<CR>"
" exec "normal \<C-W>h"
" endtry
endif
endfunction