سؤال

أفعل الكثير من الثعبان سريع محاكاة الأشياء وأنا باستمرار توفير (:ث) ثم تشغيل (:!!).أنا أتسائل هل هناك طريقة للجمع بين هذه الإجراءات.ربما "حفظ تشغيل" الأمر.

شكرا على مساعدتك.

هل كانت مفيدة؟

المحلول

الخيار 1:

كتابة وظيفة مشابهة لهذه ووضعه في إعدادات بدء التشغيل:

function myex()
   execute ':w'
   execute ':!!'
endfunction

يمكنك حتى تعيين مفتاح التحرير والسرد إلى ذلك-- من مستندات.


الخيار 2 (أفضل):

نظرة على وثائق الخارطه المفاتيح - كنت قد تكون قادرة على تحقيق ذلك من خلال مفتاح بسيط remap.الأعمال التالية ، ولكن "filename.py" ضمنية.ربما يمكنك حفر في معرفة كيفية استبدال ذلك مع التيار الملف ؟

:map <F2> <Esc>:w<CR>:!filename.py<CR>

بعد تعيين ذلك ، يمكنك فقط اضغط على F2 في وضع الأوامر.

imap ، vmap ، الخ...هي تعيينات في أوضاع مختلفة.ما سبق ينطبق فقط على وضع الأوامر.التالية يجب أن تعمل في إدراج الوضعية أيضا:

:imap <F2> <Esc>:w<CR>:!filename.py<CR>a

القسم 40.1 من همة يدوي مفيد جدا.

نصائح أخرى

حسنا، وأبسط شكل من أشكال ما كنت تبحث عن الأمر الأنابيب. انها تسمح لك لتشغيل الأوامر cmdline متعددة على نفس الخط. في قضيتك، الأمرين هي الكتابة `w` وتنفيذ الملف الحالي`! ٪: p`. إذا كان لديك أمر معين تشغيل لك الملف الحالي، يصبح الأمر الثاني، على سبيل المثال `الثعبان٪: p`. لذلك، فإن أبسط الجواب على سؤالك يصبح:

:w | ! %:p
 ^ ^ ^
 | | |--Execute current file
 | |--Chain two commands
 |--Save current file

وآخر شيء واحد هو أن نلاحظ أن ليس كل الأوامر يمكن بالسلاسل. وفقا ل فيم مستندات أو بعض الأوامر تقبل أنبوب كحجة، وبالتالي كسر سلسلة ...

واستخدم autowrite الخيار:

:set autowrite
<اقتباس فقرة>   

وكتابة محتويات الملف، إذا كان قد تم تعديله، على كل: المقبل،: الترجيع،: آخر، أولا،: سابقة،: وقف، و: تعليق،: العلامة، على : ،: ماركة، CTRL-] وCTRL- ^ قيادة [...]

يبدو

والجمع بين القيادة للعمل من خلال شخصية |، لذلك ربما شيء من هذا القبيل التعرج :w|!your-command-here إلى تركيبة مفاتيح متميزة؟

وهنا تذهب:

و:nmap <F1> :w<cr>:!%<cr>

وحفظ وتشغيل (عليك أن تكون في وضع ن الرغم من ذلك - فقط إضافة حساب الضمان ولأنني واسطة)

وهناك احتمال آخر:

au BufWriteCmd *.py write | !!

وعلى الرغم من أن هذا سوف run في كل مرة تقوم بحفظ، والتي قد لا يكون ما تريد.

وهذا هو ما كنت وضعت في بلدي .vimrc وتعمل مثل السحر

nnoremap <leader>r :w<CR>:!!<CR>

وبطبيعة الحال تحتاج إلى تشغيل قذيفة القيادة الخاصة بك مرة واحدة قبل هذا لذلك يعرف ما الأمر لتنفيذه.

مثال:

:!node ./test.js

في همة، هل يمكن ببساطة إعادة توجيه أي مجموعة من العازلة الحالي إلى أمر خارجي (سواء كان باش، الثعبان، أو كنت تملك النصي الثعبان).

# redirect whole buffer to python
:%w !python

وافترض عازلة الحالي يحتوي على خطين على النحو التالي،

import numpy as np
print np.arange(12).reshape(3,4)

وبعد ذلك سوف :%w !python تشغيله، سواء كان ذلك حفظها أو لا. وطباعة شيء مثل أدناه على هاتفك المحطة،

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

وبطبيعة الحال، هل يمكن أن تجعل شيئا الثابتة، وعلى سبيل المثال، بعض خرائط مفاتيح.

nnoremap <F8> :.w !python<CR>
vnoremap <F8> :w !python<CR>

وأول السطر الحالي تشغيل واحد، الثانية تشغيل واحد اختيار البصرية، عبر مترجم الثعبان.

#!! be careful, in vim ':w!python' and ':.w !python' are very different, the
first write (create or overwrite) a file named 'python' with contents of
current buffer, the second redirect the selected cmdline range (here dot .,
which mean current line) to external command (here 'python').

ولمجموعة cmdline، انظر

:h cmdline-ranges

وليس أقل من واحد، والتي تتعلق بإصدار أوامر العادي، وليس cmdline واحد.

:h command-range

https://stackoverflow.com/a/19883963/3625404

وحصلت على ما يلي من ويكي نصائح همة:

command! -complete=file -nargs=+ shell call s:runshellcommand(<q-args>)
function! s:runshellcommand(cmdline)
  botright vnew
  setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
  call setline(1,a:cmdline)
  call setline(2,substitute(a:cmdline,'.','=','g'))
  execute 'silent $read !'.escape(a:cmdline,'%#')
  setlocal nomodifiable
  1
endfunction

ولكن تغيرت جديد لvnew على السطر الثالث، ثم لالثعبان لدي ما يلي

map <F9> :w:Shell python %<cr><c-w>

وضرب F9 يحفظ، ويدير، ومقالب الإخراج إلى منطقة عازلة الصفر الجديد تقسيم عموديا، لسهولة الانتزاع / إنقاذ الخ ... يضرب أيضا CW ذلك لدي سوى الضغط ح / ج لإغلاقه / العودة إلى بلدي التعليمات البرمجية.

وحاول جعلها داخل باش.

في حالة وجود ملف يسمى C t.c، وهذا أمر مريح جدا:

vi t.c &&  cc t.c -o t && ./t

وووالرموز (&&) ضمان رسالة خطأ واحد يكسر سلسلة الأوامر.

لبيثون هذا قد يكون أسهل:

vi t.py && python t.py

سيكون هذا العمل في إدراج الوضعية أيضا...

" F5 => Save & Run python3 "
nnoremap <F5> :w <CR> :!sh -c 'python3 %' <CR>
inoremap <F5> <Esc> :w <CR> :!sh -c 'python3 %' <CR>

أنا استخدامها في كل وقت لاختبار الأشياء التي هي مجرد وقتا طويلا في كتابة المترجم ^^

  1. والنظر في التحول إلى الخمول.F5 يفعل كل شيء.

  2. والنظر في التحول إلى كومودو.يمكنك تحديد الأوامر بحيث F5 يفعل كل شيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top